Name: series-workflow4xvcl Phase: Succeeded StartedAt: 2026-08-18 10:03:37 +0000 UTC FinishedAt: 2026-08-18 14:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[0] Phase: Succeeded StartedAt: 2026-08-18 10:03:37 +0000 UTC FinishedAt: 2026-08-18 10:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 10:03:37 +0000 UTC FinishedAt: 2026-08-18 10:59:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "21040c7f931502070dcc66bb0f1aeed07dec032b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_GRED", "NET_SCH_PLUG", "NET_SCH_FIFO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "21040c7f931502070dcc66bb0f1aeed07dec032b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_GRED", "NET_SCH_PLUG", "NET_SCH_FIFO" ], "series_id": "db72e364-2f00-4b68-9cb1-7aa5d87c4252" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bfifo_enqueue", "gred_enqueue", "plug_enqueue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0dSRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QTFVHJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRklGTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JmaWZvX2VucXVldWUmIzM0OywKICAgICYjMzQ7Z3JlZF9lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3BsdWdfZW5xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGFja2V0IGVucXVldWUgbG9naWMgb2Ygc2V2ZXJhbCBuZXR3b3JrIHNjaGVkdWxlcnMgKGZpZm8sIGdyZWQsIHBsdWcpLiBCeSBjYXN0aW5nIHRoZSBxdWV1ZSBiYWNrbG9nIHRvIGB1NjRgIGJlZm9yZSBhZGRpbmcgdGhlIHBhY2tldCBsZW5ndGgsIGl0IHByZXZlbnRzIGEgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBhbGxvdyB0aGUgYmFja2xvZyB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbGltaXQuIFRoaXMgaXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24gb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMgKHdoaWNoIEtBU0FOIHdvdWxkIGRldGVjdCkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBwYWNrZXQgZW5xdWV1ZSBmdW5jdGlvbnMgb2Ygc2V2ZXJhbCBxZGlzY3MgKEZJRk8sIEdSRUQsIFBMVUcpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjb25maWd1cmluZyB0aGUgcmVzcGVjdGl2ZSBxZGlzY3MgYW5kIHNlbmRpbmcgcGFja2V0cy4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjYzgyYmIyZGNmNDQ3NWVkMTc2YzRhZmFlYWI2N2EwZTg1OTNlZTRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTA6NTg6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9maWZvLmMgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuaW5kZXggZTZiZmQzOWZmMzM5Ni4uMWI2Mzg4ZDUwOTY3ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZmlmby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuQEAgLTE5LDcgJiM0MzsxOSw3IEBAXG4gc3RhdGljIGludCBiZmlmb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4ge1xuLVx0aWYgKGxpa2VseShzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz1cbiYjNDM7XHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9XG4gXHRcdCAgIFJFQURfT05DRShzY2gtXHUwMDNlbGltaXQpKSlcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ncmVkLmMgYi9uZXQvc2NoZWQvc2NoX2dyZWQuY1xuaW5kZXggZmNjMWE0YzAzNjM2Mi4uZjA0ZjQyNWM2YzQ0OSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2dyZWQuY1xuQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgc3RhdGljIGludCBncmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0ICogaWYgbm8gZGVmYXVsdCBEUCBoYXMgYmVlbiBjb25maWd1cmVkLiBUaGlzXG4gXHRcdFx0ICogYWxsb3dzIGZvciBEUCBmbG93cyB0byBiZSBsZWZ0IHVudG91Y2hlZC5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpZiAobGlrZWx5KHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPVxuJiM0MztcdFx0XHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9XG4gXHRcdFx0XHRcdHNjaC1cdTAwM2VsaW1pdCkpXG4gXHRcdFx0XHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcbiBcdFx0XHRlbHNlXG5AQCAtMjQ0LDcgJiM0MzsyNDQsNyBAQCBzdGF0aWMgaW50IGdyZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRpZiAoZ3JlZF9iYWNrbG9nKHQsIHEsIHNjaCkgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz0gcS1cdTAwM2VsaW1pdCkge1xuJiM0MztcdGlmICgodTY0KWdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9IHEtXHUwMDNlbGltaXQpIHtcbiBcdFx0cS1cdTAwM2ViYWNrbG9nICYjNDM7PSBxZGlzY19wa3RfbGVuKHNrYik7XG4gXHRcdHJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jIGIvbmV0L3NjaGVkL3NjaF9wbHVnLmNcbmluZGV4IGNlZmI2NTIwMWUxNzguLmI2MGRkZmVlNmE2OGEgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3BsdWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9wbHVnLmNcbkBAIC04OSw3ICYjNDM7ODksNyBAQCBzdGF0aWMgaW50IHBsdWdfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiB7XG4gXHRzdHJ1Y3QgcGx1Z19zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xuIFxuLVx0aWYgKGxpa2VseShzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgJiM0Mzsgc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHEtXHUwMDNlbGltaXQpKSB7XG4mIzQzO1x0aWYgKGxpa2VseSgodTY0KXNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyAmIzQzOyBza2ItXHUwMDNlbGVuIFx1MDAzYz0gcS1cdTAwM2VsaW1pdCkpIHtcbiBcdFx0aWYgKCFxLVx1MDAzZXVucGx1Z19pbmRlZmluaXRlKVxuIFx0XHRcdHEtXHUwMDNlcGt0c19jdXJyZW50X2Vwb2NoJiM0MzsmIzQzOztcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0dSRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QTFVHJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRklGTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JmaWZvX2VucXVldWUmIzM0OywKICAgICYjMzQ7Z3JlZF9lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3BsdWdfZW5xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgcGFja2V0IGVucXVldWUgZnVuY3Rpb25zIG9mIHNldmVyYWwgcWRpc2NzIChGSUZPLCBHUkVELCBQTFVHKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgdGhlIHJlc3BlY3RpdmUgcWRpc2NzIGFuZCBzZW5kaW5nIHBhY2tldHMuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2M4MmJiMmRjZjQ0NzVlZDE3NmM0YWZhZWFiNjdhMGU4NTkzZWU0YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDE4IDEwOjU4OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9maWZvLmMgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uYwppbmRleCBlNmJmZDM5ZmYzMzk2Li4xYjYzODhkNTA5NjdmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZpZm8uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uYwpAQCAtMTksNyAmIzQzOzE5LDcgQEAKIHN0YXRpYyBpbnQgYmZpZm9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJCSBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpCiB7Ci0JaWYgKGxpa2VseShzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSAmbHQ7PQomIzQzOwlpZiAobGlrZWx5KCh1NjQpc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0KIAkJICAgUkVBRF9PTkNFKHNjaC0mZ3Q7bGltaXQpKSkKIAkJcmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jIGIvbmV0L3NjaGVkL3NjaF9ncmVkLmMKaW5kZXggZmNjMWE0YzAzNjM2Mi4uZjA0ZjQyNWM2YzQ0OSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9ncmVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9ncmVkLmMKQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgc3RhdGljIGludCBncmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsCiAJCQkgKiBpZiBubyBkZWZhdWx0IERQIGhhcyBiZWVuIGNvbmZpZ3VyZWQuIFRoaXMKIAkJCSAqIGFsbG93cyBmb3IgRFAgZmxvd3MgdG8gYmUgbGVmdCB1bnRvdWNoZWQuCiAJCQkgKi8KLQkJCWlmIChsaWtlbHkoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0KJiM0MzsJCQlpZiAobGlrZWx5KCh1NjQpc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0KIAkJCQkJc2NoLSZndDtsaW1pdCkpCiAJCQkJcmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7CiAJCQllbHNlCkBAIC0yNDQsNyAmIzQzOzI0NCw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLAogCQlicmVhazsKIAl9CiAKLQlpZiAoZ3JlZF9iYWNrbG9nKHQsIHEsIHNjaCkgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpICZsdDs9IHEtJmd0O2xpbWl0KSB7CiYjNDM7CWlmICgodTY0KWdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSAmbHQ7PSBxLSZndDtsaW1pdCkgewogCQlxLSZndDtiYWNrbG9nICYjNDM7PSBxZGlzY19wa3RfbGVuKHNrYik7CiAJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOwogCX0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jIGIvbmV0L3NjaGVkL3NjaF9wbHVnLmMKaW5kZXggY2VmYjY1MjAxZTE3OC4uYjYwZGRmZWU2YTY4YSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9wbHVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9wbHVnLmMKQEAgLTg5LDcgJiM0Mzs4OSw3IEBAIHN0YXRpYyBpbnQgcGx1Z19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLAogewogCXN0cnVjdCBwbHVnX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7CiAKLQlpZiAobGlrZWx5KHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJiM0Mzsgc2tiLSZndDtsZW4gJmx0Oz0gcS0mZ3Q7bGltaXQpKSB7CiYjNDM7CWlmIChsaWtlbHkoKHU2NClzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICYjNDM7IHNrYi0mZ3Q7bGVuICZsdDs9IHEtJmd0O2xpbWl0KSkgewogCQlpZiAoIXEtJmd0O3VucGx1Z19pbmRlZmluaXRlKQogCQkJcS0mZ3Q7cGt0c19jdXJyZW50X2Vwb2NoJiM0MzsmIzQzOzsKIAkJcmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MjgKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiAyODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSW50ZWdlciBPdmVyZmxvdyBCdWcgRml4KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9zY2hlZC9zY2hfZmlmby5jYCwgYG5ldC9zY2hlZC9zY2hfZ3JlZC5jYCwgYW5kIGBuZXQvc2NoZWQvc2NoX3BsdWcuY2AuIFRoZSBjb3JlIG9mIGl0IGlzIGEgY2FzdCBvZiBgc2NoLSZndDtxc3RhdHMuYmFja2xvZ2AgdG8gYSBgdTY0YCBiZWZvcmUgYWRkaW5nIGVpdGhlciBgcWRpc2NfcGt0X2xlbihza2IpYCBvciBgc2tiLSZndDtsZW5gLiBSaWdodCwgY2xhc3NpYyBpbnRlZ2VyIG92ZXJmbG93IHByZXZlbnRpb24gaW4gcGFja2V0IHNjaGVkdWxpbmcg4oCTIEkgc2VlIHRoYXQgaW1tZWRpYXRlbHkuIFRoZXkmIzM5O3JlIGFkZGluZyB0aGUgcGFja2V0IGxlbmd0aCB0byB0aGUgYmFja2xvZywgYW5kIHRoZSBjYXN0IHNob3VsZCBwcmV2ZW50IHdyYXBhcm91bmQuIEEgZ29vZCwgZnVuY3Rpb25hbCBmaXguIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhleSYjMzk7dmUgbW9kaWZpZWQgYXJlIGBiZmlmb19lbnF1ZXVlYCBpbiB0aGUgRklGTyBxZGlzYywgYGdyZWRfZW5xdWV1ZWAgZm9yIEdSRUQsIGFuZCBgcGx1Z19lbnF1ZXVlYCBmb3IgdGhlIHBsdWcgcWRpc2MuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGFyZSB0aGVzZSBldmVuIHdvcnRoIGZ1enppbmc/IFllcywgYWJzb2x1dGVseS4gVGhlc2UgYXJlICplbnF1ZXVlKiBmdW5jdGlvbnMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIGNvcmUgdG8gdGhlIHBhY2tldCBzY2hlZHVsaW5nIHByb2Nlc3Mgd2l0aGluIHRoZSBxZGlzY3MuIFRoZXkgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCBlaXRoZXIgZGlyZWN0bHkgYnkgc2VuZGluZyBwYWNrZXRzIHRocm91Z2ggdGhlIHJlbGV2YW50IGludGVyZmFjZXMsIG9yIG1vcmUgaW5kaXJlY3RseSB2aWEgY29uZmlndXJhdGlvbiBjYWxscyB0byB0aGVzZSBxZGlzY3MgdGhyb3VnaCwgc2F5LCBgdGNgLiBTaW5jZSBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBhbiBvdmVyZmxvdyBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHNlcmlvdXMgaXNzdWVzLCBzbyBpdCYjMzk7cyB3b3J0aCBhIGRlZXAgZGl2ZS4KClRpbWUgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBzY2hfZmlmby5jYC4uLiB0aGF0JiMzOTtzIHByb2JhYmx5IGVpdGhlciBidWlsdC1pbiBvciBgTkVUX1NDSF9GSUZPYC4gV2FpdCwgeWVhaCwgRklGTyBpcyB1c3VhbGx5IGJ1aWx0LWluLCBzbyB0aGF0JiMzOTtzIHByb2JhYmx5IGZpbmUuIE5vIHNwZWNpZmljIG1vZHVsZSB0byB3b3JyeSBhYm91dCB1c3VhbGx5LiBPa2F5LCBgc2NoX2dyZWQuY2Agc2VlbXMgdG8gbWFwIHRvIGBORVRfU0NIX0dSRURgIGFuZCBgc2NoX3BsdWcuY2AgbWFwcyB0byBgTkVUX1NDSF9QTFVHYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhvc2Ugd2l0aCBhIHF1aWNrIGdyZXAganVzdCB0byBtYWtlIHN1cmUuIEkgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfU0NIX0dSRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE3Mj1jb25maWcgTkVUX1NDSF9UQVBSSU9cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXG5uZXQvc2NoZWQvS2NvbmZpZzoxODQ6Y29uZmlnIE5FVF9TQ0hfR1JFRFxubmV0L3NjaGVkL0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfTkVUX1NDSF9SRUQpXHQmIzQzOz0gc2NoX3JlZC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX05FVF9TQ0hfR1JFRClcdCYjNDM7PSBzY2hfZ3JlZC5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMzktb2JqLSQoQ09ORklHX05FVF9TQ0hfSU5HUkVTUylcdCYjNDM7PSBzY2hfaW5ncmVzcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX1NDSF9QTFVHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz0zNDc9Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM2Mi1cbm5ldC9zY2hlZC9LY29uZmlnOjM2Mzpjb25maWcgTkVUX1NDSF9QTFVHXG5uZXQvc2NoZWQvS2NvbmZpZy0zNjQtXHR0cmlzdGF0ZSBcJiMzNDtQbHVnIG5ldHdvcmsgdHJhZmZpYyB1bnRpbCByZWxlYXNlIChQTFVHKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT00Nz1vYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXHQmIzQzOz0gc2NoX2Ryci5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcdCYjNDM7PSBzY2hfcGx1Zy5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDktb2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVx0JiM0Mzs9IHNjaF9ldHMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaF9maWZvLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT0zMz1vYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVx0JiM0Mzs9IGFjdF9nYXRlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfTkVUX1NDSF9GSUZPKVx0JiM0Mzs9IHNjaF9maWZvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0zNS1vYmotJChDT05GSUdfTkVUX1NDSF9IVEIpXHQmIzQzOz0gc2NoX2h0Yi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg2MgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSHVudGluZyBEb3duIE5FVF9TQ0hfRklGTyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gYE5FVF9TQ0hfRklGT2AuIFRoYXQgbWVhbnMgSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGVyIGNvbXBvbmVudHMuICBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9gIGRpcmVjdG9yeS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IHRoYXQgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCB0aGVyZS4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIG1haW5saW5lIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiByZXNpZGVzLCBzbyB0aGF0IHNlZW1zIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIFRpbWUgdG8gZGl2ZSBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEkgZXhwZWN0IGl0IHRvIGJlIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgZmluZCwgZ2l2ZW4gaXRzIG5hbWUuIEhvcGVmdWxseSBpdCYjMzk7cyB3ZWxsLWRvY3VtZW50ZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX1NDSF9GSUZPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz02PW1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg6XHRzZWxlY3QgTkVUX1NDSF9GSUZPXG5uZXQvc2NoZWQvS2NvbmZpZy05LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTk2Nj1lbmRpZiAjIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctOTY3LVxubmV0L3NjaGVkL0tjb25maWc6OTY4OmNvbmZpZyBORVRfU0NIX0ZJRk9cbm5ldC9zY2hlZC9LY29uZmlnLTk2OS1cdGJvb2xcbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9MzM9b2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCYjNDM7PSBhY3RfZ2F0ZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcdCYjNDM7PSBzY2hfZmlmby5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMzUtb2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVx0JiM0Mzs9IHNjaF9odGIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMDMKCQkJCQkJCW91dHB1dDogOTkKCQkJCQkJCXRob3VnaHRzOiAxOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYE5FVF9TQ0hfRklGT2AgaXMgYmVpbmcgc2VsZWN0ZWQgYmVjYXVzZSBvZiBgTkVUX1NDSEVEYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBiYXNpYyBxdWV1ZWluZyBkaXNjaXBsaW5lLiBMb29raW5nIGF0IHRoZSBjb25maWdzLCBJIG5lZWQgdG8gZW5hYmxlIGBORVRfU0NIX0dSRURgLCBgTkVUX1NDSF9QTFVHYCwgYW5kLCBvZiBjb3Vyc2UsIGBORVRfU0NIRURgIGl0c2VsZi4gSGFuZyBvbiwgYE5FVF9TQ0hFRGAgaXMgdGhlIHBhcmVudCwgc28gdGhhdCYjMzk7cyB0aGUgYmFzZSByZXF1aXJlbWVudC4gR290IGl0LgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiBhIGZldyBrZXkgc3ltYm9sczogYGJmaWZvX2VucXVldWVgLCBgZ3JlZF9lbnF1ZXVlYCwgYW5kIGBwbHVnX2VucXVldWVgLiBJJiMzOTttIGN1cmlvdXMgYWJvdXQgaG93IGBiZmlmb19lbnF1ZXVlYCBpcyBpbXBsZW1lbnRlZC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyBzdGF0aWMgb3IgaWYgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIGhvdyBpdOKAmXMgYmVpbmcgY2FsbGVkLCB3aGljaCB3aWxsIGlsbHVtaW5hdGUgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLgoKTGV0IG1lIGNoZWNrIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBuZXQvc2NoZWQvc2NoX2ZpZm8uY2AuIEFoYSwgdGhlcmUgaXQgaXM6IGBzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlgLiBSaWdodCwgaXQmIzM5O3MgYSBgc3RhdGljYCBmdW5jdGlvbi4gU28gaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLiBJcyBpdCB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBzb21ld2hlcmU/IFRoYXQgd291bGQgYmUgdGhlIHVzdWFsIHBhdHRlcm4uIEl0IHdvdWxkIGJlIGxpbmtlZCB0byBhIGBzdHJ1Y3QgUWRpc2Nfb3BzYCBpbnN0YW5jZS4gT2theSwgdGltZSB0byBsb29rIGZvciBgUWRpc2Nfb3BzYCB3aXRoaW4gYHNjaF9maWZvLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiZmlmb19lbnF1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9maWZvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9maWZvLmMtMTgtXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoxOTpzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yMC1cdFx0XHQgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxuLS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jPTIwMj1zdHJ1Y3QgUWRpc2Nfb3BzIGJmaWZvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwNC1cdC5wcml2X3NpemVcdD1cdDAsXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoyMDU6XHQuZW5xdWV1ZVx0PVx0YmZpZm9fZW5xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwNi1cdC5kZXF1ZXVlXHQ9XHRxZGlzY19kZXF1ZXVlX2hlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dyZWRfZW5xdWV1ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ3JlZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ3JlZC5jPTE1Mj1zdGF0aWMgYm9vbCBncmVkX3Blcl92cV9yZWRfZmxhZ3NfdXNlZChzdHJ1Y3QgZ3JlZF9zY2hlZCAqdGFibGUpXG4tLVxubmV0L3NjaGVkL3NjaF9ncmVkLmMtMTY0LVxubmV0L3NjaGVkL3NjaF9ncmVkLmM6MTY1OnN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF9ncmVkLmMtMTY2LVx0XHRcdHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcbi0tXG5uZXQvc2NoZWQvc2NoX2dyZWQuYz05MjE9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZ3JlZF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2dyZWQuYy05MjMtXHQucHJpdl9zaXplXHQ9XHRzaXplb2Yoc3RydWN0IGdyZWRfc2NoZWQpLFxubmV0L3NjaGVkL3NjaF9ncmVkLmM6OTI0Olx0LmVucXVldWVcdD1cdGdyZWRfZW5xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTkyNS1cdC5kZXF1ZXVlXHQ9XHRncmVkX2RlcXVldWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsdWdfZW5xdWV1ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfcGx1Zy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfcGx1Zy5jPTU2PXN0cnVjdCBwbHVnX3NjaGVkX2RhdGEge1xuLS1cbm5ldC9zY2hlZC9zY2hfcGx1Zy5jLTg2LVxubmV0L3NjaGVkL3NjaF9wbHVnLmM6ODc6c3RhdGljIGludCBwbHVnX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3BsdWcuYy04OC1cdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4tLVxubmV0L3NjaGVkL3NjaF9wbHVnLmM9MjA1PXN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBsdWdfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA3LVx0LnByaXZfc2l6ZSAgID0gICAgICAgc2l6ZW9mKHN0cnVjdCBwbHVnX3NjaGVkX2RhdGEpLFxubmV0L3NjaGVkL3NjaF9wbHVnLmM6MjA4Olx0LmVucXVldWUgICAgID0gICAgICAgcGx1Z19lbnF1ZXVlLFxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA5LVx0LmRlcXVldWUgICAgID0gICAgICAgcGx1Z19kZXF1ZXVlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTkwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGdW5jdGlvbiBTeW1ib2wgVmlzaWJpbGl0eSBmb3IgRWZmaWNpZW50IENvZGUgUHJvZmlsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXkmIzM5O2xsIGJlIHVzZWZ1bCBmb3IgcHJvZmlsaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgc2luY2UgdGhleSYjMzk7cmUgZGVjbGFyZWQgYXMgc3RhdGljIGZ1bmN0aW9ucywgdGhleSBtaWdodCBub3QgYmUgdGhlIGJlc3QgY2FuZGlkYXRlcyBhcyBmb2N1cyBzeW1ib2xzLCBlc3BlY2lhbGx5IGlmIHRoZSBjb21waWxlciBkZWNpZGVzIHRvIGlubGluZSB0aGVtLiBUaGF0IHdvdWxkIG1ha2UgdGhlbSBkaXNhcHBlYXIsIGFuZCBJIHdvdWxkbiYjMzk7dCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MgdG8gd29yayB3aXRoLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgdGhleSYjMzk7cmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgdGhleSAqd29uJiMzOTt0KiBiZSBpbmxpbmVkLiBTaW5jZSB0aGV5IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzIGJlY2F1c2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHRoYXQgbWFrZXMgdGhlbSBnb29kIHRhcmdldHMuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gU2luY2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHRoYXQgbWFrZXMgdGhlbSBub24taW5saW5lZC4gR29vZCEKCkkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmsgYGJmaWZvX2VucXVldWVgLCBgZ3JlZF9lbnF1ZXVlYCwgYW5kIGBwbHVnX2VucXVldWVgIGFyZSBwZXJmZWN0bHkgZmluZSBvcHRpb25zIGFzIGZvY3VzIHN5bWJvbHMgYmVjYXVzZSB0aGV5JiMzOTtyZSBub3QgaW5saW5lZCwgd2hpY2ggZ2l2ZXMgdGhlbSB1bmlxdWUgc3ltYm9sIGFkZHJlc3Nlcy4gVGhleSYjMzk7cmUgZ29vZCB0byBnby4KCk5vdywgd2FpdCBhIHNlY29uZC4uLiBhcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBjb25zaWRlcmluZz8gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBnb3QgYE5FVF9TQ0hfR1JFRGAsIGBORVRfU0NIX1BMVUdgLCBhbmQgdGhlbiB0aGUgb3ZlcmFyY2hpbmcgYE5FVF9TQ0hFRGAuIEkgbmVlZCB0byBjaGVjayBpZiBgTkVUX1NDSEVEYCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBzaG91bGQgcHJvYmFibHkgaW52ZXN0aWdhdGUgdGhhdCBhbmQgZW5zdXJlIEkmIzM5O20gZ2V0dGluZyB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqSnVzdCBhIFNpbXBsZSBCb29sZWFuKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBoZXJlLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIGl0LCBhdCBsZWFzdCBpbml0aWFsbHkuIFN0cmFpZ2h0Zm9yd2FyZC4gTm8gbmVlZCB0byBvdmVyY29tcGxpY2F0ZSB0aGluZ3MgeWV0LiBQcm9iYWJseSBkZWFsaW5nIHdpdGggYSBzaW1wbGUgdHJ1ZS9mYWxzZSBjb25kaXRpb24uCgpPa2F5LCBub3cgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgTkVUX1NDSF9HUkVEYCBjb25maWd1cmF0aW9uIGVsZW1lbnQgaW50ZXJhY3RzIHdpdGggdGhpcyBgYm9vbGAuIFNwZWNpZmljYWxseSwgd2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHJlbHkgb24gaXQgb3IgYXJlIGluZmx1ZW5jZWQgYnkgaXQ/IEdvdHRhIHNlZSBob3cgdGhpcyBib29sZWFuIGltcGFjdHMgdGhlIGJyb2FkZXIgc2NoZWR1bGluZyBhbmQgZ3JhZGluZyBsb2dpYyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgY29udGV4dC4gVGhlIGRldGFpbHMgbWF0dGVyLCBhcyBhbHdheXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX0dSRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE3Mj1jb25maWcgTkVUX1NDSF9UQVBSSU9cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXG5uZXQvc2NoZWQvS2NvbmZpZzoxODQ6Y29uZmlnIE5FVF9TQ0hfR1JFRFxubmV0L3NjaGVkL0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgTkVUX1NDSF9HUkVEYCBvcHRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBHUkVEIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHB1bGwgdXAgYG5ldC9zY2hlZC9LY29uZmlnYCBhbmQgemVybyBpbiBvbiB0aGUgYE5FVF9TQ0hfR1JFRGAgY29uZmlndXJhdGlvbiBvcHRpb24uIFJpZ2h0LCBoZXJlIGl0IGlzLiBUaGlzIHNlY3Rpb24gd2lsbCBkZWZpbmUgd2hldGhlciB0aGUgR1JFRCAoR2VuZXJpYyBSRUQpIHRyYWZmaWMgc2hhcGVyIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbC4gQ2xlYXJseSwgdGhpcyBpcyBhIGZhaXJseSBsb3ctbGV2ZWwsIGNvcmUgcGllY2Ugb2YgbmV0d29yayBmdW5jdGlvbmFsaXR5IC0gcGFydCBvZiB0aGUgc2hhcGluZyBhbmQgcXVldWUgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCYjMzk7cyBwcmVzZW50ZWQgaW4gdGhlIGNvbmZpZyBmaWxlLiBJcyBpdCBkZXBlbmRlbnQgb24gb3RoZXIgZmVhdHVyZXM/IEFueSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGlmIEkgcGxhbiBvbiBlbmFibGluZyBvciBkaXNhYmxpbmcgaXQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZT8gQXJlIHRoZXJlIGFueSBjb21tZW50cyBvciBleHBsYW5hdGlvbnMgdGhhdCBnaXZlIGRlZXBlciBpbnNpZ2h0IGludG8gd2hlbiBHUkVEIHdvdWxkIGJlIHBhcnRpY3VsYXJseSB1c2VmdWw/IE9mdGVuLCB0aGUgS2NvbmZpZyBmaWxlcyBpbmNsdWRlIHN1YnRsZSBoaW50cyBhYm91dCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvciBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgc2NoZWR1bGluZyBkaXNjaXBsaW5lcy4gSSYjMzk7bSBob3BpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNvbnN0cmFpbnRzIG9mIEdSRUQgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGhpbiB0aGUgbGFyZ2VyIHF1ZXVpbmcgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgb3RoZXIgYWxnb3JpdGhtcywgc3VjaCBhcyBSRUQgYW5kIEVDTiwgdGhhdCBtYXkgaW1wYWN0IGNvbmdlc3Rpb24gY29udHJvbCBhbmQgcXVldWUgbWFuYWdlbWVudC4gSSYjMzk7bSBrZWVuIHRvIGdyYXNwIHRoZSBudWFuY2VzIGhlcmUsIGFuZCBzZWUgaG93IHRoaXMgaXMgcHJlc2VudGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgbmV0d29ya2luZyBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFxuIDE4MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTgyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxuIDE4MzpcdFxuIDE4NDpcdGNvbmZpZyBORVRfU0NIX0dSRURcbiAxODU6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcJiMzNDtcbiAxODY6XHRcdGhlbHBcbiAxODc6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvblxuIDE4ODpcdFx0ICAoR1JFRCkgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzXG4gMTg5Olx0XHQgIChzZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfcmVkLmNcdTAwM2UgZm9yIGRldGFpbHMgYW5kXG4gMTkwOlx0XHQgIHJlZmVyZW5jZXMgYWJvdXQgdGhlIGFsZ29yaXRobSkuXG4gMTkxOlx0XG4gMTkyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxOTM6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF9ncmVkLlxuIDE5NDpcdFxuIDE5NTpcdGNvbmZpZyBORVRfU0NIX05FVEVNXG4gMTk2Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGVtdWxhdG9yIChORVRFTSlcJiMzNDtcbiAxOTc6XHRcdGhlbHBcbiAxOTg6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZW11bGF0ZSBuZXR3b3JrIGRlbGF5LCBsb3NzLCBhbmQgcGFja2V0XG4gMTk5Olx0XHQgIHJlLW9yZGVyaW5nLiBUaGlzIGlzIG9mdGVuIHVzZWZ1bCB0byBzaW11bGF0ZSBuZXR3b3JrcyB3aGVuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBORVRfU0NIX1BMVUdgIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCk9rYXksIG5vIGltbWVkaWF0ZSByb2FkYmxvY2tzIG9yIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCDigJMgdGhhdCYjMzk7cyBnb29kLiBUaW1lIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlIGFuZCB6ZXJvIGluIG9uIHRoZSBgTkVUX1NDSF9QTFVHYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgYWJvdXQgaXQsIGhvdyBpdCYjMzk7cyBkZWZpbmVkLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIGl0IGludGVyYWN0cyB3aXRoLiBVbmRlcnN0YW5kaW5nIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciB0cmFmZmljIGNvbnRyb2wgZnJhbWV3b3JrIGlzIGtleSBoZXJlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IGl0cyBwdXJwb3NlLCBwb3RlbnRpYWwgaW1wYWN0LCBhbmQgbWF5YmUgZXZlbiBzb21lIGhpbnRzIGFib3V0IHdoZW4gaXQgbWlnaHQgYmUgdXNlZnVsIG9yIHJlbGV2YW50LiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGZvciBnYWluaW5nIGluc2lnaHRzIGludG8gdGhlIHdvcmtpbmdzIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM2MDpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gMzYxOlx0XHQgIGNhbGxlZCBzY2hfaW5ncmVzcyB3aXRoIGFsaWFzIG9mIHNjaF9jbHNhY3QuXG4gMzYyOlx0XG4gMzYzOlx0Y29uZmlnIE5FVF9TQ0hfUExVR1xuIDM2NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UGx1ZyBuZXR3b3JrIHRyYWZmaWMgdW50aWwgcmVsZWFzZSAoUExVRylcJiMzNDtcbiAzNjU6XHRcdGhlbHBcbiAzNjY6XHRcbiAzNjc6XHRcdCAgVGhpcyBxdWV1aW5nIGRpc2NpcGxpbmUgYWxsb3dzIHVzZXJzcGFjZSB0byBwbHVnL3VucGx1ZyBhIG5ldHdvcmtcbiAzNjg6XHRcdCAgb3V0cHV0IHF1ZXVlLCB1c2luZyB0aGUgbmV0bGluayBpbnRlcmZhY2UuICBXaGVuIGl0IHJlY2VpdmVzIGFuXG4gMzY5Olx0XHQgIGVucXVldWUgY29tbWFuZCBpdCBpbnNlcnRzIGEgcGx1ZyBpbnRvIHRoZSBvdXRib3VuZCBxdWV1ZSB0aGF0XG4gMzcwOlx0XHQgIGNhdXNlcyBmb2xsb3dpbmcgcGFja2V0cyB0byBlbnF1ZXVlIHVudGlsIGEgZGVxdWV1ZSBjb21tYW5kIGFycml2ZXNcbiAzNzE6XHRcdCAgb3ZlciBuZXRsaW5rLCBjYXVzaW5nIHRoZSBwbHVnIHRvIGJlIHJlbW92ZWQgYW5kIHJlc3VtaW5nIHRoZSBub3JtYWxcbiAzNzI6XHRcdCAgcGFja2V0IGZsb3cuXG4gMzczOlx0XG4gMzc0Olx0XHQgIFRoaXMgbW9kdWxlIGFsc28gcHJvdmlkZXMgYSBnZW5lcmljIFwmIzM0O25ldHdvcmsgb3V0cHV0IGJ1ZmZlcmluZ1wmIzM0O1xuIDM3NTpcdFx0ICBmdW5jdGlvbmFsaXR5IChha2Egb3V0cHV0IGNvbW1pdCksIHdoZXJlaW4gdXBvbiBhcnJpdmFsIG9mIGEgZGVxdWV1ZVxuIDM3NjpcdFx0ICBjb21tYW5kLCBvbmx5IHBhY2tldHMgdXAgdG8gdGhlIGZpcnN0IHBsdWcgYXJlIHJlbGVhc2VkIGZvciBkZWxpdmVyeS5cbiAzNzc6XHRcdCAgVGhlIFJlbXVzIEhBIHByb2plY3QgdXNlcyB0aGlzIG1vZHVsZSB0byBlbmFibGUgc3BlY3VsYXRpdmUgZXhlY3V0aW9uXG4gMzc4Olx0XHQgIG9mIHZpcnR1YWwgbWFjaGluZXMgYnkgYWxsb3dpbmcgdGhlIGdlbmVyYXRlZCBuZXR3b3JrIG91dHB1dCB0byBiZSByb2xsZWRcbiAzNzk6XHRcdCAgYmFjayBpZiBuZWVkZWQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MzEKCQkJCQkJCW91dHB1dDogMTM1CgkJCQkJCQl0aG91Z2h0czogMjUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTm8gY29tcGxleCBpbnRlcmRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbmFpbCBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMuCgpSaWdodCwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgYXJlIGBORVRfU0NIRURgLCBgTkVUX1NDSF9HUkVEYCwgYW5kIGBORVRfU0NIX1BMVUdgLiBOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBmdW5jdGlvbnMg4oCTIHRoZSBmb2N1cyBzeW1ib2xzLCBpZiB5b3Ugd2lsbCDigJMgcmVsYXRlZCB0byBwYWNrZXQgZW5xdWV1aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYGJmaWZvX2VucXVldWVgLCBgZ3JlZF9lbnF1ZXVlYCwgYW5kIGBwbHVnX2VucXVldWVgLgoKSGFuZyBvbiBhIHNlY29uZC4uLiBgYmZpZm9fZW5xdWV1ZWAgaXMgZGVmaW5lZCBhcyBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIuIEludGVyZXN0aW5nLiBMZXQgbWUgc2VlLi4uIEkgc2VlIGBxZGlzY19lbnF1ZXVlYCBpcyBpbmxpbmUuIFNvIHRoZSByZWFsIGNhbGwgaXMgaGFwcGVuaW5nIHRocm91Z2ggdGhlIGBxLSZndDtlbnF1ZXVlYCBmdW5jdGlvbiBwb2ludGVyLiBPa2F5LCBzbyB0aGF0IGNvbmZpcm1zIGl0LCBgYmZpZm9fZW5xdWV1ZWAsIGBncmVkX2VucXVldWVgLCBhbmQgYHBsdWdfZW5xdWV1ZWAgYXJlIGluZGVlZCB0aGUgYmVzdCBmb2N1cyBzeW1ib2xzIGZvciBlYWNoIG9mIHRoZWlyIHJlc3BlY3RpdmUgc2NoZWR1bGluZyBkaXNjaXBsaW5lcy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjay4uLiBJcyBgTkVUX1NDSF9GSUZPYCBhIGNvbmZpZz8gWWVzLCBpdCBpcywgYW5kIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGBORVRfU0NIRURgLiBTbywgSSYjMzk7bGwgYWRkIHRoYXQgdG8gdGhlIGxpc3QsIHdoaWNoIG1ha2VzIHRoZSB3aG9sZSB0aGluZyBhIGJpdCBjbGVhcmVyLgoKU28sIGxldCYjMzk7cyBtYWtlIHN1cmUgSSBkaWRuJiMzOTt0IG1pc3MgYW55dGhpbmcuCgpPa2F5LCBoZXJlIGFyZSBhbGwgb2YgdGhlIGNvbmZpZ3M6IGBORVRfU0NIRURgLCBgTkVUX1NDSF9HUkVEYCwgYE5FVF9TQ0hfUExVR2AsIGFuZCBgTkVUX1NDSF9GSUZPYC4gVGhhdCBjb3ZlcnMgaXQuIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgcHJldHR5IGdvb2QgaGFuZGxlIG9uIHRoaW5ncyBub3cuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCB0aG9zZSBhcmUgdGhlIHJlc3VsdHMgdGhhdCBhcmUgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfR1JFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1BMVUcmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GSUZPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmZpZm9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDtncmVkX2VucXVldWUmIzM0OywKICAgICYjMzQ7cGx1Z19lbnF1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBwYWNrZXQgZW5xdWV1ZSBmdW5jdGlvbnMgb2Ygc2V2ZXJhbCBxZGlzY3MgKEZJRk8sIEdSRUQsIFBMVUcpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjb25maWd1cmluZyB0aGUgcmVzcGVjdGl2ZSBxZGlzY3MgYW5kIHNlbmRpbmcgcGFja2V0cy4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0dSRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QTFVHJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRklGTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JmaWZvX2VucXVldWUmIzM0OywKICAgICYjMzQ7Z3JlZF9lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3BsdWdfZW5xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgcGFja2V0IGVucXVldWUgZnVuY3Rpb25zIG9mIHNldmVyYWwgcWRpc2NzIChGSUZPLCBHUkVELCBQTFVHKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgdGhlIHJlc3BlY3RpdmUgcWRpc2NzIGFuZCBzZW5kaW5nIHBhY2tldHMuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGFja2V0IGVucXVldWUgbG9naWMgb2Ygc2V2ZXJhbCBuZXR3b3JrIHNjaGVkdWxlcnMgKGZpZm8sIGdyZWQsIHBsdWcpLiBCeSBjYXN0aW5nIHRoZSBxdWV1ZSBiYWNrbG9nIHRvIGB1NjRgIGJlZm9yZSBhZGRpbmcgdGhlIHBhY2tldCBsZW5ndGgsIGl0IHByZXZlbnRzIGEgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBhbGxvdyB0aGUgYmFja2xvZyB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbGltaXQuIFRoaXMgaXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24gb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMgKHdoaWNoIEtBU0FOIHdvdWxkIGRldGVjdCkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNjODJiYjJkY2Y0NDc1ZWQxNzZjNGFmYWVhYjY3YTBlODU5M2VlNGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDo1ODoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZmlmby5jIGIvbmV0L3NjaGVkL3NjaF9maWZvLmMKaW5kZXggZTZiZmQzOWZmMzM5Ni4uMWI2Mzg4ZDUwOTY3ZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9maWZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9maWZvLmMKQEAgLTE5LDcgJiM0MzsxOSw3IEBACiBzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsCiAJCQkgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKQogewotCWlmIChsaWtlbHkoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0KJiM0MzsJaWYgKGxpa2VseSgodTY0KXNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpICZsdDs9CiAJCSAgIFJFQURfT05DRShzY2gtJmd0O2xpbWl0KSkpCiAJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOwogCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dyZWQuYyBiL25ldC9zY2hlZC9zY2hfZ3JlZC5jCmluZGV4IGZjYzFhNGMwMzYzNjIuLmYwNGY0MjVjNmM0NDkgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZ3JlZC5jCkBAIC0xNzksNyAmIzQzOzE3OSw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLAogCQkJICogaWYgbm8gZGVmYXVsdCBEUCBoYXMgYmVlbiBjb25maWd1cmVkLiBUaGlzCiAJCQkgKiBhbGxvd3MgZm9yIERQIGZsb3dzIHRvIGJlIGxlZnQgdW50b3VjaGVkLgogCQkJICovCi0JCQlpZiAobGlrZWx5KHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpICZsdDs9CiYjNDM7CQkJaWYgKGxpa2VseSgodTY0KXNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpICZsdDs9CiAJCQkJCXNjaC0mZ3Q7bGltaXQpKQogCQkJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOwogCQkJZWxzZQpAQCAtMjQ0LDcgJiM0MzsyNDQsNyBAQCBzdGF0aWMgaW50IGdyZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJYnJlYWs7CiAJfQogCi0JaWYgKGdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSAmbHQ7PSBxLSZndDtsaW1pdCkgewomIzQzOwlpZiAoKHU2NClncmVkX2JhY2tsb2codCwgcSwgc2NoKSAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0gcS0mZ3Q7bGltaXQpIHsKIAkJcS0mZ3Q7YmFja2xvZyAmIzQzOz0gcWRpc2NfcGt0X2xlbihza2IpOwogCQlyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTsKIAl9CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BsdWcuYyBiL25ldC9zY2hlZC9zY2hfcGx1Zy5jCmluZGV4IGNlZmI2NTIwMWUxNzguLmI2MGRkZmVlNmE2OGEgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfcGx1Zy5jCkBAIC04OSw3ICYjNDM7ODksNyBAQCBzdGF0aWMgaW50IHBsdWdfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwKIHsKIAlzdHJ1Y3QgcGx1Z19zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOwogCi0JaWYgKGxpa2VseShzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICYjNDM7IHNrYi0mZ3Q7bGVuICZsdDs9IHEtJmd0O2xpbWl0KSkgewomIzQzOwlpZiAobGlrZWx5KCh1NjQpc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBza2ItJmd0O2xlbiAmbHQ7PSBxLSZndDtsaW1pdCkpIHsKIAkJaWYgKCFxLSZndDt1bnBsdWdfaW5kZWZpbml0ZSkKIAkJCXEtJmd0O3BrdHNfY3VycmVudF9lcG9jaCYjNDM7JiM0Mzs7CiAJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyNQoJCQkJCQkJb3V0cHV0OiAxNTAKCQkJCQkJCXRob3VnaHRzOiA0ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSW50ZWdlciBPdmVyZmxvdyBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB3aGF0JiMzOTtzIGhhcHBlbmluZyBoZXJlLiBUaGV5JiMzOTtyZSB0b3VjaGluZyBgYmZpZm9fZW5xdWV1ZWAsIGBncmVkX2VucXVldWVgLCBhbmQgYHBsdWdfZW5xdWV1ZWAgd2l0aGluIHRoZSBuZXR3b3JraW5nIHNjaGVkdWxlciBjb2RlIOKAkyBzcGVjaWZpY2FsbHksIGBzY2hfZmlmby5jYCwgYHNjaF9ncmVkLmNgLCBhbmQgYHNjaF9wbHVnLmNgLiBUaGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIGludm9sdmVzIGNhc3RpbmcgZWl0aGVyIGBzY2gtJmd0O3FzdGF0cy5iYWNrbG9nYCBvciB0aGUgcmVzdWx0IG9mIGBncmVkX2JhY2tsb2dgIHRvIGEgYHU2NGAgYmVmb3JlIGFkZGluZyB0aGUgcGFja2V0IGxlbmd0aCAoZWl0aGVyIGBxZGlzY19wa3RfbGVuKHNrYilgIG9yIGBza2ItJmd0O2xlbmApIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgcXVldWUmIzM5O3MgbGltaXQuCgpUaGUgcmVhc29uIGlzIHNpbXBsZTogaW50ZWdlciBvdmVyZmxvdy4gTXkgZ3V0IHJlYWN0aW9uIHdhcyBjb3JyZWN0OyB0aGVzZSBhcmUgYWxtb3N0IGNlcnRhaW5seSAzMi1iaXQgaW50ZWdlcnMgKGB1MzJgKS4gV2UmIzM5O3JlIGFkZGluZyB0aGUgYmFja2xvZywgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYSBgdTMyYCwgYW5kIHRoZSBpbmNvbWluZyBwYWNrZXQmIzM5O3MgbGVuZ3RoLCBhbHNvIGEgYHUzMmAuIFdpdGhvdXQgdGhlIGNhc3QgdG8gYHU2NGAsIHRoZSBhZGRpdGlvbiB3b3VsZCBiZSBwZXJmb3JtZWQgd2l0aGluIDMyLWJpdHMuIElmIHRoZSBzdW0gb2YgdGhlIGJhY2tsb2cgYW5kIHBhY2tldCBsZW5ndGggZXhjZWVkZWQgdGhlIG1heGltdW0gdmFsdWUgZm9yIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIsIHRoZSByZXN1bHQgd291bGQgd3JhcCBhcm91bmQuIFRoaXMgd291bGQgbGVhZCB0byBhIHZhbHVlIHNtYWxsZXIgdGhhbiB0aGUgcXVldWUmIzM5O3MgbGltaXQgZXZlbiB0aG91Z2ggaXQgKnNob3VsZCogYmUgZXhjZWVkaW5nIGl0LCBlc3NlbnRpYWxseSBhbGxvd2luZyBtb3JlIHRyYWZmaWMgaW50byB0aGUgcXVldWUgdGhhbiBpcyBjb25maWd1cmVkLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uLCBhbmQgdGhlIHJlYXNvbiBJJiMzOTttIGhlcmU6IGRvZXMgdGhpcyBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBOby4gQWJzb2x1dGVseSBub3QuIFRoaXMgZml4IGlzIHB1cmVseSBhYm91dCBwcmV2ZW50aW5nIGFuIGludGVnZXIgb3ZlcmZsb3csIHdoaWNoIGNhbiBjYXVzZSBsb2dpYyBlcnJvcnMgYW5kIHBvdGVudGlhbGx5LCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBIb3dldmVyLCBLTVNBTiBpc24mIzM5O3QgZ29pbmcgdG8gYmUgdXNlZnVsIGhlcmUuIEtNU0FOIGlzIGZvciBkZXRlY3RpbmcgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEludGVnZXIgb3ZlcmZsb3cgY2FuIGxlYWQgdG8gb3RoZXIgaXNzdWVzLCBsaWtlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIGJ1dCB0aGF0IHdvdWxkIGZhbGwgdW5kZXIgS0FTQU4mIzM5O3MgcHVydmlldy4KClRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZywgSSBxdWlja2x5IHZlcmlmaWVkIHRoZSB0eXBlcy4gYHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2dgIGlzIGluZGVlZCBhIGBfX3UzMmAsIGBxZGlzY19wa3RfbGVuKHNrYilgIHJldHVybnMgYSBgdTMyYCwgYW5kIHRoZSBgc2NoLSZndDtsaW1pdGAgaXMgYSBgdTMyYC4gQ2FzdGluZyB0aGUgb3BlcmFuZHMgdG8gYHU2NGAgYmVmb3JlIGFkZGl0aW9uIHByZXZlbnRzIHRoZSBgdTMyICYjNDM7IHUzMmAgb3ZlcmZsb3cgaXNzdWUuIEl0JiMzOTtzIGEgY2xlYW4gYW5kIHN0cmFpZ2h0Zm9yd2FyZCBpbnRlZ2VyIG92ZXJmbG93IGJ1ZyBmaXguCgpUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEkmIzM5O2xsIHNldCBOZWVkc0tNU0FOIHRvIGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGxvZ2ljIG9mIHNldmVyYWwgbmV0d29yayBzY2hlZHVsZXJzIChmaWZvLCBncmVkLCBwbHVnKS4gQnkgY2FzdGluZyB0aGUgcXVldWUgYmFja2xvZyB0byBgdTY0YCBiZWZvcmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoLCBpdCBwcmV2ZW50cyBhIDMyLWJpdCBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgYWxsb3cgdGhlIGJhY2tsb2cgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGxpbWl0LiBUaGlzIGlzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBleGNlc3NpdmUgbWVtb3J5IGNvbnN1bXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzICh3aGljaCBLQVNBTiB3b3VsZCBkZXRlY3QpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBwYWNrZXQgZW5xdWV1ZSBsb2dpYyBvZiBzZXZlcmFsIG5ldHdvcmsgc2NoZWR1bGVycyAoZmlmbywgZ3JlZCwgcGx1ZykuIEJ5IGNhc3RpbmcgdGhlIHF1ZXVlIGJhY2tsb2cgdG8gYHU2NGAgYmVmb3JlIGFkZGluZyB0aGUgcGFja2V0IGxlbmd0aCwgaXQgcHJldmVudHMgYSAzMi1iaXQgaW50ZWdlciBvdmVyZmxvdyB0aGF0IGNvdWxkIGFsbG93IHRoZSBiYWNrbG9nIHRvIGV4Y2VlZCB0aGUgY29uZmlndXJlZCBsaW1pdC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gZXhjZXNzaXZlIG1lbW9yeSBjb25zdW1wdGlvbiBvciBvdXQtb2YtYm91bmRzIGlzc3VlcyAod2hpY2ggS0FTQU4gd291bGQgZGV0ZWN0KS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MTcuMDk4MDYzNzM2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1NDQ3MjI0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX0dSRURcIixcbiAgICBcIk5FVF9TQ0hfUExVR1wiLFxuICAgIFwiTkVUX1NDSF9GSUZPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmZpZm9fZW5xdWV1ZVwiLFxuICAgIFwiZ3JlZF9lbnF1ZXVlXCIsXG4gICAgXCJwbHVnX2VucXVldWVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGFja2V0IGVucXVldWUgbG9naWMgb2Ygc2V2ZXJhbCBuZXR3b3JrIHNjaGVkdWxlcnMgKGZpZm8sIGdyZWQsIHBsdWcpLiBCeSBjYXN0aW5nIHRoZSBxdWV1ZSBiYWNrbG9nIHRvIGB1NjRgIGJlZm9yZSBhZGRpbmcgdGhlIHBhY2tldCBsZW5ndGgsIGl0IHByZXZlbnRzIGEgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBhbGxvdyB0aGUgYmFja2xvZyB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbGltaXQuIFRoaXMgaXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24gb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMgKHdoaWNoIEtBU0FOIHdvdWxkIGRldGVjdCkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHFkaXNjcyAoRklGTywgR1JFRCwgUExVRykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIHRoZSByZXNwZWN0aXZlIHFkaXNjcyBhbmQgc2VuZGluZyBwYWNrZXRzLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MTcuMDk4MDY5Nzc2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjAyNTMyMjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2M4MmJiMmRjZjQ0NzVlZDE3NmM0YWZhZWFiNjdhMGU4NTkzZWU0YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDo1ODoxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZpZm8uYyBiL25ldC9zY2hlZC9zY2hfZmlmby5jXFxuaW5kZXggZTZiZmQzOWZmMzM5Ni4uMWI2Mzg4ZDUwOTY3ZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfZmlmby5jXFxuQEAgLTE5LDcgKzE5LDcgQEBcXG4gc3RhdGljIGludCBiZmlmb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxcbiB7XFxuLVxcdGlmIChsaWtlbHkoc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcXHUwMDNjPVxcbitcXHRpZiAobGlrZWx5KCh1NjQpc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcXHUwMDNjPVxcbiBcXHRcXHQgICBSRUFEX09OQ0Uoc2NoLVxcdTAwM2VsaW1pdCkpKVxcbiBcXHRcXHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jIGIvbmV0L3NjaGVkL3NjaF9ncmVkLmNcXG5pbmRleCBmY2MxYTRjMDM2MzYyLi5mMDRmNDI1YzZjNDQ5IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9ncmVkLmNcXG5AQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRcXHQgKiBpZiBubyBkZWZhdWx0IERQIGhhcyBiZWVuIGNvbmZpZ3VyZWQuIFRoaXNcXG4gXFx0XFx0XFx0ICogYWxsb3dzIGZvciBEUCBmbG93cyB0byBiZSBsZWZ0IHVudG91Y2hlZC5cXG4gXFx0XFx0XFx0ICovXFxuLVxcdFxcdFxcdGlmIChsaWtlbHkoc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcXHUwMDNjPVxcbitcXHRcXHRcXHRpZiAobGlrZWx5KCh1NjQpc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcXHUwMDNjPVxcbiBcXHRcXHRcXHRcXHRcXHRzY2gtXFx1MDAzZWxpbWl0KSlcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XFxuIFxcdFxcdFxcdGVsc2VcXG5AQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICsgcWRpc2NfcGt0X2xlbihza2IpIFxcdTAwM2M9IHEtXFx1MDAzZWxpbWl0KSB7XFxuK1xcdGlmICgodTY0KWdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICsgcWRpc2NfcGt0X2xlbihza2IpIFxcdTAwM2M9IHEtXFx1MDAzZWxpbWl0KSB7XFxuIFxcdFxcdHEtXFx1MDAzZWJhY2tsb2cgKz0gcWRpc2NfcGt0X2xlbihza2IpO1xcbiBcXHRcXHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BsdWcuYyBiL25ldC9zY2hlZC9zY2hfcGx1Zy5jXFxuaW5kZXggY2VmYjY1MjAxZTE3OC4uYjYwZGRmZWU2YTY4YSAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX3BsdWcuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfcGx1Zy5jXFxuQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGludCBwbHVnX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuIHtcXG4gXFx0c3RydWN0IHBsdWdfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG4gXFxuLVxcdGlmIChsaWtlbHkoc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHNrYi1cXHUwMDNlbGVuIFxcdTAwM2M9IHEtXFx1MDAzZWxpbWl0KSkge1xcbitcXHRpZiAobGlrZWx5KCh1NjQpc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHNrYi1cXHUwMDNlbGVuIFxcdTAwM2M9IHEtXFx1MDAzZWxpbWl0KSkge1xcbiBcXHRcXHRpZiAoIXEtXFx1MDAzZXVucGx1Z19pbmRlZmluaXRlKVxcbiBcXHRcXHRcXHRxLVxcdTAwM2Vwa3RzX2N1cnJlbnRfZXBvY2grKztcXG4gXFx0XFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjE4LjcwMTU4NjM4MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5MDIwNTU3NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9HUkVEXCIsXG4gICAgXCJORVRfU0NIX1BMVUdcIixcbiAgICBcIk5FVF9TQ0hfRklGT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJmaWZvX2VucXVldWVcIixcbiAgICBcImdyZWRfZW5xdWV1ZVwiLFxuICAgIFwicGx1Z19lbnF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHFkaXNjcyAoRklGTywgR1JFRCwgUExVRykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIHRoZSByZXNwZWN0aXZlIHFkaXNjcyBhbmQgc2VuZGluZyBwYWNrZXRzLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2M4MmJiMmRjZjQ0NzVlZDE3NmM0YWZhZWFiNjdhMGU4NTkzZWU0YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDEwOjU4OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9maWZvLmMgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuaW5kZXggZTZiZmQzOWZmMzM5Ni4uMWI2Mzg4ZDUwOTY3ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZmlmby5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuQEAgLTE5LDcgKzE5LDcgQEBcbiBzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0IHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcbiB7XG4tXHRpZiAobGlrZWx5KHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9XG4rXHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz1cbiBcdFx0ICAgUkVBRF9PTkNFKHNjaC1cdTAwM2VsaW1pdCkpKVxuIFx0XHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dyZWQuYyBiL25ldC9zY2hlZC9zY2hfZ3JlZC5jXG5pbmRleCBmY2MxYTRjMDM2MzYyLi5mMDRmNDI1YzZjNDQ5IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9ncmVkLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZ3JlZC5jXG5AQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdCAqIGlmIG5vIGRlZmF1bHQgRFAgaGFzIGJlZW4gY29uZmlndXJlZC4gVGhpc1xuIFx0XHRcdCAqIGFsbG93cyBmb3IgRFAgZmxvd3MgdG8gYmUgbGVmdCB1bnRvdWNoZWQuXG4gXHRcdFx0ICovXG4tXHRcdFx0aWYgKGxpa2VseShzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPVxuK1x0XHRcdGlmIChsaWtlbHkoKHU2NClzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPVxuIFx0XHRcdFx0XHRzY2gtXHUwMDNlbGltaXQpKVxuIFx0XHRcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4gXHRcdFx0ZWxzZVxuQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgaW50IGdyZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRpZiAoZ3JlZF9iYWNrbG9nKHQsIHEsIHNjaCkgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPSBxLVx1MDAzZWxpbWl0KSB7XG4rXHRpZiAoKHU2NClncmVkX2JhY2tsb2codCwgcSwgc2NoKSArIHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9IHEtXHUwMDNlbGltaXQpIHtcbiBcdFx0cS1cdTAwM2ViYWNrbG9nICs9IHFkaXNjX3BrdF9sZW4oc2tiKTtcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9wbHVnLmMgYi9uZXQvc2NoZWQvc2NoX3BsdWcuY1xuaW5kZXggY2VmYjY1MjAxZTE3OC4uYjYwZGRmZWU2YTY4YSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX3BsdWcuY1xuQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGludCBwbHVnX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4ge1xuIFx0c3RydWN0IHBsdWdfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbiBcbi1cdGlmIChsaWtlbHkoc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHEtXHUwMDNlbGltaXQpKSB7XG4rXHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHEtXHUwMDNlbGltaXQpKSB7XG4gXHRcdGlmICghcS1cdTAwM2V1bnBsdWdfaW5kZWZpbml0ZSlcbiBcdFx0XHRxLVx1MDAzZXBrdHNfY3VycmVudF9lcG9jaCsrO1xuIFx0XHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjE4LjcwMTU4ODYzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTM5MjM5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSW50ZWdlciBPdmVyZmxvdyBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L3NjaGVkL3NjaF9maWZvLmNgLCBgbmV0L3NjaGVkL3NjaF9ncmVkLmNgLCBhbmQgYG5ldC9zY2hlZC9zY2hfcGx1Zy5jYC4gVGhlIGNvcmUgb2YgaXQgaXMgYSBjYXN0IG9mIGBzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2dgIHRvIGEgYHU2NGAgYmVmb3JlIGFkZGluZyBlaXRoZXIgYHFkaXNjX3BrdF9sZW4oc2tiKWAgb3IgYHNrYi1cdTAwM2VsZW5gLiBSaWdodCwgY2xhc3NpYyBpbnRlZ2VyIG92ZXJmbG93IHByZXZlbnRpb24gaW4gcGFja2V0IHNjaGVkdWxpbmcg4oCTIEkgc2VlIHRoYXQgaW1tZWRpYXRlbHkuIFRoZXkncmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoIHRvIHRoZSBiYWNrbG9nLCBhbmQgdGhlIGNhc3Qgc2hvdWxkIHByZXZlbnQgd3JhcGFyb3VuZC4gQSBnb29kLCBmdW5jdGlvbmFsIGZpeC4gVGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGV5J3ZlIG1vZGlmaWVkIGFyZSBgYmZpZm9fZW5xdWV1ZWAgaW4gdGhlIEZJRk8gcWRpc2MsIGBncmVkX2VucXVldWVgIGZvciBHUkVELCBhbmQgYHBsdWdfZW5xdWV1ZWAgZm9yIHRoZSBwbHVnIHFkaXNjLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGFyZSB0aGVzZSBldmVuIHdvcnRoIGZ1enppbmc/IFllcywgYWJzb2x1dGVseS4gVGhlc2UgYXJlICplbnF1ZXVlKiBmdW5jdGlvbnMsIHdoaWNoIG1lYW5zIHRoZXkncmUgY29yZSB0byB0aGUgcGFja2V0IHNjaGVkdWxpbmcgcHJvY2VzcyB3aXRoaW4gdGhlIHFkaXNjcy4gVGhleSBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIGVpdGhlciBkaXJlY3RseSBieSBzZW5kaW5nIHBhY2tldHMgdGhyb3VnaCB0aGUgcmVsZXZhbnQgaW50ZXJmYWNlcywgb3IgbW9yZSBpbmRpcmVjdGx5IHZpYSBjb25maWd1cmF0aW9uIGNhbGxzIHRvIHRoZXNlIHFkaXNjcyB0aHJvdWdoLCBzYXksIGB0Y2AuIFNpbmNlIGl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYW4gb3ZlcmZsb3cgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBzZXJpb3VzIGlzc3Vlcywgc28gaXQncyB3b3J0aCBhIGRlZXAgZGl2ZS5cblxuVGltZSB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYHNjaF9maWZvLmNgLi4uIHRoYXQncyBwcm9iYWJseSBlaXRoZXIgYnVpbHQtaW4gb3IgYE5FVF9TQ0hfRklGT2AuIFdhaXQsIHllYWgsIEZJRk8gaXMgdXN1YWxseSBidWlsdC1pbiwgc28gdGhhdCdzIHByb2JhYmx5IGZpbmUuIE5vIHNwZWNpZmljIG1vZHVsZSB0byB3b3JyeSBhYm91dCB1c3VhbGx5LiBPa2F5LCBgc2NoX2dyZWQuY2Agc2VlbXMgdG8gbWFwIHRvIGBORVRfU0NIX0dSRURgIGFuZCBgc2NoX3BsdWcuY2AgbWFwcyB0byBgTkVUX1NDSF9QTFVHYC4gTGV0J3MgY29uZmlybSB0aG9zZSB3aXRoIGEgcXVpY2sgZ3JlcCBqdXN0IHRvIG1ha2Ugc3VyZS4gSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjgsIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODoyNS42MTU1MTcyMDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNDMyMDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9TQ0hfR1JFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTE3Mj1jb25maWcgTkVUX1NDSF9UQVBSSU9cXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE4My1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxODQ6Y29uZmlnIE5FVF9TQ0hfR1JFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTE4NS1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfTkVUX1NDSF9SRUQpXFx0Kz0gc2NoX3JlZC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19ORVRfU0NIX0dSRUQpXFx0Kz0gc2NoX2dyZWQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0zOS1vYmotJChDT05GSUdfTkVUX1NDSF9JTkdSRVNTKVxcdCs9IHNjaF9pbmdyZXNzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MjUuNzU4OTUyOTcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDQ5MDQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfU0NIX1BMVUdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0zNDc9Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMzYyLVxcbm5ldC9zY2hlZC9LY29uZmlnOjM2Mzpjb25maWcgTkVUX1NDSF9QTFVHXFxubmV0L3NjaGVkL0tjb25maWctMzY0LVxcdHRyaXN0YXRlIFxcXCJQbHVnIG5ldHdvcmsgdHJhZmZpYyB1bnRpbCByZWxlYXNlIChQTFVHKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT00Nz1vYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXFx0Kz0gc2NoX2Ryci5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19ORVRfU0NIX1BMVUcpXFx0Kz0gc2NoX3BsdWcub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS00OS1vYmotJChDT05GSUdfTkVUX1NDSF9FVFMpXFx0Kz0gc2NoX2V0cy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjI1Ljg5MzQ1MTIxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzA1MTYxMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NoX2ZpZm8ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZT0zMz1vYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVxcdCs9IGFjdF9nYXRlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcXHQrPSBzY2hfZmlmby5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTM1LW9iai0kKENPTkZJR19ORVRfU0NIX0hUQilcXHQrPSBzY2hfaHRiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MjYuMDIzOTczNTg0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzNzU2NjIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gTkVUX1NDSF9GSUZPKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGBORVRfU0NIX0ZJRk9gLiBUaGF0IG1lYW5zIEknbSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGVyIGNvbXBvbmVudHMuICBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9gIGRpcmVjdG9yeS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBpdCdzIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGlzIG9wdGlvbiBpcyBkZWZpbmVkIHRoZXJlLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBtYWlubGluZSBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gcmVzaWRlcywgc28gdGhhdCBzZWVtcyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBUaW1lIHRvIGRpdmUgaW50byBgbmV0L3NjaGVkL0tjb25maWdgIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLiBJIGV4cGVjdCBpdCB0byBiZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGZpbmQsIGdpdmVuIGl0cyBuYW1lLiBIb3BlZnVsbHkgaXQncyB3ZWxsLWRvY3VtZW50ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjI4Ljg2MTU0MjU5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE0MjUxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX1NDSF9GSUZPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9Nj1tZW51Y29uZmlnIE5FVF9TQ0hFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTctXFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg6XFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xcbm5ldC9zY2hlZC9LY29uZmlnLTktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTY2PWVuZGlmICMgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctOTY3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjk2ODpjb25maWcgTkVUX1NDSF9GSUZPXFxubmV0L3NjaGVkL0tjb25maWctOTY5LVxcdGJvb2xcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0zMz1vYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVxcdCs9IGFjdF9nYXRlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcXHQrPSBzY2hfZmlmby5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTM1LW9iai0kKENPTkZJR19ORVRfU0NIX0hUQilcXHQrPSBzY2hfaHRiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MjkuMDEyOTc0NTY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0MjgxNDU0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBORVRfU0NIX0ZJRk9gIGlzIGJlaW5nIHNlbGVjdGVkIGJlY2F1c2Ugb2YgYE5FVF9TQ0hFRGAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgYSBiYXNpYyBxdWV1ZWluZyBkaXNjaXBsaW5lLiBMb29raW5nIGF0IHRoZSBjb25maWdzLCBJIG5lZWQgdG8gZW5hYmxlIGBORVRfU0NIX0dSRURgLCBgTkVUX1NDSF9QTFVHYCwgYW5kLCBvZiBjb3Vyc2UsIGBORVRfU0NIRURgIGl0c2VsZi4gSGFuZyBvbiwgYE5FVF9TQ0hFRGAgaXMgdGhlIHBhcmVudCwgc28gdGhhdCdzIHRoZSBiYXNlIHJlcXVpcmVtZW50LiBHb3QgaXQuXG5cbk5vdywgbGV0J3MgemVybyBpbiBvbiBhIGZldyBrZXkgc3ltYm9sczogYGJmaWZvX2VucXVldWVgLCBgZ3JlZF9lbnF1ZXVlYCwgYW5kIGBwbHVnX2VucXVldWVgLiBJJ20gY3VyaW91cyBhYm91dCBob3cgYGJmaWZvX2VucXVldWVgIGlzIGltcGxlbWVudGVkLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgc3RhdGljIG9yIGlmIGl0J3MgZXhwb3J0ZWQgYW5kIGhvdyBpdOKAmXMgYmVpbmcgY2FsbGVkLCB3aGljaCB3aWxsIGlsbHVtaW5hdGUgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5MZXQgbWUgY2hlY2sgdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYG5ldC9zY2hlZC9zY2hfZmlmby5jYC4gQWhhLCB0aGVyZSBpdCBpczogYHN0YXRpYyBpbnQgYmZpZm9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKWAuIFJpZ2h0LCBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24uIFNvIGl0J3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLiBJcyBpdCB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBzb21ld2hlcmU/IFRoYXQgd291bGQgYmUgdGhlIHVzdWFsIHBhdHRlcm4uIEl0IHdvdWxkIGJlIGxpbmtlZCB0byBhIGBzdHJ1Y3QgUWRpc2Nfb3BzYCBpbnN0YW5jZS4gT2theSwgdGltZSB0byBsb29rIGZvciBgUWRpc2Nfb3BzYCB3aXRoaW4gYHNjaF9maWZvLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzAzLCJPdXRwdXRUb2tlbnMiOjk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjMzLjk1NTc5MzYxM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU4MjY4ODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJmaWZvX2VucXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9maWZvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9maWZvLmMtMTgtXFxubmV0L3NjaGVkL3NjaF9maWZvLmM6MTk6c3RhdGljIGludCBiZmlmb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwLVxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYz0yMDI9c3RydWN0IFFkaXNjX29wcyBiZmlmb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwNC1cXHQucHJpdl9zaXplXFx0PVxcdDAsXFxubmV0L3NjaGVkL3NjaF9maWZvLmM6MjA1OlxcdC5lbnF1ZXVlXFx0PVxcdGJmaWZvX2VucXVldWUsXFxubmV0L3NjaGVkL3NjaF9maWZvLmMtMjA2LVxcdC5kZXF1ZXVlXFx0PVxcdHFkaXNjX2RlcXVldWVfaGVhZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MzQuOTE0MDY3NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA5MjM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncmVkX2VucXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9ncmVkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9ncmVkLmM9MTUyPXN0YXRpYyBib29sIGdyZWRfcGVyX3ZxX3JlZF9mbGFnc191c2VkKHN0cnVjdCBncmVkX3NjaGVkICp0YWJsZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTE2NC1cXG5uZXQvc2NoZWQvc2NoX2dyZWQuYzoxNjU6c3RhdGljIGludCBncmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF9ncmVkLmMtMTY2LVxcdFxcdFxcdHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jPTkyMT1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyBncmVkX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9ncmVkLmMtOTIzLVxcdC5wcml2X3NpemVcXHQ9XFx0c2l6ZW9mKHN0cnVjdCBncmVkX3NjaGVkKSxcXG5uZXQvc2NoZWQvc2NoX2dyZWQuYzo5MjQ6XFx0LmVucXVldWVcXHQ9XFx0Z3JlZF9lbnF1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTkyNS1cXHQuZGVxdWV1ZVxcdD1cXHRncmVkX2RlcXVldWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjM1LjAxNDE2NTgyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5Nzk1MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsdWdfZW5xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3BsdWcuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3BsdWcuYz01Nj1zdHJ1Y3QgcGx1Z19zY2hlZF9kYXRhIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jLTg2LVxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jOjg3OnN0YXRpYyBpbnQgcGx1Z19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jLTg4LVxcdFxcdFxcdHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jPTIwNT1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyBwbHVnX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA3LVxcdC5wcml2X3NpemUgICA9ICAgICAgIHNpemVvZihzdHJ1Y3QgcGx1Z19zY2hlZF9kYXRhKSxcXG5uZXQvc2NoZWQvc2NoX3BsdWcuYzoyMDg6XFx0LmVucXVldWUgICAgID0gICAgICAgcGx1Z19lbnF1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jLTIwOS1cXHQuZGVxdWV1ZSAgICAgPSAgICAgICBwbHVnX2RlcXVldWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjM1LjEzMzk2NjQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTY0MTAxNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZ1bmN0aW9uIFN5bWJvbCBWaXNpYmlsaXR5IGZvciBFZmZpY2llbnQgQ29kZSBQcm9maWxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXknbGwgYmUgdXNlZnVsIGZvciBwcm9maWxpbmcuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBzaW5jZSB0aGV5J3JlIGRlY2xhcmVkIGFzIHN0YXRpYyBmdW5jdGlvbnMsIHRoZXkgbWlnaHQgbm90IGJlIHRoZSBiZXN0IGNhbmRpZGF0ZXMgYXMgZm9jdXMgc3ltYm9scywgZXNwZWNpYWxseSBpZiB0aGUgY29tcGlsZXIgZGVjaWRlcyB0byBpbmxpbmUgdGhlbS4gVGhhdCB3b3VsZCBtYWtlIHRoZW0gZGlzYXBwZWFyLCBhbmQgSSB3b3VsZG4ndCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MgdG8gd29yayB3aXRoLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgdGhleSdyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGV5ICp3b24ndCogYmUgaW5saW5lZC4gU2luY2UgdGhleSBoYXZlIGRpc3RpbmN0IGFkZHJlc3NlcyBiZWNhdXNlIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGF0IG1ha2VzIHRoZW0gZ29vZCB0YXJnZXRzLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gU2luY2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHRoYXQgbWFrZXMgdGhlbSBub24taW5saW5lZC4gR29vZCFcblxuSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGBiZmlmb19lbnF1ZXVlYCwgYGdyZWRfZW5xdWV1ZWAsIGFuZCBgcGx1Z19lbnF1ZXVlYCBhcmUgcGVyZmVjdGx5IGZpbmUgb3B0aW9ucyBhcyBmb2N1cyBzeW1ib2xzIGJlY2F1c2UgdGhleSdyZSBub3QgaW5saW5lZCwgd2hpY2ggZ2l2ZXMgdGhlbSB1bmlxdWUgc3ltYm9sIGFkZHJlc3Nlcy4gVGhleSdyZSBnb29kIHRvIGdvLlxuXG5Ob3csIHdhaXQgYSBzZWNvbmQuLi4gYXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBzaG91bGQgYmUgY29uc2lkZXJpbmc/IExldCdzIHNlZS4uLiBJJ3ZlIGdvdCBgTkVUX1NDSF9HUkVEYCwgYE5FVF9TQ0hfUExVR2AsIGFuZCB0aGVuIHRoZSBvdmVyYXJjaGluZyBgTkVUX1NDSEVEYC4gSSBuZWVkIHRvIGNoZWNrIGlmIGBORVRfU0NIRURgIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBJIHNob3VsZCBwcm9iYWJseSBpbnZlc3RpZ2F0ZSB0aGF0IGFuZCBlbnN1cmUgSSdtIGdldHRpbmcgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU5MCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjQwLjI1MDM4MDc0NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNzMyMzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6NDAuNDAzMTIxODk4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzY4OTg4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipKdXN0IGEgU2ltcGxlIEJvb2xlYW4qKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBoZXJlLiBUaGF0J3MgdGhlIGNvcmUgb2YgaXQsIGF0IGxlYXN0IGluaXRpYWxseS4gU3RyYWlnaHRmb3J3YXJkLiBObyBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyB5ZXQuIFByb2JhYmx5IGRlYWxpbmcgd2l0aCBhIHNpbXBsZSB0cnVlL2ZhbHNlIGNvbmRpdGlvbi5cblxuT2theSwgbm93IGxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgTkVUX1NDSF9HUkVEYCBjb25maWd1cmF0aW9uIGVsZW1lbnQgaW50ZXJhY3RzIHdpdGggdGhpcyBgYm9vbGAuIFNwZWNpZmljYWxseSwgd2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHJlbHkgb24gaXQgb3IgYXJlIGluZmx1ZW5jZWQgYnkgaXQ/IEdvdHRhIHNlZSBob3cgdGhpcyBib29sZWFuIGltcGFjdHMgdGhlIGJyb2FkZXIgc2NoZWR1bGluZyBhbmQgZ3JhZGluZyBsb2dpYyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgY29udGV4dC4gVGhlIGRldGFpbHMgbWF0dGVyLCBhcyBhbHdheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo0My42ODAwMzUxMDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjU5NzA1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9HUkVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTcyPWNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTgzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjE4NDpjb25maWcgTkVUX1NDSF9HUkVEXFxubmV0L3NjaGVkL0tjb25maWctMTg1LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo0My44NzY2NDMwNjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4OTUzNzI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgTkVUX1NDSF9HUkVEYCBvcHRpb246XG5cbioqRGl2aW5nIGludG8gdGhlIEdSRUQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIHB1bGwgdXAgYG5ldC9zY2hlZC9LY29uZmlnYCBhbmQgemVybyBpbiBvbiB0aGUgYE5FVF9TQ0hfR1JFRGAgY29uZmlndXJhdGlvbiBvcHRpb24uIFJpZ2h0LCBoZXJlIGl0IGlzLiBUaGlzIHNlY3Rpb24gd2lsbCBkZWZpbmUgd2hldGhlciB0aGUgR1JFRCAoR2VuZXJpYyBSRUQpIHRyYWZmaWMgc2hhcGVyIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbC4gQ2xlYXJseSwgdGhpcyBpcyBhIGZhaXJseSBsb3ctbGV2ZWwsIGNvcmUgcGllY2Ugb2YgbmV0d29yayBmdW5jdGlvbmFsaXR5IC0gcGFydCBvZiB0aGUgc2hhcGluZyBhbmQgcXVldWUgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS5cblxuSSdsbCBiZSBsb29raW5nIGZvciBob3cgaXQncyBwcmVzZW50ZWQgaW4gdGhlIGNvbmZpZyBmaWxlLiBJcyBpdCBkZXBlbmRlbnQgb24gb3RoZXIgZmVhdHVyZXM/IEFueSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGlmIEkgcGxhbiBvbiBlbmFibGluZyBvciBkaXNhYmxpbmcgaXQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZT8gQXJlIHRoZXJlIGFueSBjb21tZW50cyBvciBleHBsYW5hdGlvbnMgdGhhdCBnaXZlIGRlZXBlciBpbnNpZ2h0IGludG8gd2hlbiBHUkVEIHdvdWxkIGJlIHBhcnRpY3VsYXJseSB1c2VmdWw/IE9mdGVuLCB0aGUgS2NvbmZpZyBmaWxlcyBpbmNsdWRlIHN1YnRsZSBoaW50cyBhYm91dCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvciBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgc2NoZWR1bGluZyBkaXNjaXBsaW5lcy4gSSdtIGhvcGluZyB0byB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gY29uc3RyYWludHMgb2YgR1JFRCBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aGluIHRoZSBsYXJnZXIgcXVldWluZyBhcmNoaXRlY3R1cmUuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYW5kIG90aGVyIGFsZ29yaXRobXMsIHN1Y2ggYXMgUkVEIGFuZCBFQ04sIHRoYXQgbWF5IGltcGFjdCBjb25nZXN0aW9uIGNvbnRyb2wgYW5kIHF1ZXVlIG1hbmFnZW1lbnQuIEknbSBrZWVuIHRvIGdyYXNwIHRoZSBudWFuY2VzIGhlcmUsIGFuZCBzZWUgaG93IHRoaXMgaXMgcHJlc2VudGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgbmV0d29ya2luZyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0OTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo0Ny41NjYxODM3MjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXG4gMTgxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxODI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cXG4gMTgzOlxcdFxcbiAxODQ6XFx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxcbiAxODU6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcXFwiXFxuIDE4NjpcXHRcXHRoZWxwXFxuIDE4NzpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb25cXG4gMTg4OlxcdFxcdCAgKEdSRUQpIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobSBmb3Igc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlc1xcbiAxODk6XFx0XFx0ICAoc2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9yZWQuY1xcdTAwM2UgZm9yIGRldGFpbHMgYW5kXFxuIDE5MDpcXHRcXHQgIHJlZmVyZW5jZXMgYWJvdXQgdGhlIGFsZ29yaXRobSkuXFxuIDE5MTpcXHRcXG4gMTkyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxOTM6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2dyZWQuXFxuIDE5NDpcXHRcXG4gMTk1OlxcdGNvbmZpZyBORVRfU0NIX05FVEVNXFxuIDE5NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBlbXVsYXRvciAoTkVURU0pXFxcIlxcbiAxOTc6XFx0XFx0aGVscFxcbiAxOTg6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbXVsYXRlIG5ldHdvcmsgZGVsYXksIGxvc3MsIGFuZCBwYWNrZXRcXG4gMTk5OlxcdFxcdCAgcmUtb3JkZXJpbmcuIFRoaXMgaXMgb2Z0ZW4gdXNlZnVsIHRvIHNpbXVsYXRlIG5ldHdvcmtzIHdoZW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6NDcuNTY2MzA5ODQ3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTkxMzQyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgTkVUX1NDSF9QTFVHYCBDb25maWd1cmF0aW9uIE9wdGlvbioqXG5cbk9rYXksIG5vIGltbWVkaWF0ZSByb2FkYmxvY2tzIG9yIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCDigJMgdGhhdCdzIGdvb2QuIFRpbWUgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUgYW5kIHplcm8gaW4gb24gdGhlIGBORVRfU0NIX1BMVUdgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQncyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIGFib3V0IGl0LCBob3cgaXQncyBkZWZpbmVkLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIGl0IGludGVyYWN0cyB3aXRoLiBVbmRlcnN0YW5kaW5nIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciB0cmFmZmljIGNvbnRyb2wgZnJhbWV3b3JrIGlzIGtleSBoZXJlLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgaXRzIHB1cnBvc2UsIHBvdGVudGlhbCBpbXBhY3QsIGFuZCBtYXliZSBldmVuIHNvbWUgaGludHMgYWJvdXQgd2hlbiBpdCBtaWdodCBiZSB1c2VmdWwgb3IgcmVsZXZhbnQuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgZm9yIGdhaW5pbmcgaW5zaWdodHMgaW50byB0aGUgd29ya2luZ3Mgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE2MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6NTAuODY1NDQ3MDk1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNjA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuIDM2MTpcXHRcXHQgIGNhbGxlZCBzY2hfaW5ncmVzcyB3aXRoIGFsaWFzIG9mIHNjaF9jbHNhY3QuXFxuIDM2MjpcXHRcXG4gMzYzOlxcdGNvbmZpZyBORVRfU0NIX1BMVUdcXG4gMzY0OlxcdFxcdHRyaXN0YXRlIFxcXCJQbHVnIG5ldHdvcmsgdHJhZmZpYyB1bnRpbCByZWxlYXNlIChQTFVHKVxcXCJcXG4gMzY1OlxcdFxcdGhlbHBcXG4gMzY2OlxcdFxcbiAzNjc6XFx0XFx0ICBUaGlzIHF1ZXVpbmcgZGlzY2lwbGluZSBhbGxvd3MgdXNlcnNwYWNlIHRvIHBsdWcvdW5wbHVnIGEgbmV0d29ya1xcbiAzNjg6XFx0XFx0ICBvdXRwdXQgcXVldWUsIHVzaW5nIHRoZSBuZXRsaW5rIGludGVyZmFjZS4gIFdoZW4gaXQgcmVjZWl2ZXMgYW5cXG4gMzY5OlxcdFxcdCAgZW5xdWV1ZSBjb21tYW5kIGl0IGluc2VydHMgYSBwbHVnIGludG8gdGhlIG91dGJvdW5kIHF1ZXVlIHRoYXRcXG4gMzcwOlxcdFxcdCAgY2F1c2VzIGZvbGxvd2luZyBwYWNrZXRzIHRvIGVucXVldWUgdW50aWwgYSBkZXF1ZXVlIGNvbW1hbmQgYXJyaXZlc1xcbiAzNzE6XFx0XFx0ICBvdmVyIG5ldGxpbmssIGNhdXNpbmcgdGhlIHBsdWcgdG8gYmUgcmVtb3ZlZCBhbmQgcmVzdW1pbmcgdGhlIG5vcm1hbFxcbiAzNzI6XFx0XFx0ICBwYWNrZXQgZmxvdy5cXG4gMzczOlxcdFxcbiAzNzQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhbHNvIHByb3ZpZGVzIGEgZ2VuZXJpYyBcXFwibmV0d29yayBvdXRwdXQgYnVmZmVyaW5nXFxcIlxcbiAzNzU6XFx0XFx0ICBmdW5jdGlvbmFsaXR5IChha2Egb3V0cHV0IGNvbW1pdCksIHdoZXJlaW4gdXBvbiBhcnJpdmFsIG9mIGEgZGVxdWV1ZVxcbiAzNzY6XFx0XFx0ICBjb21tYW5kLCBvbmx5IHBhY2tldHMgdXAgdG8gdGhlIGZpcnN0IHBsdWcgYXJlIHJlbGVhc2VkIGZvciBkZWxpdmVyeS5cXG4gMzc3OlxcdFxcdCAgVGhlIFJlbXVzIEhBIHByb2plY3QgdXNlcyB0aGlzIG1vZHVsZSB0byBlbmFibGUgc3BlY3VsYXRpdmUgZXhlY3V0aW9uXFxuIDM3ODpcXHRcXHQgIG9mIHZpcnR1YWwgbWFjaGluZXMgYnkgYWxsb3dpbmcgdGhlIGdlbmVyYXRlZCBuZXR3b3JrIG91dHB1dCB0byBiZSByb2xsZWRcXG4gMzc5OlxcdFxcdCAgYmFjayBpZiBuZWVkZWQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjUwLjg2NTU3MjcyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjY2Njc1MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE5vIGNvbXBsZXggaW50ZXJkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zLlxuXG5SaWdodCwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgYXJlIGBORVRfU0NIRURgLCBgTkVUX1NDSF9HUkVEYCwgYW5kIGBORVRfU0NIX1BMVUdgLiBOb3csIEknbSB0aGlua2luZyBhYm91dCB0aGUga2V5IGZ1bmN0aW9ucyDigJMgdGhlIGZvY3VzIHN5bWJvbHMsIGlmIHlvdSB3aWxsIOKAkyByZWxhdGVkIHRvIHBhY2tldCBlbnF1ZXVpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyBgYmZpZm9fZW5xdWV1ZWAsIGBncmVkX2VucXVldWVgLCBhbmQgYHBsdWdfZW5xdWV1ZWAuXG5cbkhhbmcgb24gYSBzZWNvbmQuLi4gYGJmaWZvX2VucXVldWVgIGlzIGRlZmluZWQgYXMgc3RhdGljLCBidXQgaXQncyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIuIEludGVyZXN0aW5nLiBMZXQgbWUgc2VlLi4uIEkgc2VlIGBxZGlzY19lbnF1ZXVlYCBpcyBpbmxpbmUuIFNvIHRoZSByZWFsIGNhbGwgaXMgaGFwcGVuaW5nIHRocm91Z2ggdGhlIGBxLVx1MDAzZWVucXVldWVgIGZ1bmN0aW9uIHBvaW50ZXIuIE9rYXksIHNvIHRoYXQgY29uZmlybXMgaXQsIGBiZmlmb19lbnF1ZXVlYCwgYGdyZWRfZW5xdWV1ZWAsIGFuZCBgcGx1Z19lbnF1ZXVlYCBhcmUgaW5kZWVkIHRoZSBiZXN0IGZvY3VzIHN5bWJvbHMgZm9yIGVhY2ggb2YgdGhlaXIgcmVzcGVjdGl2ZSBzY2hlZHVsaW5nIGRpc2NpcGxpbmVzLlxuXG5MZXQncyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjay4uLiBJcyBgTkVUX1NDSF9GSUZPYCBhIGNvbmZpZz8gWWVzLCBpdCBpcywgYW5kIGl0J3Mgc2VsZWN0ZWQgYnkgYE5FVF9TQ0hFRGAuIFNvLCBJJ2xsIGFkZCB0aGF0IHRvIHRoZSBsaXN0LCB3aGljaCBtYWtlcyB0aGUgd2hvbGUgdGhpbmcgYSBiaXQgY2xlYXJlci5cblxuU28sIGxldCdzIG1ha2Ugc3VyZSBJIGRpZG4ndCBtaXNzIGFueXRoaW5nLlxuXG5Pa2F5LCBoZXJlIGFyZSBhbGwgb2YgdGhlIGNvbmZpZ3M6IGBORVRfU0NIRURgLCBgTkVUX1NDSF9HUkVEYCwgYE5FVF9TQ0hfUExVR2AsIGFuZCBgTkVUX1NDSF9GSUZPYC4gVGhhdCBjb3ZlcnMgaXQuIEkgdGhpbmsgSSd2ZSBnb3QgYSBwcmV0dHkgZ29vZCBoYW5kbGUgb24gdGhpbmdzIG5vdy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgdGhvc2UgYXJlIHRoZSByZXN1bHRzIHRoYXQgYXJlIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzczMSwiT3V0cHV0VG9rZW5zIjoxMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo1Ny41MzIyNTE0MzlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk4ODc3OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9HUkVEXCIsXG4gICAgXCJORVRfU0NIX1BMVUdcIixcbiAgICBcIk5FVF9TQ0hfRklGT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJmaWZvX2VucXVldWVcIixcbiAgICBcImdyZWRfZW5xdWV1ZVwiLFxuICAgIFwicGx1Z19lbnF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHFkaXNjcyAoRklGTywgR1JFRCwgUExVRykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIHRoZSByZXNwZWN0aXZlIHFkaXNjcyBhbmQgc2VuZGluZyBwYWNrZXRzLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfR1JFRFwiLFxuICAgIFwiTkVUX1NDSF9QTFVHXCIsXG4gICAgXCJORVRfU0NIX0ZJRk9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiZmlmb19lbnF1ZXVlXCIsXG4gICAgXCJncmVkX2VucXVldWVcIixcbiAgICBcInBsdWdfZW5xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBwYWNrZXQgZW5xdWV1ZSBmdW5jdGlvbnMgb2Ygc2V2ZXJhbCBxZGlzY3MgKEZJRk8sIEdSRUQsIFBMVUcpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjb25maWd1cmluZyB0aGUgcmVzcGVjdGl2ZSBxZGlzY3MgYW5kIHNlbmRpbmcgcGFja2V0cy4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjU3LjcyMjE0OTQyN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkyMDYyNTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjU3LjcyMzA0ODkwN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4OTE5NzIxNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGxvZ2ljIG9mIHNldmVyYWwgbmV0d29yayBzY2hlZHVsZXJzIChmaWZvLCBncmVkLCBwbHVnKS4gQnkgY2FzdGluZyB0aGUgcXVldWUgYmFja2xvZyB0byBgdTY0YCBiZWZvcmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoLCBpdCBwcmV2ZW50cyBhIDMyLWJpdCBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgYWxsb3cgdGhlIGJhY2tsb2cgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGxpbWl0LiBUaGlzIGlzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBleGNlc3NpdmUgbWVtb3J5IGNvbnN1bXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzICh3aGljaCBLQVNBTiB3b3VsZCBkZXRlY3QpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNjODJiYjJkY2Y0NDc1ZWQxNzZjNGFmYWVhYjY3YTBlODU5M2VlNGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDo1ODoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZmlmby5jIGIvbmV0L3NjaGVkL3NjaF9maWZvLmNcbmluZGV4IGU2YmZkMzlmZjMzOTYuLjFiNjM4OGQ1MDk2N2YgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9maWZvLmNcbkBAIC0xOSw3ICsxOSw3IEBAXG4gc3RhdGljIGludCBiZmlmb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4ge1xuLVx0aWYgKGxpa2VseShzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPVxuK1x0aWYgKGxpa2VseSgodTY0KXNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9XG4gXHRcdCAgIFJFQURfT05DRShzY2gtXHUwMDNlbGltaXQpKSlcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ncmVkLmMgYi9uZXQvc2NoZWQvc2NoX2dyZWQuY1xuaW5kZXggZmNjMWE0YzAzNjM2Mi4uZjA0ZjQyNWM2YzQ0OSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2dyZWQuY1xuQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgaW50IGdyZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHQgKiBpZiBubyBkZWZhdWx0IERQIGhhcyBiZWVuIGNvbmZpZ3VyZWQuIFRoaXNcbiBcdFx0XHQgKiBhbGxvd3MgZm9yIERQIGZsb3dzIHRvIGJlIGxlZnQgdW50b3VjaGVkLlxuIFx0XHRcdCAqL1xuLVx0XHRcdGlmIChsaWtlbHkoc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz1cbitcdFx0XHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz1cbiBcdFx0XHRcdFx0c2NoLVx1MDAzZWxpbWl0KSlcbiBcdFx0XHRcdHJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpO1xuIFx0XHRcdGVsc2VcbkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIGludCBncmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuLVx0aWYgKGdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz0gcS1cdTAwM2VsaW1pdCkge1xuK1x0aWYgKCh1NjQpZ3JlZF9iYWNrbG9nKHQsIHEsIHNjaCkgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPSBxLVx1MDAzZWxpbWl0KSB7XG4gXHRcdHEtXHUwMDNlYmFja2xvZyArPSBxZGlzY19wa3RfbGVuKHNrYik7XG4gXHRcdHJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jIGIvbmV0L3NjaGVkL3NjaF9wbHVnLmNcbmluZGV4IGNlZmI2NTIwMWUxNzguLmI2MGRkZmVlNmE2OGEgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3BsdWcuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9wbHVnLmNcbkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbnQgcGx1Z19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuIHtcbiBcdHN0cnVjdCBwbHVnX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG4gXG4tXHRpZiAobGlrZWx5KHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyArIHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBxLVx1MDAzZWxpbWl0KSkge1xuK1x0aWYgKGxpa2VseSgodTY0KXNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyArIHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBxLVx1MDAzZWxpbWl0KSkge1xuIFx0XHRpZiAoIXEtXHUwMDNldW5wbHVnX2luZGVmaW5pdGUpXG4gXHRcdFx0cS1cdTAwM2Vwa3RzX2N1cnJlbnRfZXBvY2grKztcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo1Ny43MjMwNTA4MjdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODkxOTY5NDM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJbnRlZ2VyIE92ZXJmbG93IEZpeCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHdoYXQncyBoYXBwZW5pbmcgaGVyZS4gVGhleSdyZSB0b3VjaGluZyBgYmZpZm9fZW5xdWV1ZWAsIGBncmVkX2VucXVldWVgLCBhbmQgYHBsdWdfZW5xdWV1ZWAgd2l0aGluIHRoZSBuZXR3b3JraW5nIHNjaGVkdWxlciBjb2RlIOKAkyBzcGVjaWZpY2FsbHksIGBzY2hfZmlmby5jYCwgYHNjaF9ncmVkLmNgLCBhbmQgYHNjaF9wbHVnLmNgLiBUaGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIGludm9sdmVzIGNhc3RpbmcgZWl0aGVyIGBzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2dgIG9yIHRoZSByZXN1bHQgb2YgYGdyZWRfYmFja2xvZ2AgdG8gYSBgdTY0YCBiZWZvcmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoIChlaXRoZXIgYHFkaXNjX3BrdF9sZW4oc2tiKWAgb3IgYHNrYi1cdTAwM2VsZW5gKSBhbmQgY29tcGFyaW5nIGFnYWluc3QgdGhlIHF1ZXVlJ3MgbGltaXQuXG5cblRoZSByZWFzb24gaXMgc2ltcGxlOiBpbnRlZ2VyIG92ZXJmbG93LiBNeSBndXQgcmVhY3Rpb24gd2FzIGNvcnJlY3Q7IHRoZXNlIGFyZSBhbG1vc3QgY2VydGFpbmx5IDMyLWJpdCBpbnRlZ2VycyAoYHUzMmApLiBXZSdyZSBhZGRpbmcgdGhlIGJhY2tsb2csIHdoaWNoIGlzIHJlcHJlc2VudGVkIGJ5IGEgYHUzMmAsIGFuZCB0aGUgaW5jb21pbmcgcGFja2V0J3MgbGVuZ3RoLCBhbHNvIGEgYHUzMmAuIFdpdGhvdXQgdGhlIGNhc3QgdG8gYHU2NGAsIHRoZSBhZGRpdGlvbiB3b3VsZCBiZSBwZXJmb3JtZWQgd2l0aGluIDMyLWJpdHMuIElmIHRoZSBzdW0gb2YgdGhlIGJhY2tsb2cgYW5kIHBhY2tldCBsZW5ndGggZXhjZWVkZWQgdGhlIG1heGltdW0gdmFsdWUgZm9yIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIsIHRoZSByZXN1bHQgd291bGQgd3JhcCBhcm91bmQuIFRoaXMgd291bGQgbGVhZCB0byBhIHZhbHVlIHNtYWxsZXIgdGhhbiB0aGUgcXVldWUncyBsaW1pdCBldmVuIHRob3VnaCBpdCAqc2hvdWxkKiBiZSBleGNlZWRpbmcgaXQsIGVzc2VudGlhbGx5IGFsbG93aW5nIG1vcmUgdHJhZmZpYyBpbnRvIHRoZSBxdWV1ZSB0aGFuIGlzIGNvbmZpZ3VyZWQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiwgYW5kIHRoZSByZWFzb24gSSdtIGhlcmU6IGRvZXMgdGhpcyBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBOby4gQWJzb2x1dGVseSBub3QuIFRoaXMgZml4IGlzIHB1cmVseSBhYm91dCBwcmV2ZW50aW5nIGFuIGludGVnZXIgb3ZlcmZsb3csIHdoaWNoIGNhbiBjYXVzZSBsb2dpYyBlcnJvcnMgYW5kIHBvdGVudGlhbGx5LCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBIb3dldmVyLCBLTVNBTiBpc24ndCBnb2luZyB0byBiZSB1c2VmdWwgaGVyZS4gS01TQU4gaXMgZm9yIGRldGVjdGluZyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSW50ZWdlciBvdmVyZmxvdyBjYW4gbGVhZCB0byBvdGhlciBpc3N1ZXMsIGxpa2Ugb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgYnV0IHRoYXQgd291bGQgZmFsbCB1bmRlciBLQVNBTidzIHB1cnZpZXcuXG5cblRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZywgSSBxdWlja2x5IHZlcmlmaWVkIHRoZSB0eXBlcy4gYHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZ2AgaXMgaW5kZWVkIGEgYF9fdTMyYCwgYHFkaXNjX3BrdF9sZW4oc2tiKWAgcmV0dXJucyBhIGB1MzJgLCBhbmQgdGhlIGBzY2gtXHUwMDNlbGltaXRgIGlzIGEgYHUzMmAuIENhc3RpbmcgdGhlIG9wZXJhbmRzIHRvIGB1NjRgIGJlZm9yZSBhZGRpdGlvbiBwcmV2ZW50cyB0aGUgYHUzMiArIHUzMmAgb3ZlcmZsb3cgaXNzdWUuIEl0J3MgYSBjbGVhbiBhbmQgc3RyYWlnaHRmb3J3YXJkIGludGVnZXIgb3ZlcmZsb3cgYnVnIGZpeC5cblxuVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEknbGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjUsIk91dHB1dFRva2VucyI6MTUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTk6MDYuNjQyNzQ5Mjg1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGxvZ2ljIG9mIHNldmVyYWwgbmV0d29yayBzY2hlZHVsZXJzIChmaWZvLCBncmVkLCBwbHVnKS4gQnkgY2FzdGluZyB0aGUgcXVldWUgYmFja2xvZyB0byBgdTY0YCBiZWZvcmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoLCBpdCBwcmV2ZW50cyBhIDMyLWJpdCBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgYWxsb3cgdGhlIGJhY2tsb2cgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGxpbWl0LiBUaGlzIGlzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBleGNlc3NpdmUgbWVtb3J5IGNvbnN1bXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzICh3aGljaCBLQVNBTiB3b3VsZCBkZXRlY3QpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGFja2V0IGVucXVldWUgbG9naWMgb2Ygc2V2ZXJhbCBuZXR3b3JrIHNjaGVkdWxlcnMgKGZpZm8sIGdyZWQsIHBsdWcpLiBCeSBjYXN0aW5nIHRoZSBxdWV1ZSBiYWNrbG9nIHRvIGB1NjRgIGJlZm9yZSBhZGRpbmcgdGhlIHBhY2tldCBsZW5ndGgsIGl0IHByZXZlbnRzIGEgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBhbGxvdyB0aGUgYmFja2xvZyB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbGltaXQuIFRoaXMgaXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24gb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMgKHdoaWNoIEtBU0FOIHdvdWxkIGRldGVjdCkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow4xvcl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 10:03:37 +0000 UTC FinishedAt: 2026-08-18 10:59:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "21040c7f931502070dcc66bb0f1aeed07dec032b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_GRED", "NET_SCH_PLUG", "NET_SCH_FIFO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "21040c7f931502070dcc66bb0f1aeed07dec032b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_GRED", "NET_SCH_PLUG", "NET_SCH_FIFO" ], "series_id": "db72e364-2f00-4b68-9cb1-7aa5d87c4252" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bfifo_enqueue", "gred_enqueue", "plug_enqueue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0dSRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QTFVHJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRklGTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JmaWZvX2VucXVldWUmIzM0OywKICAgICYjMzQ7Z3JlZF9lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3BsdWdfZW5xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGFja2V0IGVucXVldWUgbG9naWMgb2Ygc2V2ZXJhbCBuZXR3b3JrIHNjaGVkdWxlcnMgKGZpZm8sIGdyZWQsIHBsdWcpLiBCeSBjYXN0aW5nIHRoZSBxdWV1ZSBiYWNrbG9nIHRvIGB1NjRgIGJlZm9yZSBhZGRpbmcgdGhlIHBhY2tldCBsZW5ndGgsIGl0IHByZXZlbnRzIGEgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBhbGxvdyB0aGUgYmFja2xvZyB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbGltaXQuIFRoaXMgaXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24gb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMgKHdoaWNoIEtBU0FOIHdvdWxkIGRldGVjdCkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBwYWNrZXQgZW5xdWV1ZSBmdW5jdGlvbnMgb2Ygc2V2ZXJhbCBxZGlzY3MgKEZJRk8sIEdSRUQsIFBMVUcpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjb25maWd1cmluZyB0aGUgcmVzcGVjdGl2ZSBxZGlzY3MgYW5kIHNlbmRpbmcgcGFja2V0cy4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjYzgyYmIyZGNmNDQ3NWVkMTc2YzRhZmFlYWI2N2EwZTg1OTNlZTRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTA6NTg6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9maWZvLmMgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuaW5kZXggZTZiZmQzOWZmMzM5Ni4uMWI2Mzg4ZDUwOTY3ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZmlmby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuQEAgLTE5LDcgJiM0MzsxOSw3IEBAXG4gc3RhdGljIGludCBiZmlmb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4ge1xuLVx0aWYgKGxpa2VseShzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz1cbiYjNDM7XHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9XG4gXHRcdCAgIFJFQURfT05DRShzY2gtXHUwMDNlbGltaXQpKSlcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ncmVkLmMgYi9uZXQvc2NoZWQvc2NoX2dyZWQuY1xuaW5kZXggZmNjMWE0YzAzNjM2Mi4uZjA0ZjQyNWM2YzQ0OSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2dyZWQuY1xuQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgc3RhdGljIGludCBncmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0ICogaWYgbm8gZGVmYXVsdCBEUCBoYXMgYmVlbiBjb25maWd1cmVkLiBUaGlzXG4gXHRcdFx0ICogYWxsb3dzIGZvciBEUCBmbG93cyB0byBiZSBsZWZ0IHVudG91Y2hlZC5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpZiAobGlrZWx5KHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPVxuJiM0MztcdFx0XHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9XG4gXHRcdFx0XHRcdHNjaC1cdTAwM2VsaW1pdCkpXG4gXHRcdFx0XHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcbiBcdFx0XHRlbHNlXG5AQCAtMjQ0LDcgJiM0MzsyNDQsNyBAQCBzdGF0aWMgaW50IGdyZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRpZiAoZ3JlZF9iYWNrbG9nKHQsIHEsIHNjaCkgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz0gcS1cdTAwM2VsaW1pdCkge1xuJiM0MztcdGlmICgodTY0KWdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9IHEtXHUwMDNlbGltaXQpIHtcbiBcdFx0cS1cdTAwM2ViYWNrbG9nICYjNDM7PSBxZGlzY19wa3RfbGVuKHNrYik7XG4gXHRcdHJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jIGIvbmV0L3NjaGVkL3NjaF9wbHVnLmNcbmluZGV4IGNlZmI2NTIwMWUxNzguLmI2MGRkZmVlNmE2OGEgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3BsdWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9wbHVnLmNcbkBAIC04OSw3ICYjNDM7ODksNyBAQCBzdGF0aWMgaW50IHBsdWdfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiB7XG4gXHRzdHJ1Y3QgcGx1Z19zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xuIFxuLVx0aWYgKGxpa2VseShzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgJiM0Mzsgc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHEtXHUwMDNlbGltaXQpKSB7XG4mIzQzO1x0aWYgKGxpa2VseSgodTY0KXNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyAmIzQzOyBza2ItXHUwMDNlbGVuIFx1MDAzYz0gcS1cdTAwM2VsaW1pdCkpIHtcbiBcdFx0aWYgKCFxLVx1MDAzZXVucGx1Z19pbmRlZmluaXRlKVxuIFx0XHRcdHEtXHUwMDNlcGt0c19jdXJyZW50X2Vwb2NoJiM0MzsmIzQzOztcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0dSRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QTFVHJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRklGTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JmaWZvX2VucXVldWUmIzM0OywKICAgICYjMzQ7Z3JlZF9lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3BsdWdfZW5xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgcGFja2V0IGVucXVldWUgZnVuY3Rpb25zIG9mIHNldmVyYWwgcWRpc2NzIChGSUZPLCBHUkVELCBQTFVHKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgdGhlIHJlc3BlY3RpdmUgcWRpc2NzIGFuZCBzZW5kaW5nIHBhY2tldHMuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2M4MmJiMmRjZjQ0NzVlZDE3NmM0YWZhZWFiNjdhMGU4NTkzZWU0YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDE4IDEwOjU4OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9maWZvLmMgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uYwppbmRleCBlNmJmZDM5ZmYzMzk2Li4xYjYzODhkNTA5NjdmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZpZm8uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uYwpAQCAtMTksNyAmIzQzOzE5LDcgQEAKIHN0YXRpYyBpbnQgYmZpZm9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJCSBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpCiB7Ci0JaWYgKGxpa2VseShzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSAmbHQ7PQomIzQzOwlpZiAobGlrZWx5KCh1NjQpc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0KIAkJICAgUkVBRF9PTkNFKHNjaC0mZ3Q7bGltaXQpKSkKIAkJcmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jIGIvbmV0L3NjaGVkL3NjaF9ncmVkLmMKaW5kZXggZmNjMWE0YzAzNjM2Mi4uZjA0ZjQyNWM2YzQ0OSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9ncmVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9ncmVkLmMKQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgc3RhdGljIGludCBncmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsCiAJCQkgKiBpZiBubyBkZWZhdWx0IERQIGhhcyBiZWVuIGNvbmZpZ3VyZWQuIFRoaXMKIAkJCSAqIGFsbG93cyBmb3IgRFAgZmxvd3MgdG8gYmUgbGVmdCB1bnRvdWNoZWQuCiAJCQkgKi8KLQkJCWlmIChsaWtlbHkoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0KJiM0MzsJCQlpZiAobGlrZWx5KCh1NjQpc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0KIAkJCQkJc2NoLSZndDtsaW1pdCkpCiAJCQkJcmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7CiAJCQllbHNlCkBAIC0yNDQsNyAmIzQzOzI0NCw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLAogCQlicmVhazsKIAl9CiAKLQlpZiAoZ3JlZF9iYWNrbG9nKHQsIHEsIHNjaCkgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpICZsdDs9IHEtJmd0O2xpbWl0KSB7CiYjNDM7CWlmICgodTY0KWdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSAmbHQ7PSBxLSZndDtsaW1pdCkgewogCQlxLSZndDtiYWNrbG9nICYjNDM7PSBxZGlzY19wa3RfbGVuKHNrYik7CiAJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOwogCX0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jIGIvbmV0L3NjaGVkL3NjaF9wbHVnLmMKaW5kZXggY2VmYjY1MjAxZTE3OC4uYjYwZGRmZWU2YTY4YSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9wbHVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9wbHVnLmMKQEAgLTg5LDcgJiM0Mzs4OSw3IEBAIHN0YXRpYyBpbnQgcGx1Z19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLAogewogCXN0cnVjdCBwbHVnX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7CiAKLQlpZiAobGlrZWx5KHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJiM0Mzsgc2tiLSZndDtsZW4gJmx0Oz0gcS0mZ3Q7bGltaXQpKSB7CiYjNDM7CWlmIChsaWtlbHkoKHU2NClzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICYjNDM7IHNrYi0mZ3Q7bGVuICZsdDs9IHEtJmd0O2xpbWl0KSkgewogCQlpZiAoIXEtJmd0O3VucGx1Z19pbmRlZmluaXRlKQogCQkJcS0mZ3Q7cGt0c19jdXJyZW50X2Vwb2NoJiM0MzsmIzQzOzsKIAkJcmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MjgKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiAyODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSW50ZWdlciBPdmVyZmxvdyBCdWcgRml4KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9zY2hlZC9zY2hfZmlmby5jYCwgYG5ldC9zY2hlZC9zY2hfZ3JlZC5jYCwgYW5kIGBuZXQvc2NoZWQvc2NoX3BsdWcuY2AuIFRoZSBjb3JlIG9mIGl0IGlzIGEgY2FzdCBvZiBgc2NoLSZndDtxc3RhdHMuYmFja2xvZ2AgdG8gYSBgdTY0YCBiZWZvcmUgYWRkaW5nIGVpdGhlciBgcWRpc2NfcGt0X2xlbihza2IpYCBvciBgc2tiLSZndDtsZW5gLiBSaWdodCwgY2xhc3NpYyBpbnRlZ2VyIG92ZXJmbG93IHByZXZlbnRpb24gaW4gcGFja2V0IHNjaGVkdWxpbmcg4oCTIEkgc2VlIHRoYXQgaW1tZWRpYXRlbHkuIFRoZXkmIzM5O3JlIGFkZGluZyB0aGUgcGFja2V0IGxlbmd0aCB0byB0aGUgYmFja2xvZywgYW5kIHRoZSBjYXN0IHNob3VsZCBwcmV2ZW50IHdyYXBhcm91bmQuIEEgZ29vZCwgZnVuY3Rpb25hbCBmaXguIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhleSYjMzk7dmUgbW9kaWZpZWQgYXJlIGBiZmlmb19lbnF1ZXVlYCBpbiB0aGUgRklGTyBxZGlzYywgYGdyZWRfZW5xdWV1ZWAgZm9yIEdSRUQsIGFuZCBgcGx1Z19lbnF1ZXVlYCBmb3IgdGhlIHBsdWcgcWRpc2MuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGFyZSB0aGVzZSBldmVuIHdvcnRoIGZ1enppbmc/IFllcywgYWJzb2x1dGVseS4gVGhlc2UgYXJlICplbnF1ZXVlKiBmdW5jdGlvbnMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIGNvcmUgdG8gdGhlIHBhY2tldCBzY2hlZHVsaW5nIHByb2Nlc3Mgd2l0aGluIHRoZSBxZGlzY3MuIFRoZXkgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCBlaXRoZXIgZGlyZWN0bHkgYnkgc2VuZGluZyBwYWNrZXRzIHRocm91Z2ggdGhlIHJlbGV2YW50IGludGVyZmFjZXMsIG9yIG1vcmUgaW5kaXJlY3RseSB2aWEgY29uZmlndXJhdGlvbiBjYWxscyB0byB0aGVzZSBxZGlzY3MgdGhyb3VnaCwgc2F5LCBgdGNgLiBTaW5jZSBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBhbiBvdmVyZmxvdyBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHNlcmlvdXMgaXNzdWVzLCBzbyBpdCYjMzk7cyB3b3J0aCBhIGRlZXAgZGl2ZS4KClRpbWUgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBzY2hfZmlmby5jYC4uLiB0aGF0JiMzOTtzIHByb2JhYmx5IGVpdGhlciBidWlsdC1pbiBvciBgTkVUX1NDSF9GSUZPYC4gV2FpdCwgeWVhaCwgRklGTyBpcyB1c3VhbGx5IGJ1aWx0LWluLCBzbyB0aGF0JiMzOTtzIHByb2JhYmx5IGZpbmUuIE5vIHNwZWNpZmljIG1vZHVsZSB0byB3b3JyeSBhYm91dCB1c3VhbGx5LiBPa2F5LCBgc2NoX2dyZWQuY2Agc2VlbXMgdG8gbWFwIHRvIGBORVRfU0NIX0dSRURgIGFuZCBgc2NoX3BsdWcuY2AgbWFwcyB0byBgTkVUX1NDSF9QTFVHYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhvc2Ugd2l0aCBhIHF1aWNrIGdyZXAganVzdCB0byBtYWtlIHN1cmUuIEkgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfU0NIX0dSRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE3Mj1jb25maWcgTkVUX1NDSF9UQVBSSU9cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXG5uZXQvc2NoZWQvS2NvbmZpZzoxODQ6Y29uZmlnIE5FVF9TQ0hfR1JFRFxubmV0L3NjaGVkL0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfTkVUX1NDSF9SRUQpXHQmIzQzOz0gc2NoX3JlZC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX05FVF9TQ0hfR1JFRClcdCYjNDM7PSBzY2hfZ3JlZC5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMzktb2JqLSQoQ09ORklHX05FVF9TQ0hfSU5HUkVTUylcdCYjNDM7PSBzY2hfaW5ncmVzcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX1NDSF9QTFVHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz0zNDc9Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM2Mi1cbm5ldC9zY2hlZC9LY29uZmlnOjM2Mzpjb25maWcgTkVUX1NDSF9QTFVHXG5uZXQvc2NoZWQvS2NvbmZpZy0zNjQtXHR0cmlzdGF0ZSBcJiMzNDtQbHVnIG5ldHdvcmsgdHJhZmZpYyB1bnRpbCByZWxlYXNlIChQTFVHKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT00Nz1vYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXHQmIzQzOz0gc2NoX2Ryci5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcdCYjNDM7PSBzY2hfcGx1Zy5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDktb2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVx0JiM0Mzs9IHNjaF9ldHMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaF9maWZvLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT0zMz1vYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVx0JiM0Mzs9IGFjdF9nYXRlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfTkVUX1NDSF9GSUZPKVx0JiM0Mzs9IHNjaF9maWZvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0zNS1vYmotJChDT05GSUdfTkVUX1NDSF9IVEIpXHQmIzQzOz0gc2NoX2h0Yi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg2MgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSHVudGluZyBEb3duIE5FVF9TQ0hfRklGTyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gYE5FVF9TQ0hfRklGT2AuIFRoYXQgbWVhbnMgSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGVyIGNvbXBvbmVudHMuICBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9gIGRpcmVjdG9yeS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IHRoYXQgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCB0aGVyZS4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIG1haW5saW5lIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiByZXNpZGVzLCBzbyB0aGF0IHNlZW1zIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIFRpbWUgdG8gZGl2ZSBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEkgZXhwZWN0IGl0IHRvIGJlIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgZmluZCwgZ2l2ZW4gaXRzIG5hbWUuIEhvcGVmdWxseSBpdCYjMzk7cyB3ZWxsLWRvY3VtZW50ZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX1NDSF9GSUZPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz02PW1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg6XHRzZWxlY3QgTkVUX1NDSF9GSUZPXG5uZXQvc2NoZWQvS2NvbmZpZy05LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTk2Nj1lbmRpZiAjIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctOTY3LVxubmV0L3NjaGVkL0tjb25maWc6OTY4OmNvbmZpZyBORVRfU0NIX0ZJRk9cbm5ldC9zY2hlZC9LY29uZmlnLTk2OS1cdGJvb2xcbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9MzM9b2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCYjNDM7PSBhY3RfZ2F0ZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcdCYjNDM7PSBzY2hfZmlmby5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMzUtb2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVx0JiM0Mzs9IHNjaF9odGIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMDMKCQkJCQkJCW91dHB1dDogOTkKCQkJCQkJCXRob3VnaHRzOiAxOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYE5FVF9TQ0hfRklGT2AgaXMgYmVpbmcgc2VsZWN0ZWQgYmVjYXVzZSBvZiBgTkVUX1NDSEVEYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBiYXNpYyBxdWV1ZWluZyBkaXNjaXBsaW5lLiBMb29raW5nIGF0IHRoZSBjb25maWdzLCBJIG5lZWQgdG8gZW5hYmxlIGBORVRfU0NIX0dSRURgLCBgTkVUX1NDSF9QTFVHYCwgYW5kLCBvZiBjb3Vyc2UsIGBORVRfU0NIRURgIGl0c2VsZi4gSGFuZyBvbiwgYE5FVF9TQ0hFRGAgaXMgdGhlIHBhcmVudCwgc28gdGhhdCYjMzk7cyB0aGUgYmFzZSByZXF1aXJlbWVudC4gR290IGl0LgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiBhIGZldyBrZXkgc3ltYm9sczogYGJmaWZvX2VucXVldWVgLCBgZ3JlZF9lbnF1ZXVlYCwgYW5kIGBwbHVnX2VucXVldWVgLiBJJiMzOTttIGN1cmlvdXMgYWJvdXQgaG93IGBiZmlmb19lbnF1ZXVlYCBpcyBpbXBsZW1lbnRlZC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyBzdGF0aWMgb3IgaWYgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIGhvdyBpdOKAmXMgYmVpbmcgY2FsbGVkLCB3aGljaCB3aWxsIGlsbHVtaW5hdGUgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLgoKTGV0IG1lIGNoZWNrIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBuZXQvc2NoZWQvc2NoX2ZpZm8uY2AuIEFoYSwgdGhlcmUgaXQgaXM6IGBzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlgLiBSaWdodCwgaXQmIzM5O3MgYSBgc3RhdGljYCBmdW5jdGlvbi4gU28gaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLiBJcyBpdCB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBzb21ld2hlcmU/IFRoYXQgd291bGQgYmUgdGhlIHVzdWFsIHBhdHRlcm4uIEl0IHdvdWxkIGJlIGxpbmtlZCB0byBhIGBzdHJ1Y3QgUWRpc2Nfb3BzYCBpbnN0YW5jZS4gT2theSwgdGltZSB0byBsb29rIGZvciBgUWRpc2Nfb3BzYCB3aXRoaW4gYHNjaF9maWZvLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiZmlmb19lbnF1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9maWZvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9maWZvLmMtMTgtXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoxOTpzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yMC1cdFx0XHQgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxuLS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jPTIwMj1zdHJ1Y3QgUWRpc2Nfb3BzIGJmaWZvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwNC1cdC5wcml2X3NpemVcdD1cdDAsXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoyMDU6XHQuZW5xdWV1ZVx0PVx0YmZpZm9fZW5xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwNi1cdC5kZXF1ZXVlXHQ9XHRxZGlzY19kZXF1ZXVlX2hlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dyZWRfZW5xdWV1ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ3JlZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ3JlZC5jPTE1Mj1zdGF0aWMgYm9vbCBncmVkX3Blcl92cV9yZWRfZmxhZ3NfdXNlZChzdHJ1Y3QgZ3JlZF9zY2hlZCAqdGFibGUpXG4tLVxubmV0L3NjaGVkL3NjaF9ncmVkLmMtMTY0LVxubmV0L3NjaGVkL3NjaF9ncmVkLmM6MTY1OnN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF9ncmVkLmMtMTY2LVx0XHRcdHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcbi0tXG5uZXQvc2NoZWQvc2NoX2dyZWQuYz05MjE9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZ3JlZF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2dyZWQuYy05MjMtXHQucHJpdl9zaXplXHQ9XHRzaXplb2Yoc3RydWN0IGdyZWRfc2NoZWQpLFxubmV0L3NjaGVkL3NjaF9ncmVkLmM6OTI0Olx0LmVucXVldWVcdD1cdGdyZWRfZW5xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTkyNS1cdC5kZXF1ZXVlXHQ9XHRncmVkX2RlcXVldWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsdWdfZW5xdWV1ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfcGx1Zy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfcGx1Zy5jPTU2PXN0cnVjdCBwbHVnX3NjaGVkX2RhdGEge1xuLS1cbm5ldC9zY2hlZC9zY2hfcGx1Zy5jLTg2LVxubmV0L3NjaGVkL3NjaF9wbHVnLmM6ODc6c3RhdGljIGludCBwbHVnX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3BsdWcuYy04OC1cdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4tLVxubmV0L3NjaGVkL3NjaF9wbHVnLmM9MjA1PXN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBsdWdfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA3LVx0LnByaXZfc2l6ZSAgID0gICAgICAgc2l6ZW9mKHN0cnVjdCBwbHVnX3NjaGVkX2RhdGEpLFxubmV0L3NjaGVkL3NjaF9wbHVnLmM6MjA4Olx0LmVucXVldWUgICAgID0gICAgICAgcGx1Z19lbnF1ZXVlLFxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA5LVx0LmRlcXVldWUgICAgID0gICAgICAgcGx1Z19kZXF1ZXVlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTkwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGdW5jdGlvbiBTeW1ib2wgVmlzaWJpbGl0eSBmb3IgRWZmaWNpZW50IENvZGUgUHJvZmlsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXkmIzM5O2xsIGJlIHVzZWZ1bCBmb3IgcHJvZmlsaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgc2luY2UgdGhleSYjMzk7cmUgZGVjbGFyZWQgYXMgc3RhdGljIGZ1bmN0aW9ucywgdGhleSBtaWdodCBub3QgYmUgdGhlIGJlc3QgY2FuZGlkYXRlcyBhcyBmb2N1cyBzeW1ib2xzLCBlc3BlY2lhbGx5IGlmIHRoZSBjb21waWxlciBkZWNpZGVzIHRvIGlubGluZSB0aGVtLiBUaGF0IHdvdWxkIG1ha2UgdGhlbSBkaXNhcHBlYXIsIGFuZCBJIHdvdWxkbiYjMzk7dCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MgdG8gd29yayB3aXRoLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgdGhleSYjMzk7cmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgdGhleSAqd29uJiMzOTt0KiBiZSBpbmxpbmVkLiBTaW5jZSB0aGV5IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzIGJlY2F1c2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHRoYXQgbWFrZXMgdGhlbSBnb29kIHRhcmdldHMuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gU2luY2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHRoYXQgbWFrZXMgdGhlbSBub24taW5saW5lZC4gR29vZCEKCkkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmsgYGJmaWZvX2VucXVldWVgLCBgZ3JlZF9lbnF1ZXVlYCwgYW5kIGBwbHVnX2VucXVldWVgIGFyZSBwZXJmZWN0bHkgZmluZSBvcHRpb25zIGFzIGZvY3VzIHN5bWJvbHMgYmVjYXVzZSB0aGV5JiMzOTtyZSBub3QgaW5saW5lZCwgd2hpY2ggZ2l2ZXMgdGhlbSB1bmlxdWUgc3ltYm9sIGFkZHJlc3Nlcy4gVGhleSYjMzk7cmUgZ29vZCB0byBnby4KCk5vdywgd2FpdCBhIHNlY29uZC4uLiBhcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBjb25zaWRlcmluZz8gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBnb3QgYE5FVF9TQ0hfR1JFRGAsIGBORVRfU0NIX1BMVUdgLCBhbmQgdGhlbiB0aGUgb3ZlcmFyY2hpbmcgYE5FVF9TQ0hFRGAuIEkgbmVlZCB0byBjaGVjayBpZiBgTkVUX1NDSEVEYCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBzaG91bGQgcHJvYmFibHkgaW52ZXN0aWdhdGUgdGhhdCBhbmQgZW5zdXJlIEkmIzM5O20gZ2V0dGluZyB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqSnVzdCBhIFNpbXBsZSBCb29sZWFuKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBoZXJlLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIGl0LCBhdCBsZWFzdCBpbml0aWFsbHkuIFN0cmFpZ2h0Zm9yd2FyZC4gTm8gbmVlZCB0byBvdmVyY29tcGxpY2F0ZSB0aGluZ3MgeWV0LiBQcm9iYWJseSBkZWFsaW5nIHdpdGggYSBzaW1wbGUgdHJ1ZS9mYWxzZSBjb25kaXRpb24uCgpPa2F5LCBub3cgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgTkVUX1NDSF9HUkVEYCBjb25maWd1cmF0aW9uIGVsZW1lbnQgaW50ZXJhY3RzIHdpdGggdGhpcyBgYm9vbGAuIFNwZWNpZmljYWxseSwgd2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHJlbHkgb24gaXQgb3IgYXJlIGluZmx1ZW5jZWQgYnkgaXQ/IEdvdHRhIHNlZSBob3cgdGhpcyBib29sZWFuIGltcGFjdHMgdGhlIGJyb2FkZXIgc2NoZWR1bGluZyBhbmQgZ3JhZGluZyBsb2dpYyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgY29udGV4dC4gVGhlIGRldGFpbHMgbWF0dGVyLCBhcyBhbHdheXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX0dSRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE3Mj1jb25maWcgTkVUX1NDSF9UQVBSSU9cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXG5uZXQvc2NoZWQvS2NvbmZpZzoxODQ6Y29uZmlnIE5FVF9TQ0hfR1JFRFxubmV0L3NjaGVkL0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgTkVUX1NDSF9HUkVEYCBvcHRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBHUkVEIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHB1bGwgdXAgYG5ldC9zY2hlZC9LY29uZmlnYCBhbmQgemVybyBpbiBvbiB0aGUgYE5FVF9TQ0hfR1JFRGAgY29uZmlndXJhdGlvbiBvcHRpb24uIFJpZ2h0LCBoZXJlIGl0IGlzLiBUaGlzIHNlY3Rpb24gd2lsbCBkZWZpbmUgd2hldGhlciB0aGUgR1JFRCAoR2VuZXJpYyBSRUQpIHRyYWZmaWMgc2hhcGVyIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbC4gQ2xlYXJseSwgdGhpcyBpcyBhIGZhaXJseSBsb3ctbGV2ZWwsIGNvcmUgcGllY2Ugb2YgbmV0d29yayBmdW5jdGlvbmFsaXR5IC0gcGFydCBvZiB0aGUgc2hhcGluZyBhbmQgcXVldWUgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCYjMzk7cyBwcmVzZW50ZWQgaW4gdGhlIGNvbmZpZyBmaWxlLiBJcyBpdCBkZXBlbmRlbnQgb24gb3RoZXIgZmVhdHVyZXM/IEFueSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGlmIEkgcGxhbiBvbiBlbmFibGluZyBvciBkaXNhYmxpbmcgaXQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZT8gQXJlIHRoZXJlIGFueSBjb21tZW50cyBvciBleHBsYW5hdGlvbnMgdGhhdCBnaXZlIGRlZXBlciBpbnNpZ2h0IGludG8gd2hlbiBHUkVEIHdvdWxkIGJlIHBhcnRpY3VsYXJseSB1c2VmdWw/IE9mdGVuLCB0aGUgS2NvbmZpZyBmaWxlcyBpbmNsdWRlIHN1YnRsZSBoaW50cyBhYm91dCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvciBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgc2NoZWR1bGluZyBkaXNjaXBsaW5lcy4gSSYjMzk7bSBob3BpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNvbnN0cmFpbnRzIG9mIEdSRUQgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGhpbiB0aGUgbGFyZ2VyIHF1ZXVpbmcgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgb3RoZXIgYWxnb3JpdGhtcywgc3VjaCBhcyBSRUQgYW5kIEVDTiwgdGhhdCBtYXkgaW1wYWN0IGNvbmdlc3Rpb24gY29udHJvbCBhbmQgcXVldWUgbWFuYWdlbWVudC4gSSYjMzk7bSBrZWVuIHRvIGdyYXNwIHRoZSBudWFuY2VzIGhlcmUsIGFuZCBzZWUgaG93IHRoaXMgaXMgcHJlc2VudGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgbmV0d29ya2luZyBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFxuIDE4MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTgyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxuIDE4MzpcdFxuIDE4NDpcdGNvbmZpZyBORVRfU0NIX0dSRURcbiAxODU6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcJiMzNDtcbiAxODY6XHRcdGhlbHBcbiAxODc6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvblxuIDE4ODpcdFx0ICAoR1JFRCkgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzXG4gMTg5Olx0XHQgIChzZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfcmVkLmNcdTAwM2UgZm9yIGRldGFpbHMgYW5kXG4gMTkwOlx0XHQgIHJlZmVyZW5jZXMgYWJvdXQgdGhlIGFsZ29yaXRobSkuXG4gMTkxOlx0XG4gMTkyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxOTM6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF9ncmVkLlxuIDE5NDpcdFxuIDE5NTpcdGNvbmZpZyBORVRfU0NIX05FVEVNXG4gMTk2Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGVtdWxhdG9yIChORVRFTSlcJiMzNDtcbiAxOTc6XHRcdGhlbHBcbiAxOTg6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZW11bGF0ZSBuZXR3b3JrIGRlbGF5LCBsb3NzLCBhbmQgcGFja2V0XG4gMTk5Olx0XHQgIHJlLW9yZGVyaW5nLiBUaGlzIGlzIG9mdGVuIHVzZWZ1bCB0byBzaW11bGF0ZSBuZXR3b3JrcyB3aGVuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBORVRfU0NIX1BMVUdgIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCk9rYXksIG5vIGltbWVkaWF0ZSByb2FkYmxvY2tzIG9yIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCDigJMgdGhhdCYjMzk7cyBnb29kLiBUaW1lIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlIGFuZCB6ZXJvIGluIG9uIHRoZSBgTkVUX1NDSF9QTFVHYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgYWJvdXQgaXQsIGhvdyBpdCYjMzk7cyBkZWZpbmVkLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIGl0IGludGVyYWN0cyB3aXRoLiBVbmRlcnN0YW5kaW5nIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciB0cmFmZmljIGNvbnRyb2wgZnJhbWV3b3JrIGlzIGtleSBoZXJlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IGl0cyBwdXJwb3NlLCBwb3RlbnRpYWwgaW1wYWN0LCBhbmQgbWF5YmUgZXZlbiBzb21lIGhpbnRzIGFib3V0IHdoZW4gaXQgbWlnaHQgYmUgdXNlZnVsIG9yIHJlbGV2YW50LiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGZvciBnYWluaW5nIGluc2lnaHRzIGludG8gdGhlIHdvcmtpbmdzIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM2MDpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gMzYxOlx0XHQgIGNhbGxlZCBzY2hfaW5ncmVzcyB3aXRoIGFsaWFzIG9mIHNjaF9jbHNhY3QuXG4gMzYyOlx0XG4gMzYzOlx0Y29uZmlnIE5FVF9TQ0hfUExVR1xuIDM2NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UGx1ZyBuZXR3b3JrIHRyYWZmaWMgdW50aWwgcmVsZWFzZSAoUExVRylcJiMzNDtcbiAzNjU6XHRcdGhlbHBcbiAzNjY6XHRcbiAzNjc6XHRcdCAgVGhpcyBxdWV1aW5nIGRpc2NpcGxpbmUgYWxsb3dzIHVzZXJzcGFjZSB0byBwbHVnL3VucGx1ZyBhIG5ldHdvcmtcbiAzNjg6XHRcdCAgb3V0cHV0IHF1ZXVlLCB1c2luZyB0aGUgbmV0bGluayBpbnRlcmZhY2UuICBXaGVuIGl0IHJlY2VpdmVzIGFuXG4gMzY5Olx0XHQgIGVucXVldWUgY29tbWFuZCBpdCBpbnNlcnRzIGEgcGx1ZyBpbnRvIHRoZSBvdXRib3VuZCBxdWV1ZSB0aGF0XG4gMzcwOlx0XHQgIGNhdXNlcyBmb2xsb3dpbmcgcGFja2V0cyB0byBlbnF1ZXVlIHVudGlsIGEgZGVxdWV1ZSBjb21tYW5kIGFycml2ZXNcbiAzNzE6XHRcdCAgb3ZlciBuZXRsaW5rLCBjYXVzaW5nIHRoZSBwbHVnIHRvIGJlIHJlbW92ZWQgYW5kIHJlc3VtaW5nIHRoZSBub3JtYWxcbiAzNzI6XHRcdCAgcGFja2V0IGZsb3cuXG4gMzczOlx0XG4gMzc0Olx0XHQgIFRoaXMgbW9kdWxlIGFsc28gcHJvdmlkZXMgYSBnZW5lcmljIFwmIzM0O25ldHdvcmsgb3V0cHV0IGJ1ZmZlcmluZ1wmIzM0O1xuIDM3NTpcdFx0ICBmdW5jdGlvbmFsaXR5IChha2Egb3V0cHV0IGNvbW1pdCksIHdoZXJlaW4gdXBvbiBhcnJpdmFsIG9mIGEgZGVxdWV1ZVxuIDM3NjpcdFx0ICBjb21tYW5kLCBvbmx5IHBhY2tldHMgdXAgdG8gdGhlIGZpcnN0IHBsdWcgYXJlIHJlbGVhc2VkIGZvciBkZWxpdmVyeS5cbiAzNzc6XHRcdCAgVGhlIFJlbXVzIEhBIHByb2plY3QgdXNlcyB0aGlzIG1vZHVsZSB0byBlbmFibGUgc3BlY3VsYXRpdmUgZXhlY3V0aW9uXG4gMzc4Olx0XHQgIG9mIHZpcnR1YWwgbWFjaGluZXMgYnkgYWxsb3dpbmcgdGhlIGdlbmVyYXRlZCBuZXR3b3JrIG91dHB1dCB0byBiZSByb2xsZWRcbiAzNzk6XHRcdCAgYmFjayBpZiBuZWVkZWQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MzEKCQkJCQkJCW91dHB1dDogMTM1CgkJCQkJCQl0aG91Z2h0czogMjUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTm8gY29tcGxleCBpbnRlcmRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbmFpbCBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMuCgpSaWdodCwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgYXJlIGBORVRfU0NIRURgLCBgTkVUX1NDSF9HUkVEYCwgYW5kIGBORVRfU0NIX1BMVUdgLiBOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBmdW5jdGlvbnMg4oCTIHRoZSBmb2N1cyBzeW1ib2xzLCBpZiB5b3Ugd2lsbCDigJMgcmVsYXRlZCB0byBwYWNrZXQgZW5xdWV1aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYGJmaWZvX2VucXVldWVgLCBgZ3JlZF9lbnF1ZXVlYCwgYW5kIGBwbHVnX2VucXVldWVgLgoKSGFuZyBvbiBhIHNlY29uZC4uLiBgYmZpZm9fZW5xdWV1ZWAgaXMgZGVmaW5lZCBhcyBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIuIEludGVyZXN0aW5nLiBMZXQgbWUgc2VlLi4uIEkgc2VlIGBxZGlzY19lbnF1ZXVlYCBpcyBpbmxpbmUuIFNvIHRoZSByZWFsIGNhbGwgaXMgaGFwcGVuaW5nIHRocm91Z2ggdGhlIGBxLSZndDtlbnF1ZXVlYCBmdW5jdGlvbiBwb2ludGVyLiBPa2F5LCBzbyB0aGF0IGNvbmZpcm1zIGl0LCBgYmZpZm9fZW5xdWV1ZWAsIGBncmVkX2VucXVldWVgLCBhbmQgYHBsdWdfZW5xdWV1ZWAgYXJlIGluZGVlZCB0aGUgYmVzdCBmb2N1cyBzeW1ib2xzIGZvciBlYWNoIG9mIHRoZWlyIHJlc3BlY3RpdmUgc2NoZWR1bGluZyBkaXNjaXBsaW5lcy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjay4uLiBJcyBgTkVUX1NDSF9GSUZPYCBhIGNvbmZpZz8gWWVzLCBpdCBpcywgYW5kIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGBORVRfU0NIRURgLiBTbywgSSYjMzk7bGwgYWRkIHRoYXQgdG8gdGhlIGxpc3QsIHdoaWNoIG1ha2VzIHRoZSB3aG9sZSB0aGluZyBhIGJpdCBjbGVhcmVyLgoKU28sIGxldCYjMzk7cyBtYWtlIHN1cmUgSSBkaWRuJiMzOTt0IG1pc3MgYW55dGhpbmcuCgpPa2F5LCBoZXJlIGFyZSBhbGwgb2YgdGhlIGNvbmZpZ3M6IGBORVRfU0NIRURgLCBgTkVUX1NDSF9HUkVEYCwgYE5FVF9TQ0hfUExVR2AsIGFuZCBgTkVUX1NDSF9GSUZPYC4gVGhhdCBjb3ZlcnMgaXQuIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgcHJldHR5IGdvb2QgaGFuZGxlIG9uIHRoaW5ncyBub3cuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCB0aG9zZSBhcmUgdGhlIHJlc3VsdHMgdGhhdCBhcmUgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfR1JFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1BMVUcmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GSUZPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmZpZm9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDtncmVkX2VucXVldWUmIzM0OywKICAgICYjMzQ7cGx1Z19lbnF1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBwYWNrZXQgZW5xdWV1ZSBmdW5jdGlvbnMgb2Ygc2V2ZXJhbCBxZGlzY3MgKEZJRk8sIEdSRUQsIFBMVUcpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjb25maWd1cmluZyB0aGUgcmVzcGVjdGl2ZSBxZGlzY3MgYW5kIHNlbmRpbmcgcGFja2V0cy4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0dSRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9QTFVHJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRklGTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JmaWZvX2VucXVldWUmIzM0OywKICAgICYjMzQ7Z3JlZF9lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3BsdWdfZW5xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgcGFja2V0IGVucXVldWUgZnVuY3Rpb25zIG9mIHNldmVyYWwgcWRpc2NzIChGSUZPLCBHUkVELCBQTFVHKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgdGhlIHJlc3BlY3RpdmUgcWRpc2NzIGFuZCBzZW5kaW5nIHBhY2tldHMuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGFja2V0IGVucXVldWUgbG9naWMgb2Ygc2V2ZXJhbCBuZXR3b3JrIHNjaGVkdWxlcnMgKGZpZm8sIGdyZWQsIHBsdWcpLiBCeSBjYXN0aW5nIHRoZSBxdWV1ZSBiYWNrbG9nIHRvIGB1NjRgIGJlZm9yZSBhZGRpbmcgdGhlIHBhY2tldCBsZW5ndGgsIGl0IHByZXZlbnRzIGEgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBhbGxvdyB0aGUgYmFja2xvZyB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbGltaXQuIFRoaXMgaXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24gb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMgKHdoaWNoIEtBU0FOIHdvdWxkIGRldGVjdCkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNjODJiYjJkY2Y0NDc1ZWQxNzZjNGFmYWVhYjY3YTBlODU5M2VlNGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDo1ODoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZmlmby5jIGIvbmV0L3NjaGVkL3NjaF9maWZvLmMKaW5kZXggZTZiZmQzOWZmMzM5Ni4uMWI2Mzg4ZDUwOTY3ZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9maWZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9maWZvLmMKQEAgLTE5LDcgJiM0MzsxOSw3IEBACiBzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsCiAJCQkgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKQogewotCWlmIChsaWtlbHkoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0KJiM0MzsJaWYgKGxpa2VseSgodTY0KXNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpICZsdDs9CiAJCSAgIFJFQURfT05DRShzY2gtJmd0O2xpbWl0KSkpCiAJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOwogCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dyZWQuYyBiL25ldC9zY2hlZC9zY2hfZ3JlZC5jCmluZGV4IGZjYzFhNGMwMzYzNjIuLmYwNGY0MjVjNmM0NDkgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZ3JlZC5jCkBAIC0xNzksNyAmIzQzOzE3OSw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLAogCQkJICogaWYgbm8gZGVmYXVsdCBEUCBoYXMgYmVlbiBjb25maWd1cmVkLiBUaGlzCiAJCQkgKiBhbGxvd3MgZm9yIERQIGZsb3dzIHRvIGJlIGxlZnQgdW50b3VjaGVkLgogCQkJICovCi0JCQlpZiAobGlrZWx5KHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpICZsdDs9CiYjNDM7CQkJaWYgKGxpa2VseSgodTY0KXNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJiM0MzsgcWRpc2NfcGt0X2xlbihza2IpICZsdDs9CiAJCQkJCXNjaC0mZ3Q7bGltaXQpKQogCQkJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOwogCQkJZWxzZQpAQCAtMjQ0LDcgJiM0MzsyNDQsNyBAQCBzdGF0aWMgaW50IGdyZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJYnJlYWs7CiAJfQogCi0JaWYgKGdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICYjNDM7IHFkaXNjX3BrdF9sZW4oc2tiKSAmbHQ7PSBxLSZndDtsaW1pdCkgewomIzQzOwlpZiAoKHU2NClncmVkX2JhY2tsb2codCwgcSwgc2NoKSAmIzQzOyBxZGlzY19wa3RfbGVuKHNrYikgJmx0Oz0gcS0mZ3Q7bGltaXQpIHsKIAkJcS0mZ3Q7YmFja2xvZyAmIzQzOz0gcWRpc2NfcGt0X2xlbihza2IpOwogCQlyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTsKIAl9CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BsdWcuYyBiL25ldC9zY2hlZC9zY2hfcGx1Zy5jCmluZGV4IGNlZmI2NTIwMWUxNzguLmI2MGRkZmVlNmE2OGEgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfcGx1Zy5jCkBAIC04OSw3ICYjNDM7ODksNyBAQCBzdGF0aWMgaW50IHBsdWdfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwKIHsKIAlzdHJ1Y3QgcGx1Z19zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOwogCi0JaWYgKGxpa2VseShzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICYjNDM7IHNrYi0mZ3Q7bGVuICZsdDs9IHEtJmd0O2xpbWl0KSkgewomIzQzOwlpZiAobGlrZWx5KCh1NjQpc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmIzQzOyBza2ItJmd0O2xlbiAmbHQ7PSBxLSZndDtsaW1pdCkpIHsKIAkJaWYgKCFxLSZndDt1bnBsdWdfaW5kZWZpbml0ZSkKIAkJCXEtJmd0O3BrdHNfY3VycmVudF9lcG9jaCYjNDM7JiM0Mzs7CiAJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyNQoJCQkJCQkJb3V0cHV0OiAxNTAKCQkJCQkJCXRob3VnaHRzOiA0ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSW50ZWdlciBPdmVyZmxvdyBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB3aGF0JiMzOTtzIGhhcHBlbmluZyBoZXJlLiBUaGV5JiMzOTtyZSB0b3VjaGluZyBgYmZpZm9fZW5xdWV1ZWAsIGBncmVkX2VucXVldWVgLCBhbmQgYHBsdWdfZW5xdWV1ZWAgd2l0aGluIHRoZSBuZXR3b3JraW5nIHNjaGVkdWxlciBjb2RlIOKAkyBzcGVjaWZpY2FsbHksIGBzY2hfZmlmby5jYCwgYHNjaF9ncmVkLmNgLCBhbmQgYHNjaF9wbHVnLmNgLiBUaGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIGludm9sdmVzIGNhc3RpbmcgZWl0aGVyIGBzY2gtJmd0O3FzdGF0cy5iYWNrbG9nYCBvciB0aGUgcmVzdWx0IG9mIGBncmVkX2JhY2tsb2dgIHRvIGEgYHU2NGAgYmVmb3JlIGFkZGluZyB0aGUgcGFja2V0IGxlbmd0aCAoZWl0aGVyIGBxZGlzY19wa3RfbGVuKHNrYilgIG9yIGBza2ItJmd0O2xlbmApIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgcXVldWUmIzM5O3MgbGltaXQuCgpUaGUgcmVhc29uIGlzIHNpbXBsZTogaW50ZWdlciBvdmVyZmxvdy4gTXkgZ3V0IHJlYWN0aW9uIHdhcyBjb3JyZWN0OyB0aGVzZSBhcmUgYWxtb3N0IGNlcnRhaW5seSAzMi1iaXQgaW50ZWdlcnMgKGB1MzJgKS4gV2UmIzM5O3JlIGFkZGluZyB0aGUgYmFja2xvZywgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkgYSBgdTMyYCwgYW5kIHRoZSBpbmNvbWluZyBwYWNrZXQmIzM5O3MgbGVuZ3RoLCBhbHNvIGEgYHUzMmAuIFdpdGhvdXQgdGhlIGNhc3QgdG8gYHU2NGAsIHRoZSBhZGRpdGlvbiB3b3VsZCBiZSBwZXJmb3JtZWQgd2l0aGluIDMyLWJpdHMuIElmIHRoZSBzdW0gb2YgdGhlIGJhY2tsb2cgYW5kIHBhY2tldCBsZW5ndGggZXhjZWVkZWQgdGhlIG1heGltdW0gdmFsdWUgZm9yIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIsIHRoZSByZXN1bHQgd291bGQgd3JhcCBhcm91bmQuIFRoaXMgd291bGQgbGVhZCB0byBhIHZhbHVlIHNtYWxsZXIgdGhhbiB0aGUgcXVldWUmIzM5O3MgbGltaXQgZXZlbiB0aG91Z2ggaXQgKnNob3VsZCogYmUgZXhjZWVkaW5nIGl0LCBlc3NlbnRpYWxseSBhbGxvd2luZyBtb3JlIHRyYWZmaWMgaW50byB0aGUgcXVldWUgdGhhbiBpcyBjb25maWd1cmVkLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uLCBhbmQgdGhlIHJlYXNvbiBJJiMzOTttIGhlcmU6IGRvZXMgdGhpcyBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBOby4gQWJzb2x1dGVseSBub3QuIFRoaXMgZml4IGlzIHB1cmVseSBhYm91dCBwcmV2ZW50aW5nIGFuIGludGVnZXIgb3ZlcmZsb3csIHdoaWNoIGNhbiBjYXVzZSBsb2dpYyBlcnJvcnMgYW5kIHBvdGVudGlhbGx5LCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBIb3dldmVyLCBLTVNBTiBpc24mIzM5O3QgZ29pbmcgdG8gYmUgdXNlZnVsIGhlcmUuIEtNU0FOIGlzIGZvciBkZXRlY3RpbmcgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEludGVnZXIgb3ZlcmZsb3cgY2FuIGxlYWQgdG8gb3RoZXIgaXNzdWVzLCBsaWtlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIGJ1dCB0aGF0IHdvdWxkIGZhbGwgdW5kZXIgS0FTQU4mIzM5O3MgcHVydmlldy4KClRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZywgSSBxdWlja2x5IHZlcmlmaWVkIHRoZSB0eXBlcy4gYHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2dgIGlzIGluZGVlZCBhIGBfX3UzMmAsIGBxZGlzY19wa3RfbGVuKHNrYilgIHJldHVybnMgYSBgdTMyYCwgYW5kIHRoZSBgc2NoLSZndDtsaW1pdGAgaXMgYSBgdTMyYC4gQ2FzdGluZyB0aGUgb3BlcmFuZHMgdG8gYHU2NGAgYmVmb3JlIGFkZGl0aW9uIHByZXZlbnRzIHRoZSBgdTMyICYjNDM7IHUzMmAgb3ZlcmZsb3cgaXNzdWUuIEl0JiMzOTtzIGEgY2xlYW4gYW5kIHN0cmFpZ2h0Zm9yd2FyZCBpbnRlZ2VyIG92ZXJmbG93IGJ1ZyBmaXguCgpUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEkmIzM5O2xsIHNldCBOZWVkc0tNU0FOIHRvIGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGxvZ2ljIG9mIHNldmVyYWwgbmV0d29yayBzY2hlZHVsZXJzIChmaWZvLCBncmVkLCBwbHVnKS4gQnkgY2FzdGluZyB0aGUgcXVldWUgYmFja2xvZyB0byBgdTY0YCBiZWZvcmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoLCBpdCBwcmV2ZW50cyBhIDMyLWJpdCBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgYWxsb3cgdGhlIGJhY2tsb2cgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGxpbWl0LiBUaGlzIGlzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBleGNlc3NpdmUgbWVtb3J5IGNvbnN1bXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzICh3aGljaCBLQVNBTiB3b3VsZCBkZXRlY3QpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBwYWNrZXQgZW5xdWV1ZSBsb2dpYyBvZiBzZXZlcmFsIG5ldHdvcmsgc2NoZWR1bGVycyAoZmlmbywgZ3JlZCwgcGx1ZykuIEJ5IGNhc3RpbmcgdGhlIHF1ZXVlIGJhY2tsb2cgdG8gYHU2NGAgYmVmb3JlIGFkZGluZyB0aGUgcGFja2V0IGxlbmd0aCwgaXQgcHJldmVudHMgYSAzMi1iaXQgaW50ZWdlciBvdmVyZmxvdyB0aGF0IGNvdWxkIGFsbG93IHRoZSBiYWNrbG9nIHRvIGV4Y2VlZCB0aGUgY29uZmlndXJlZCBsaW1pdC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gZXhjZXNzaXZlIG1lbW9yeSBjb25zdW1wdGlvbiBvciBvdXQtb2YtYm91bmRzIGlzc3VlcyAod2hpY2ggS0FTQU4gd291bGQgZGV0ZWN0KS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MTcuMDk4MDYzNzM2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1NDQ3MjI0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX0dSRURcIixcbiAgICBcIk5FVF9TQ0hfUExVR1wiLFxuICAgIFwiTkVUX1NDSF9GSUZPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmZpZm9fZW5xdWV1ZVwiLFxuICAgIFwiZ3JlZF9lbnF1ZXVlXCIsXG4gICAgXCJwbHVnX2VucXVldWVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGFja2V0IGVucXVldWUgbG9naWMgb2Ygc2V2ZXJhbCBuZXR3b3JrIHNjaGVkdWxlcnMgKGZpZm8sIGdyZWQsIHBsdWcpLiBCeSBjYXN0aW5nIHRoZSBxdWV1ZSBiYWNrbG9nIHRvIGB1NjRgIGJlZm9yZSBhZGRpbmcgdGhlIHBhY2tldCBsZW5ndGgsIGl0IHByZXZlbnRzIGEgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBhbGxvdyB0aGUgYmFja2xvZyB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbGltaXQuIFRoaXMgaXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24gb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMgKHdoaWNoIEtBU0FOIHdvdWxkIGRldGVjdCkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHFkaXNjcyAoRklGTywgR1JFRCwgUExVRykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIHRoZSByZXNwZWN0aXZlIHFkaXNjcyBhbmQgc2VuZGluZyBwYWNrZXRzLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MTcuMDk4MDY5Nzc2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjAyNTMyMjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2M4MmJiMmRjZjQ0NzVlZDE3NmM0YWZhZWFiNjdhMGU4NTkzZWU0YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDo1ODoxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZpZm8uYyBiL25ldC9zY2hlZC9zY2hfZmlmby5jXFxuaW5kZXggZTZiZmQzOWZmMzM5Ni4uMWI2Mzg4ZDUwOTY3ZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfZmlmby5jXFxuQEAgLTE5LDcgKzE5LDcgQEBcXG4gc3RhdGljIGludCBiZmlmb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxcbiB7XFxuLVxcdGlmIChsaWtlbHkoc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcXHUwMDNjPVxcbitcXHRpZiAobGlrZWx5KCh1NjQpc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcXHUwMDNjPVxcbiBcXHRcXHQgICBSRUFEX09OQ0Uoc2NoLVxcdTAwM2VsaW1pdCkpKVxcbiBcXHRcXHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jIGIvbmV0L3NjaGVkL3NjaF9ncmVkLmNcXG5pbmRleCBmY2MxYTRjMDM2MzYyLi5mMDRmNDI1YzZjNDQ5IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9ncmVkLmNcXG5AQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRcXHQgKiBpZiBubyBkZWZhdWx0IERQIGhhcyBiZWVuIGNvbmZpZ3VyZWQuIFRoaXNcXG4gXFx0XFx0XFx0ICogYWxsb3dzIGZvciBEUCBmbG93cyB0byBiZSBsZWZ0IHVudG91Y2hlZC5cXG4gXFx0XFx0XFx0ICovXFxuLVxcdFxcdFxcdGlmIChsaWtlbHkoc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcXHUwMDNjPVxcbitcXHRcXHRcXHRpZiAobGlrZWx5KCh1NjQpc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcXHUwMDNjPVxcbiBcXHRcXHRcXHRcXHRcXHRzY2gtXFx1MDAzZWxpbWl0KSlcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XFxuIFxcdFxcdFxcdGVsc2VcXG5AQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICsgcWRpc2NfcGt0X2xlbihza2IpIFxcdTAwM2M9IHEtXFx1MDAzZWxpbWl0KSB7XFxuK1xcdGlmICgodTY0KWdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICsgcWRpc2NfcGt0X2xlbihza2IpIFxcdTAwM2M9IHEtXFx1MDAzZWxpbWl0KSB7XFxuIFxcdFxcdHEtXFx1MDAzZWJhY2tsb2cgKz0gcWRpc2NfcGt0X2xlbihza2IpO1xcbiBcXHRcXHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BsdWcuYyBiL25ldC9zY2hlZC9zY2hfcGx1Zy5jXFxuaW5kZXggY2VmYjY1MjAxZTE3OC4uYjYwZGRmZWU2YTY4YSAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX3BsdWcuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfcGx1Zy5jXFxuQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGludCBwbHVnX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxuIHtcXG4gXFx0c3RydWN0IHBsdWdfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG4gXFxuLVxcdGlmIChsaWtlbHkoc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHNrYi1cXHUwMDNlbGVuIFxcdTAwM2M9IHEtXFx1MDAzZWxpbWl0KSkge1xcbitcXHRpZiAobGlrZWx5KCh1NjQpc2NoLVxcdTAwM2Vxc3RhdHMuYmFja2xvZyArIHNrYi1cXHUwMDNlbGVuIFxcdTAwM2M9IHEtXFx1MDAzZWxpbWl0KSkge1xcbiBcXHRcXHRpZiAoIXEtXFx1MDAzZXVucGx1Z19pbmRlZmluaXRlKVxcbiBcXHRcXHRcXHRxLVxcdTAwM2Vwa3RzX2N1cnJlbnRfZXBvY2grKztcXG4gXFx0XFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjE4LjcwMTU4NjM4MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5MDIwNTU3NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9HUkVEXCIsXG4gICAgXCJORVRfU0NIX1BMVUdcIixcbiAgICBcIk5FVF9TQ0hfRklGT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJmaWZvX2VucXVldWVcIixcbiAgICBcImdyZWRfZW5xdWV1ZVwiLFxuICAgIFwicGx1Z19lbnF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHFkaXNjcyAoRklGTywgR1JFRCwgUExVRykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIHRoZSByZXNwZWN0aXZlIHFkaXNjcyBhbmQgc2VuZGluZyBwYWNrZXRzLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2M4MmJiMmRjZjQ0NzVlZDE3NmM0YWZhZWFiNjdhMGU4NTkzZWU0YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDEwOjU4OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9maWZvLmMgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuaW5kZXggZTZiZmQzOWZmMzM5Ni4uMWI2Mzg4ZDUwOTY3ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZmlmby5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuQEAgLTE5LDcgKzE5LDcgQEBcbiBzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0IHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcbiB7XG4tXHRpZiAobGlrZWx5KHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9XG4rXHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz1cbiBcdFx0ICAgUkVBRF9PTkNFKHNjaC1cdTAwM2VsaW1pdCkpKVxuIFx0XHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dyZWQuYyBiL25ldC9zY2hlZC9zY2hfZ3JlZC5jXG5pbmRleCBmY2MxYTRjMDM2MzYyLi5mMDRmNDI1YzZjNDQ5IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9ncmVkLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZ3JlZC5jXG5AQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdCAqIGlmIG5vIGRlZmF1bHQgRFAgaGFzIGJlZW4gY29uZmlndXJlZC4gVGhpc1xuIFx0XHRcdCAqIGFsbG93cyBmb3IgRFAgZmxvd3MgdG8gYmUgbGVmdCB1bnRvdWNoZWQuXG4gXHRcdFx0ICovXG4tXHRcdFx0aWYgKGxpa2VseShzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPVxuK1x0XHRcdGlmIChsaWtlbHkoKHU2NClzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPVxuIFx0XHRcdFx0XHRzY2gtXHUwMDNlbGltaXQpKVxuIFx0XHRcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4gXHRcdFx0ZWxzZVxuQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgaW50IGdyZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRpZiAoZ3JlZF9iYWNrbG9nKHQsIHEsIHNjaCkgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPSBxLVx1MDAzZWxpbWl0KSB7XG4rXHRpZiAoKHU2NClncmVkX2JhY2tsb2codCwgcSwgc2NoKSArIHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9IHEtXHUwMDNlbGltaXQpIHtcbiBcdFx0cS1cdTAwM2ViYWNrbG9nICs9IHFkaXNjX3BrdF9sZW4oc2tiKTtcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9wbHVnLmMgYi9uZXQvc2NoZWQvc2NoX3BsdWcuY1xuaW5kZXggY2VmYjY1MjAxZTE3OC4uYjYwZGRmZWU2YTY4YSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX3BsdWcuY1xuQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGludCBwbHVnX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4ge1xuIFx0c3RydWN0IHBsdWdfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbiBcbi1cdGlmIChsaWtlbHkoc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHEtXHUwMDNlbGltaXQpKSB7XG4rXHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHEtXHUwMDNlbGltaXQpKSB7XG4gXHRcdGlmICghcS1cdTAwM2V1bnBsdWdfaW5kZWZpbml0ZSlcbiBcdFx0XHRxLVx1MDAzZXBrdHNfY3VycmVudF9lcG9jaCsrO1xuIFx0XHRyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjE4LjcwMTU4ODYzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTM5MjM5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSW50ZWdlciBPdmVyZmxvdyBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L3NjaGVkL3NjaF9maWZvLmNgLCBgbmV0L3NjaGVkL3NjaF9ncmVkLmNgLCBhbmQgYG5ldC9zY2hlZC9zY2hfcGx1Zy5jYC4gVGhlIGNvcmUgb2YgaXQgaXMgYSBjYXN0IG9mIGBzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2dgIHRvIGEgYHU2NGAgYmVmb3JlIGFkZGluZyBlaXRoZXIgYHFkaXNjX3BrdF9sZW4oc2tiKWAgb3IgYHNrYi1cdTAwM2VsZW5gLiBSaWdodCwgY2xhc3NpYyBpbnRlZ2VyIG92ZXJmbG93IHByZXZlbnRpb24gaW4gcGFja2V0IHNjaGVkdWxpbmcg4oCTIEkgc2VlIHRoYXQgaW1tZWRpYXRlbHkuIFRoZXkncmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoIHRvIHRoZSBiYWNrbG9nLCBhbmQgdGhlIGNhc3Qgc2hvdWxkIHByZXZlbnQgd3JhcGFyb3VuZC4gQSBnb29kLCBmdW5jdGlvbmFsIGZpeC4gVGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGV5J3ZlIG1vZGlmaWVkIGFyZSBgYmZpZm9fZW5xdWV1ZWAgaW4gdGhlIEZJRk8gcWRpc2MsIGBncmVkX2VucXVldWVgIGZvciBHUkVELCBhbmQgYHBsdWdfZW5xdWV1ZWAgZm9yIHRoZSBwbHVnIHFkaXNjLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGFyZSB0aGVzZSBldmVuIHdvcnRoIGZ1enppbmc/IFllcywgYWJzb2x1dGVseS4gVGhlc2UgYXJlICplbnF1ZXVlKiBmdW5jdGlvbnMsIHdoaWNoIG1lYW5zIHRoZXkncmUgY29yZSB0byB0aGUgcGFja2V0IHNjaGVkdWxpbmcgcHJvY2VzcyB3aXRoaW4gdGhlIHFkaXNjcy4gVGhleSBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIGVpdGhlciBkaXJlY3RseSBieSBzZW5kaW5nIHBhY2tldHMgdGhyb3VnaCB0aGUgcmVsZXZhbnQgaW50ZXJmYWNlcywgb3IgbW9yZSBpbmRpcmVjdGx5IHZpYSBjb25maWd1cmF0aW9uIGNhbGxzIHRvIHRoZXNlIHFkaXNjcyB0aHJvdWdoLCBzYXksIGB0Y2AuIFNpbmNlIGl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYW4gb3ZlcmZsb3cgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBzZXJpb3VzIGlzc3Vlcywgc28gaXQncyB3b3J0aCBhIGRlZXAgZGl2ZS5cblxuVGltZSB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYHNjaF9maWZvLmNgLi4uIHRoYXQncyBwcm9iYWJseSBlaXRoZXIgYnVpbHQtaW4gb3IgYE5FVF9TQ0hfRklGT2AuIFdhaXQsIHllYWgsIEZJRk8gaXMgdXN1YWxseSBidWlsdC1pbiwgc28gdGhhdCdzIHByb2JhYmx5IGZpbmUuIE5vIHNwZWNpZmljIG1vZHVsZSB0byB3b3JyeSBhYm91dCB1c3VhbGx5LiBPa2F5LCBgc2NoX2dyZWQuY2Agc2VlbXMgdG8gbWFwIHRvIGBORVRfU0NIX0dSRURgIGFuZCBgc2NoX3BsdWcuY2AgbWFwcyB0byBgTkVUX1NDSF9QTFVHYC4gTGV0J3MgY29uZmlybSB0aG9zZSB3aXRoIGEgcXVpY2sgZ3JlcCBqdXN0IHRvIG1ha2Ugc3VyZS4gSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjgsIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODoyNS42MTU1MTcyMDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNDMyMDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9TQ0hfR1JFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTE3Mj1jb25maWcgTkVUX1NDSF9UQVBSSU9cXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE4My1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxODQ6Y29uZmlnIE5FVF9TQ0hfR1JFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTE4NS1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfTkVUX1NDSF9SRUQpXFx0Kz0gc2NoX3JlZC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19ORVRfU0NIX0dSRUQpXFx0Kz0gc2NoX2dyZWQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0zOS1vYmotJChDT05GSUdfTkVUX1NDSF9JTkdSRVNTKVxcdCs9IHNjaF9pbmdyZXNzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MjUuNzU4OTUyOTcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDQ5MDQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfU0NIX1BMVUdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0zNDc9Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMzYyLVxcbm5ldC9zY2hlZC9LY29uZmlnOjM2Mzpjb25maWcgTkVUX1NDSF9QTFVHXFxubmV0L3NjaGVkL0tjb25maWctMzY0LVxcdHRyaXN0YXRlIFxcXCJQbHVnIG5ldHdvcmsgdHJhZmZpYyB1bnRpbCByZWxlYXNlIChQTFVHKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT00Nz1vYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXFx0Kz0gc2NoX2Ryci5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19ORVRfU0NIX1BMVUcpXFx0Kz0gc2NoX3BsdWcub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS00OS1vYmotJChDT05GSUdfTkVUX1NDSF9FVFMpXFx0Kz0gc2NoX2V0cy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjI1Ljg5MzQ1MTIxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzA1MTYxMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NoX2ZpZm8ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZT0zMz1vYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVxcdCs9IGFjdF9nYXRlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcXHQrPSBzY2hfZmlmby5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTM1LW9iai0kKENPTkZJR19ORVRfU0NIX0hUQilcXHQrPSBzY2hfaHRiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MjYuMDIzOTczNTg0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzNzU2NjIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gTkVUX1NDSF9GSUZPKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGBORVRfU0NIX0ZJRk9gLiBUaGF0IG1lYW5zIEknbSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGVyIGNvbXBvbmVudHMuICBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9gIGRpcmVjdG9yeS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBpdCdzIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGlzIG9wdGlvbiBpcyBkZWZpbmVkIHRoZXJlLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBtYWlubGluZSBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gcmVzaWRlcywgc28gdGhhdCBzZWVtcyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBUaW1lIHRvIGRpdmUgaW50byBgbmV0L3NjaGVkL0tjb25maWdgIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLiBJIGV4cGVjdCBpdCB0byBiZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGZpbmQsIGdpdmVuIGl0cyBuYW1lLiBIb3BlZnVsbHkgaXQncyB3ZWxsLWRvY3VtZW50ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjI4Ljg2MTU0MjU5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE0MjUxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX1NDSF9GSUZPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9Nj1tZW51Y29uZmlnIE5FVF9TQ0hFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTctXFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg6XFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xcbm5ldC9zY2hlZC9LY29uZmlnLTktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTY2PWVuZGlmICMgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctOTY3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjk2ODpjb25maWcgTkVUX1NDSF9GSUZPXFxubmV0L3NjaGVkL0tjb25maWctOTY5LVxcdGJvb2xcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0zMz1vYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVxcdCs9IGFjdF9nYXRlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcXHQrPSBzY2hfZmlmby5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTM1LW9iai0kKENPTkZJR19ORVRfU0NIX0hUQilcXHQrPSBzY2hfaHRiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MjkuMDEyOTc0NTY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0MjgxNDU0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBORVRfU0NIX0ZJRk9gIGlzIGJlaW5nIHNlbGVjdGVkIGJlY2F1c2Ugb2YgYE5FVF9TQ0hFRGAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgYSBiYXNpYyBxdWV1ZWluZyBkaXNjaXBsaW5lLiBMb29raW5nIGF0IHRoZSBjb25maWdzLCBJIG5lZWQgdG8gZW5hYmxlIGBORVRfU0NIX0dSRURgLCBgTkVUX1NDSF9QTFVHYCwgYW5kLCBvZiBjb3Vyc2UsIGBORVRfU0NIRURgIGl0c2VsZi4gSGFuZyBvbiwgYE5FVF9TQ0hFRGAgaXMgdGhlIHBhcmVudCwgc28gdGhhdCdzIHRoZSBiYXNlIHJlcXVpcmVtZW50LiBHb3QgaXQuXG5cbk5vdywgbGV0J3MgemVybyBpbiBvbiBhIGZldyBrZXkgc3ltYm9sczogYGJmaWZvX2VucXVldWVgLCBgZ3JlZF9lbnF1ZXVlYCwgYW5kIGBwbHVnX2VucXVldWVgLiBJJ20gY3VyaW91cyBhYm91dCBob3cgYGJmaWZvX2VucXVldWVgIGlzIGltcGxlbWVudGVkLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgc3RhdGljIG9yIGlmIGl0J3MgZXhwb3J0ZWQgYW5kIGhvdyBpdOKAmXMgYmVpbmcgY2FsbGVkLCB3aGljaCB3aWxsIGlsbHVtaW5hdGUgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5MZXQgbWUgY2hlY2sgdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYG5ldC9zY2hlZC9zY2hfZmlmby5jYC4gQWhhLCB0aGVyZSBpdCBpczogYHN0YXRpYyBpbnQgYmZpZm9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKWAuIFJpZ2h0LCBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24uIFNvIGl0J3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLiBJcyBpdCB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBzb21ld2hlcmU/IFRoYXQgd291bGQgYmUgdGhlIHVzdWFsIHBhdHRlcm4uIEl0IHdvdWxkIGJlIGxpbmtlZCB0byBhIGBzdHJ1Y3QgUWRpc2Nfb3BzYCBpbnN0YW5jZS4gT2theSwgdGltZSB0byBsb29rIGZvciBgUWRpc2Nfb3BzYCB3aXRoaW4gYHNjaF9maWZvLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzAzLCJPdXRwdXRUb2tlbnMiOjk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjMzLjk1NTc5MzYxM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU4MjY4ODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJmaWZvX2VucXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9maWZvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9maWZvLmMtMTgtXFxubmV0L3NjaGVkL3NjaF9maWZvLmM6MTk6c3RhdGljIGludCBiZmlmb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwLVxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYz0yMDI9c3RydWN0IFFkaXNjX29wcyBiZmlmb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwNC1cXHQucHJpdl9zaXplXFx0PVxcdDAsXFxubmV0L3NjaGVkL3NjaF9maWZvLmM6MjA1OlxcdC5lbnF1ZXVlXFx0PVxcdGJmaWZvX2VucXVldWUsXFxubmV0L3NjaGVkL3NjaF9maWZvLmMtMjA2LVxcdC5kZXF1ZXVlXFx0PVxcdHFkaXNjX2RlcXVldWVfaGVhZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6MzQuOTE0MDY3NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA5MjM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncmVkX2VucXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9ncmVkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9ncmVkLmM9MTUyPXN0YXRpYyBib29sIGdyZWRfcGVyX3ZxX3JlZF9mbGFnc191c2VkKHN0cnVjdCBncmVkX3NjaGVkICp0YWJsZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTE2NC1cXG5uZXQvc2NoZWQvc2NoX2dyZWQuYzoxNjU6c3RhdGljIGludCBncmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF9ncmVkLmMtMTY2LVxcdFxcdFxcdHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jPTkyMT1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyBncmVkX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9ncmVkLmMtOTIzLVxcdC5wcml2X3NpemVcXHQ9XFx0c2l6ZW9mKHN0cnVjdCBncmVkX3NjaGVkKSxcXG5uZXQvc2NoZWQvc2NoX2dyZWQuYzo5MjQ6XFx0LmVucXVldWVcXHQ9XFx0Z3JlZF9lbnF1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTkyNS1cXHQuZGVxdWV1ZVxcdD1cXHRncmVkX2RlcXVldWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjM1LjAxNDE2NTgyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5Nzk1MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsdWdfZW5xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3BsdWcuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3BsdWcuYz01Nj1zdHJ1Y3QgcGx1Z19zY2hlZF9kYXRhIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jLTg2LVxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jOjg3OnN0YXRpYyBpbnQgcGx1Z19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jLTg4LVxcdFxcdFxcdHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jPTIwNT1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyBwbHVnX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA3LVxcdC5wcml2X3NpemUgICA9ICAgICAgIHNpemVvZihzdHJ1Y3QgcGx1Z19zY2hlZF9kYXRhKSxcXG5uZXQvc2NoZWQvc2NoX3BsdWcuYzoyMDg6XFx0LmVucXVldWUgICAgID0gICAgICAgcGx1Z19lbnF1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jLTIwOS1cXHQuZGVxdWV1ZSAgICAgPSAgICAgICBwbHVnX2RlcXVldWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjM1LjEzMzk2NjQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTY0MTAxNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZ1bmN0aW9uIFN5bWJvbCBWaXNpYmlsaXR5IGZvciBFZmZpY2llbnQgQ29kZSBQcm9maWxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXknbGwgYmUgdXNlZnVsIGZvciBwcm9maWxpbmcuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBzaW5jZSB0aGV5J3JlIGRlY2xhcmVkIGFzIHN0YXRpYyBmdW5jdGlvbnMsIHRoZXkgbWlnaHQgbm90IGJlIHRoZSBiZXN0IGNhbmRpZGF0ZXMgYXMgZm9jdXMgc3ltYm9scywgZXNwZWNpYWxseSBpZiB0aGUgY29tcGlsZXIgZGVjaWRlcyB0byBpbmxpbmUgdGhlbS4gVGhhdCB3b3VsZCBtYWtlIHRoZW0gZGlzYXBwZWFyLCBhbmQgSSB3b3VsZG4ndCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MgdG8gd29yayB3aXRoLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgdGhleSdyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGV5ICp3b24ndCogYmUgaW5saW5lZC4gU2luY2UgdGhleSBoYXZlIGRpc3RpbmN0IGFkZHJlc3NlcyBiZWNhdXNlIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGF0IG1ha2VzIHRoZW0gZ29vZCB0YXJnZXRzLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gU2luY2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHRoYXQgbWFrZXMgdGhlbSBub24taW5saW5lZC4gR29vZCFcblxuSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGBiZmlmb19lbnF1ZXVlYCwgYGdyZWRfZW5xdWV1ZWAsIGFuZCBgcGx1Z19lbnF1ZXVlYCBhcmUgcGVyZmVjdGx5IGZpbmUgb3B0aW9ucyBhcyBmb2N1cyBzeW1ib2xzIGJlY2F1c2UgdGhleSdyZSBub3QgaW5saW5lZCwgd2hpY2ggZ2l2ZXMgdGhlbSB1bmlxdWUgc3ltYm9sIGFkZHJlc3Nlcy4gVGhleSdyZSBnb29kIHRvIGdvLlxuXG5Ob3csIHdhaXQgYSBzZWNvbmQuLi4gYXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBzaG91bGQgYmUgY29uc2lkZXJpbmc/IExldCdzIHNlZS4uLiBJJ3ZlIGdvdCBgTkVUX1NDSF9HUkVEYCwgYE5FVF9TQ0hfUExVR2AsIGFuZCB0aGVuIHRoZSBvdmVyYXJjaGluZyBgTkVUX1NDSEVEYC4gSSBuZWVkIHRvIGNoZWNrIGlmIGBORVRfU0NIRURgIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBJIHNob3VsZCBwcm9iYWJseSBpbnZlc3RpZ2F0ZSB0aGF0IGFuZCBlbnN1cmUgSSdtIGdldHRpbmcgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU5MCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjQwLjI1MDM4MDc0NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNzMyMzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6NDAuNDAzMTIxODk4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzY4OTg4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipKdXN0IGEgU2ltcGxlIEJvb2xlYW4qKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBoZXJlLiBUaGF0J3MgdGhlIGNvcmUgb2YgaXQsIGF0IGxlYXN0IGluaXRpYWxseS4gU3RyYWlnaHRmb3J3YXJkLiBObyBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyB5ZXQuIFByb2JhYmx5IGRlYWxpbmcgd2l0aCBhIHNpbXBsZSB0cnVlL2ZhbHNlIGNvbmRpdGlvbi5cblxuT2theSwgbm93IGxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgTkVUX1NDSF9HUkVEYCBjb25maWd1cmF0aW9uIGVsZW1lbnQgaW50ZXJhY3RzIHdpdGggdGhpcyBgYm9vbGAuIFNwZWNpZmljYWxseSwgd2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHJlbHkgb24gaXQgb3IgYXJlIGluZmx1ZW5jZWQgYnkgaXQ/IEdvdHRhIHNlZSBob3cgdGhpcyBib29sZWFuIGltcGFjdHMgdGhlIGJyb2FkZXIgc2NoZWR1bGluZyBhbmQgZ3JhZGluZyBsb2dpYyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgY29udGV4dC4gVGhlIGRldGFpbHMgbWF0dGVyLCBhcyBhbHdheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo0My42ODAwMzUxMDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjU5NzA1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9HUkVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTcyPWNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTgzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjE4NDpjb25maWcgTkVUX1NDSF9HUkVEXFxubmV0L3NjaGVkL0tjb25maWctMTg1LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo0My44NzY2NDMwNjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4OTUzNzI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgTkVUX1NDSF9HUkVEYCBvcHRpb246XG5cbioqRGl2aW5nIGludG8gdGhlIEdSRUQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIHB1bGwgdXAgYG5ldC9zY2hlZC9LY29uZmlnYCBhbmQgemVybyBpbiBvbiB0aGUgYE5FVF9TQ0hfR1JFRGAgY29uZmlndXJhdGlvbiBvcHRpb24uIFJpZ2h0LCBoZXJlIGl0IGlzLiBUaGlzIHNlY3Rpb24gd2lsbCBkZWZpbmUgd2hldGhlciB0aGUgR1JFRCAoR2VuZXJpYyBSRUQpIHRyYWZmaWMgc2hhcGVyIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbC4gQ2xlYXJseSwgdGhpcyBpcyBhIGZhaXJseSBsb3ctbGV2ZWwsIGNvcmUgcGllY2Ugb2YgbmV0d29yayBmdW5jdGlvbmFsaXR5IC0gcGFydCBvZiB0aGUgc2hhcGluZyBhbmQgcXVldWUgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS5cblxuSSdsbCBiZSBsb29raW5nIGZvciBob3cgaXQncyBwcmVzZW50ZWQgaW4gdGhlIGNvbmZpZyBmaWxlLiBJcyBpdCBkZXBlbmRlbnQgb24gb3RoZXIgZmVhdHVyZXM/IEFueSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGlmIEkgcGxhbiBvbiBlbmFibGluZyBvciBkaXNhYmxpbmcgaXQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZT8gQXJlIHRoZXJlIGFueSBjb21tZW50cyBvciBleHBsYW5hdGlvbnMgdGhhdCBnaXZlIGRlZXBlciBpbnNpZ2h0IGludG8gd2hlbiBHUkVEIHdvdWxkIGJlIHBhcnRpY3VsYXJseSB1c2VmdWw/IE9mdGVuLCB0aGUgS2NvbmZpZyBmaWxlcyBpbmNsdWRlIHN1YnRsZSBoaW50cyBhYm91dCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvciBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgc2NoZWR1bGluZyBkaXNjaXBsaW5lcy4gSSdtIGhvcGluZyB0byB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gY29uc3RyYWludHMgb2YgR1JFRCBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aGluIHRoZSBsYXJnZXIgcXVldWluZyBhcmNoaXRlY3R1cmUuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYW5kIG90aGVyIGFsZ29yaXRobXMsIHN1Y2ggYXMgUkVEIGFuZCBFQ04sIHRoYXQgbWF5IGltcGFjdCBjb25nZXN0aW9uIGNvbnRyb2wgYW5kIHF1ZXVlIG1hbmFnZW1lbnQuIEknbSBrZWVuIHRvIGdyYXNwIHRoZSBudWFuY2VzIGhlcmUsIGFuZCBzZWUgaG93IHRoaXMgaXMgcHJlc2VudGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgbmV0d29ya2luZyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0OTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo0Ny41NjYxODM3MjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXG4gMTgxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxODI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cXG4gMTgzOlxcdFxcbiAxODQ6XFx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxcbiAxODU6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcXFwiXFxuIDE4NjpcXHRcXHRoZWxwXFxuIDE4NzpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb25cXG4gMTg4OlxcdFxcdCAgKEdSRUQpIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobSBmb3Igc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlc1xcbiAxODk6XFx0XFx0ICAoc2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9yZWQuY1xcdTAwM2UgZm9yIGRldGFpbHMgYW5kXFxuIDE5MDpcXHRcXHQgIHJlZmVyZW5jZXMgYWJvdXQgdGhlIGFsZ29yaXRobSkuXFxuIDE5MTpcXHRcXG4gMTkyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxOTM6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2dyZWQuXFxuIDE5NDpcXHRcXG4gMTk1OlxcdGNvbmZpZyBORVRfU0NIX05FVEVNXFxuIDE5NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBlbXVsYXRvciAoTkVURU0pXFxcIlxcbiAxOTc6XFx0XFx0aGVscFxcbiAxOTg6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbXVsYXRlIG5ldHdvcmsgZGVsYXksIGxvc3MsIGFuZCBwYWNrZXRcXG4gMTk5OlxcdFxcdCAgcmUtb3JkZXJpbmcuIFRoaXMgaXMgb2Z0ZW4gdXNlZnVsIHRvIHNpbXVsYXRlIG5ldHdvcmtzIHdoZW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6NDcuNTY2MzA5ODQ3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTkxMzQyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgTkVUX1NDSF9QTFVHYCBDb25maWd1cmF0aW9uIE9wdGlvbioqXG5cbk9rYXksIG5vIGltbWVkaWF0ZSByb2FkYmxvY2tzIG9yIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCDigJMgdGhhdCdzIGdvb2QuIFRpbWUgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUgYW5kIHplcm8gaW4gb24gdGhlIGBORVRfU0NIX1BMVUdgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQncyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIGFib3V0IGl0LCBob3cgaXQncyBkZWZpbmVkLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIGl0IGludGVyYWN0cyB3aXRoLiBVbmRlcnN0YW5kaW5nIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciB0cmFmZmljIGNvbnRyb2wgZnJhbWV3b3JrIGlzIGtleSBoZXJlLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgaXRzIHB1cnBvc2UsIHBvdGVudGlhbCBpbXBhY3QsIGFuZCBtYXliZSBldmVuIHNvbWUgaGludHMgYWJvdXQgd2hlbiBpdCBtaWdodCBiZSB1c2VmdWwgb3IgcmVsZXZhbnQuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgZm9yIGdhaW5pbmcgaW5zaWdodHMgaW50byB0aGUgd29ya2luZ3Mgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE2MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTg6NTAuODY1NDQ3MDk1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNjA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuIDM2MTpcXHRcXHQgIGNhbGxlZCBzY2hfaW5ncmVzcyB3aXRoIGFsaWFzIG9mIHNjaF9jbHNhY3QuXFxuIDM2MjpcXHRcXG4gMzYzOlxcdGNvbmZpZyBORVRfU0NIX1BMVUdcXG4gMzY0OlxcdFxcdHRyaXN0YXRlIFxcXCJQbHVnIG5ldHdvcmsgdHJhZmZpYyB1bnRpbCByZWxlYXNlIChQTFVHKVxcXCJcXG4gMzY1OlxcdFxcdGhlbHBcXG4gMzY2OlxcdFxcbiAzNjc6XFx0XFx0ICBUaGlzIHF1ZXVpbmcgZGlzY2lwbGluZSBhbGxvd3MgdXNlcnNwYWNlIHRvIHBsdWcvdW5wbHVnIGEgbmV0d29ya1xcbiAzNjg6XFx0XFx0ICBvdXRwdXQgcXVldWUsIHVzaW5nIHRoZSBuZXRsaW5rIGludGVyZmFjZS4gIFdoZW4gaXQgcmVjZWl2ZXMgYW5cXG4gMzY5OlxcdFxcdCAgZW5xdWV1ZSBjb21tYW5kIGl0IGluc2VydHMgYSBwbHVnIGludG8gdGhlIG91dGJvdW5kIHF1ZXVlIHRoYXRcXG4gMzcwOlxcdFxcdCAgY2F1c2VzIGZvbGxvd2luZyBwYWNrZXRzIHRvIGVucXVldWUgdW50aWwgYSBkZXF1ZXVlIGNvbW1hbmQgYXJyaXZlc1xcbiAzNzE6XFx0XFx0ICBvdmVyIG5ldGxpbmssIGNhdXNpbmcgdGhlIHBsdWcgdG8gYmUgcmVtb3ZlZCBhbmQgcmVzdW1pbmcgdGhlIG5vcm1hbFxcbiAzNzI6XFx0XFx0ICBwYWNrZXQgZmxvdy5cXG4gMzczOlxcdFxcbiAzNzQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhbHNvIHByb3ZpZGVzIGEgZ2VuZXJpYyBcXFwibmV0d29yayBvdXRwdXQgYnVmZmVyaW5nXFxcIlxcbiAzNzU6XFx0XFx0ICBmdW5jdGlvbmFsaXR5IChha2Egb3V0cHV0IGNvbW1pdCksIHdoZXJlaW4gdXBvbiBhcnJpdmFsIG9mIGEgZGVxdWV1ZVxcbiAzNzY6XFx0XFx0ICBjb21tYW5kLCBvbmx5IHBhY2tldHMgdXAgdG8gdGhlIGZpcnN0IHBsdWcgYXJlIHJlbGVhc2VkIGZvciBkZWxpdmVyeS5cXG4gMzc3OlxcdFxcdCAgVGhlIFJlbXVzIEhBIHByb2plY3QgdXNlcyB0aGlzIG1vZHVsZSB0byBlbmFibGUgc3BlY3VsYXRpdmUgZXhlY3V0aW9uXFxuIDM3ODpcXHRcXHQgIG9mIHZpcnR1YWwgbWFjaGluZXMgYnkgYWxsb3dpbmcgdGhlIGdlbmVyYXRlZCBuZXR3b3JrIG91dHB1dCB0byBiZSByb2xsZWRcXG4gMzc5OlxcdFxcdCAgYmFjayBpZiBuZWVkZWQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjUwLjg2NTU3MjcyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjY2Njc1MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE5vIGNvbXBsZXggaW50ZXJkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zLlxuXG5SaWdodCwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgYXJlIGBORVRfU0NIRURgLCBgTkVUX1NDSF9HUkVEYCwgYW5kIGBORVRfU0NIX1BMVUdgLiBOb3csIEknbSB0aGlua2luZyBhYm91dCB0aGUga2V5IGZ1bmN0aW9ucyDigJMgdGhlIGZvY3VzIHN5bWJvbHMsIGlmIHlvdSB3aWxsIOKAkyByZWxhdGVkIHRvIHBhY2tldCBlbnF1ZXVpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyBgYmZpZm9fZW5xdWV1ZWAsIGBncmVkX2VucXVldWVgLCBhbmQgYHBsdWdfZW5xdWV1ZWAuXG5cbkhhbmcgb24gYSBzZWNvbmQuLi4gYGJmaWZvX2VucXVldWVgIGlzIGRlZmluZWQgYXMgc3RhdGljLCBidXQgaXQncyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIuIEludGVyZXN0aW5nLiBMZXQgbWUgc2VlLi4uIEkgc2VlIGBxZGlzY19lbnF1ZXVlYCBpcyBpbmxpbmUuIFNvIHRoZSByZWFsIGNhbGwgaXMgaGFwcGVuaW5nIHRocm91Z2ggdGhlIGBxLVx1MDAzZWVucXVldWVgIGZ1bmN0aW9uIHBvaW50ZXIuIE9rYXksIHNvIHRoYXQgY29uZmlybXMgaXQsIGBiZmlmb19lbnF1ZXVlYCwgYGdyZWRfZW5xdWV1ZWAsIGFuZCBgcGx1Z19lbnF1ZXVlYCBhcmUgaW5kZWVkIHRoZSBiZXN0IGZvY3VzIHN5bWJvbHMgZm9yIGVhY2ggb2YgdGhlaXIgcmVzcGVjdGl2ZSBzY2hlZHVsaW5nIGRpc2NpcGxpbmVzLlxuXG5MZXQncyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjay4uLiBJcyBgTkVUX1NDSF9GSUZPYCBhIGNvbmZpZz8gWWVzLCBpdCBpcywgYW5kIGl0J3Mgc2VsZWN0ZWQgYnkgYE5FVF9TQ0hFRGAuIFNvLCBJJ2xsIGFkZCB0aGF0IHRvIHRoZSBsaXN0LCB3aGljaCBtYWtlcyB0aGUgd2hvbGUgdGhpbmcgYSBiaXQgY2xlYXJlci5cblxuU28sIGxldCdzIG1ha2Ugc3VyZSBJIGRpZG4ndCBtaXNzIGFueXRoaW5nLlxuXG5Pa2F5LCBoZXJlIGFyZSBhbGwgb2YgdGhlIGNvbmZpZ3M6IGBORVRfU0NIRURgLCBgTkVUX1NDSF9HUkVEYCwgYE5FVF9TQ0hfUExVR2AsIGFuZCBgTkVUX1NDSF9GSUZPYC4gVGhhdCBjb3ZlcnMgaXQuIEkgdGhpbmsgSSd2ZSBnb3QgYSBwcmV0dHkgZ29vZCBoYW5kbGUgb24gdGhpbmdzIG5vdy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgdGhvc2UgYXJlIHRoZSByZXN1bHRzIHRoYXQgYXJlIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzczMSwiT3V0cHV0VG9rZW5zIjoxMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo1Ny41MzIyNTE0MzlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk4ODc3OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9HUkVEXCIsXG4gICAgXCJORVRfU0NIX1BMVUdcIixcbiAgICBcIk5FVF9TQ0hfRklGT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJmaWZvX2VucXVldWVcIixcbiAgICBcImdyZWRfZW5xdWV1ZVwiLFxuICAgIFwicGx1Z19lbnF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGZ1bmN0aW9ucyBvZiBzZXZlcmFsIHFkaXNjcyAoRklGTywgR1JFRCwgUExVRykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIHRoZSByZXNwZWN0aXZlIHFkaXNjcyBhbmQgc2VuZGluZyBwYWNrZXRzLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfR1JFRFwiLFxuICAgIFwiTkVUX1NDSF9QTFVHXCIsXG4gICAgXCJORVRfU0NIX0ZJRk9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiZmlmb19lbnF1ZXVlXCIsXG4gICAgXCJncmVkX2VucXVldWVcIixcbiAgICBcInBsdWdfZW5xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBwYWNrZXQgZW5xdWV1ZSBmdW5jdGlvbnMgb2Ygc2V2ZXJhbCBxZGlzY3MgKEZJRk8sIEdSRUQsIFBMVUcpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjb25maWd1cmluZyB0aGUgcmVzcGVjdGl2ZSBxZGlzY3MgYW5kIHNlbmRpbmcgcGFja2V0cy4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjU3LjcyMjE0OTQyN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkyMDYyNTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjU4OjU3LjcyMzA0ODkwN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4OTE5NzIxNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGxvZ2ljIG9mIHNldmVyYWwgbmV0d29yayBzY2hlZHVsZXJzIChmaWZvLCBncmVkLCBwbHVnKS4gQnkgY2FzdGluZyB0aGUgcXVldWUgYmFja2xvZyB0byBgdTY0YCBiZWZvcmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoLCBpdCBwcmV2ZW50cyBhIDMyLWJpdCBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgYWxsb3cgdGhlIGJhY2tsb2cgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGxpbWl0LiBUaGlzIGlzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBleGNlc3NpdmUgbWVtb3J5IGNvbnN1bXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzICh3aGljaCBLQVNBTiB3b3VsZCBkZXRlY3QpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNjODJiYjJkY2Y0NDc1ZWQxNzZjNGFmYWVhYjY3YTBlODU5M2VlNGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDo1ODoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZmlmby5jIGIvbmV0L3NjaGVkL3NjaF9maWZvLmNcbmluZGV4IGU2YmZkMzlmZjMzOTYuLjFiNjM4OGQ1MDk2N2YgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2ZpZm8uY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9maWZvLmNcbkBAIC0xOSw3ICsxOSw3IEBAXG4gc3RhdGljIGludCBiZmlmb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4ge1xuLVx0aWYgKGxpa2VseShzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPVxuK1x0aWYgKGxpa2VseSgodTY0KXNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyArIHFkaXNjX3BrdF9sZW4oc2tiKSBcdTAwM2M9XG4gXHRcdCAgIFJFQURfT05DRShzY2gtXHUwMDNlbGltaXQpKSlcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ncmVkLmMgYi9uZXQvc2NoZWQvc2NoX2dyZWQuY1xuaW5kZXggZmNjMWE0YzAzNjM2Mi4uZjA0ZjQyNWM2YzQ0OSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ3JlZC5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2dyZWQuY1xuQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgaW50IGdyZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHQgKiBpZiBubyBkZWZhdWx0IERQIGhhcyBiZWVuIGNvbmZpZ3VyZWQuIFRoaXNcbiBcdFx0XHQgKiBhbGxvd3MgZm9yIERQIGZsb3dzIHRvIGJlIGxlZnQgdW50b3VjaGVkLlxuIFx0XHRcdCAqL1xuLVx0XHRcdGlmIChsaWtlbHkoc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz1cbitcdFx0XHRpZiAobGlrZWx5KCh1NjQpc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nICsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz1cbiBcdFx0XHRcdFx0c2NoLVx1MDAzZWxpbWl0KSlcbiBcdFx0XHRcdHJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpO1xuIFx0XHRcdGVsc2VcbkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIGludCBncmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuLVx0aWYgKGdyZWRfYmFja2xvZyh0LCBxLCBzY2gpICsgcWRpc2NfcGt0X2xlbihza2IpIFx1MDAzYz0gcS1cdTAwM2VsaW1pdCkge1xuK1x0aWYgKCh1NjQpZ3JlZF9iYWNrbG9nKHQsIHEsIHNjaCkgKyBxZGlzY19wa3RfbGVuKHNrYikgXHUwMDNjPSBxLVx1MDAzZWxpbWl0KSB7XG4gXHRcdHEtXHUwMDNlYmFja2xvZyArPSBxZGlzY19wa3RfbGVuKHNrYik7XG4gXHRcdHJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGx1Zy5jIGIvbmV0L3NjaGVkL3NjaF9wbHVnLmNcbmluZGV4IGNlZmI2NTIwMWUxNzguLmI2MGRkZmVlNmE2OGEgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3BsdWcuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9wbHVnLmNcbkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbnQgcGx1Z19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxuIHtcbiBcdHN0cnVjdCBwbHVnX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG4gXG4tXHRpZiAobGlrZWx5KHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyArIHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBxLVx1MDAzZWxpbWl0KSkge1xuK1x0aWYgKGxpa2VseSgodTY0KXNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZyArIHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBxLVx1MDAzZWxpbWl0KSkge1xuIFx0XHRpZiAoIXEtXHUwMDNldW5wbHVnX2luZGVmaW5pdGUpXG4gXHRcdFx0cS1cdTAwM2Vwa3RzX2N1cnJlbnRfZXBvY2grKztcbiBcdFx0cmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDo1ODo1Ny43MjMwNTA4MjdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODkxOTY5NDM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJbnRlZ2VyIE92ZXJmbG93IEZpeCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaCwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHdoYXQncyBoYXBwZW5pbmcgaGVyZS4gVGhleSdyZSB0b3VjaGluZyBgYmZpZm9fZW5xdWV1ZWAsIGBncmVkX2VucXVldWVgLCBhbmQgYHBsdWdfZW5xdWV1ZWAgd2l0aGluIHRoZSBuZXR3b3JraW5nIHNjaGVkdWxlciBjb2RlIOKAkyBzcGVjaWZpY2FsbHksIGBzY2hfZmlmby5jYCwgYHNjaF9ncmVkLmNgLCBhbmQgYHNjaF9wbHVnLmNgLiBUaGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIGludm9sdmVzIGNhc3RpbmcgZWl0aGVyIGBzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2dgIG9yIHRoZSByZXN1bHQgb2YgYGdyZWRfYmFja2xvZ2AgdG8gYSBgdTY0YCBiZWZvcmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoIChlaXRoZXIgYHFkaXNjX3BrdF9sZW4oc2tiKWAgb3IgYHNrYi1cdTAwM2VsZW5gKSBhbmQgY29tcGFyaW5nIGFnYWluc3QgdGhlIHF1ZXVlJ3MgbGltaXQuXG5cblRoZSByZWFzb24gaXMgc2ltcGxlOiBpbnRlZ2VyIG92ZXJmbG93LiBNeSBndXQgcmVhY3Rpb24gd2FzIGNvcnJlY3Q7IHRoZXNlIGFyZSBhbG1vc3QgY2VydGFpbmx5IDMyLWJpdCBpbnRlZ2VycyAoYHUzMmApLiBXZSdyZSBhZGRpbmcgdGhlIGJhY2tsb2csIHdoaWNoIGlzIHJlcHJlc2VudGVkIGJ5IGEgYHUzMmAsIGFuZCB0aGUgaW5jb21pbmcgcGFja2V0J3MgbGVuZ3RoLCBhbHNvIGEgYHUzMmAuIFdpdGhvdXQgdGhlIGNhc3QgdG8gYHU2NGAsIHRoZSBhZGRpdGlvbiB3b3VsZCBiZSBwZXJmb3JtZWQgd2l0aGluIDMyLWJpdHMuIElmIHRoZSBzdW0gb2YgdGhlIGJhY2tsb2cgYW5kIHBhY2tldCBsZW5ndGggZXhjZWVkZWQgdGhlIG1heGltdW0gdmFsdWUgZm9yIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIsIHRoZSByZXN1bHQgd291bGQgd3JhcCBhcm91bmQuIFRoaXMgd291bGQgbGVhZCB0byBhIHZhbHVlIHNtYWxsZXIgdGhhbiB0aGUgcXVldWUncyBsaW1pdCBldmVuIHRob3VnaCBpdCAqc2hvdWxkKiBiZSBleGNlZWRpbmcgaXQsIGVzc2VudGlhbGx5IGFsbG93aW5nIG1vcmUgdHJhZmZpYyBpbnRvIHRoZSBxdWV1ZSB0aGFuIGlzIGNvbmZpZ3VyZWQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiwgYW5kIHRoZSByZWFzb24gSSdtIGhlcmU6IGRvZXMgdGhpcyBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBOby4gQWJzb2x1dGVseSBub3QuIFRoaXMgZml4IGlzIHB1cmVseSBhYm91dCBwcmV2ZW50aW5nIGFuIGludGVnZXIgb3ZlcmZsb3csIHdoaWNoIGNhbiBjYXVzZSBsb2dpYyBlcnJvcnMgYW5kIHBvdGVudGlhbGx5LCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBIb3dldmVyLCBLTVNBTiBpc24ndCBnb2luZyB0byBiZSB1c2VmdWwgaGVyZS4gS01TQU4gaXMgZm9yIGRldGVjdGluZyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSW50ZWdlciBvdmVyZmxvdyBjYW4gbGVhZCB0byBvdGhlciBpc3N1ZXMsIGxpa2Ugb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgYnV0IHRoYXQgd291bGQgZmFsbCB1bmRlciBLQVNBTidzIHB1cnZpZXcuXG5cblRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZywgSSBxdWlja2x5IHZlcmlmaWVkIHRoZSB0eXBlcy4gYHNjaC1cdTAwM2Vxc3RhdHMuYmFja2xvZ2AgaXMgaW5kZWVkIGEgYF9fdTMyYCwgYHFkaXNjX3BrdF9sZW4oc2tiKWAgcmV0dXJucyBhIGB1MzJgLCBhbmQgdGhlIGBzY2gtXHUwMDNlbGltaXRgIGlzIGEgYHUzMmAuIENhc3RpbmcgdGhlIG9wZXJhbmRzIHRvIGB1NjRgIGJlZm9yZSBhZGRpdGlvbiBwcmV2ZW50cyB0aGUgYHUzMiArIHUzMmAgb3ZlcmZsb3cgaXNzdWUuIEl0J3MgYSBjbGVhbiBhbmQgc3RyYWlnaHRmb3J3YXJkIGludGVnZXIgb3ZlcmZsb3cgYnVnIGZpeC5cblxuVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEknbGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjUsIk91dHB1dFRva2VucyI6MTUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6NTk6MDYuNjQyNzQ5Mjg1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHBhY2tldCBlbnF1ZXVlIGxvZ2ljIG9mIHNldmVyYWwgbmV0d29yayBzY2hlZHVsZXJzIChmaWZvLCBncmVkLCBwbHVnKS4gQnkgY2FzdGluZyB0aGUgcXVldWUgYmFja2xvZyB0byBgdTY0YCBiZWZvcmUgYWRkaW5nIHRoZSBwYWNrZXQgbGVuZ3RoLCBpdCBwcmV2ZW50cyBhIDMyLWJpdCBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgY291bGQgYWxsb3cgdGhlIGJhY2tsb2cgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGxpbWl0LiBUaGlzIGlzIGEgbG9naWMgYnVnIHRoYXQgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBleGNlc3NpdmUgbWVtb3J5IGNvbnN1bXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzICh3aGljaCBLQVNBTiB3b3VsZCBkZXRlY3QpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGFja2V0IGVucXVldWUgbG9naWMgb2Ygc2V2ZXJhbCBuZXR3b3JrIHNjaGVkdWxlcnMgKGZpZm8sIGdyZWQsIHBsdWcpLiBCeSBjYXN0aW5nIHRoZSBxdWV1ZSBiYWNrbG9nIHRvIGB1NjRgIGJlZm9yZSBhZGRpbmcgdGhlIHBhY2tldCBsZW5ndGgsIGl0IHByZXZlbnRzIGEgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgdGhhdCBjb3VsZCBhbGxvdyB0aGUgYmFja2xvZyB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgbGltaXQuIFRoaXMgaXMgYSBsb2dpYyBidWcgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24gb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMgKHdoaWNoIEtBU0FOIHdvdWxkIGRldGVjdCkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow4xvcl[1] Phase: Succeeded StartedAt: 2026-08-18 10:59:18 +0000 UTC FinishedAt: 2026-08-18 10:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-18 10:59:18 +0000 UTC FinishedAt: 2026-08-18 10:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2] Phase: Succeeded StartedAt: 2026-08-18 10:59:18 +0000 UTC FinishedAt: 2026-08-18 14:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-18 10:59:18 +0000 UTC FinishedAt: 2026-08-18 14:41:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-18 10:59:18 +0000 UTC FinishedAt: 2026-08-18 10:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-18 10:59:18 +0000 UTC FinishedAt: 2026-08-18 10:59:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4xvcl/series-workflow4xvcl-convert-artifact-3237573554/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-18 10:59:28 +0000 UTC FinishedAt: 2026-08-18 11:17:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-18 10:59:28 +0000 UTC FinishedAt: 2026-08-18 11:17:16 +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:*8f543057-432d-4c6e-8a3e-1add153d2525,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-workflow4xvcl/series-workflow4xvcl-convert-artifact-3237573554/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": "6308d040-2608-4cff-8a1a-aaf4331e996a", "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-workflow4xvcl/series-workflow4xvcl-build-action-1417004336/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-18 10:59:28 +0000 UTC FinishedAt: 2026-08-18 11:17:06 +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:*8f543057-432d-4c6e-8a3e-1add153d2525,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-workflow4xvcl/series-workflow4xvcl-convert-artifact-3237573554/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": "6308d040-2608-4cff-8a1a-aaf4331e996a", "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-workflow4xvcl/series-workflow4xvcl-build-action-1417004336/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-18 11:17:16 +0000 UTC FinishedAt: 2026-08-18 11:17:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-18 11:17:16 +0000 UTC FinishedAt: 2026-08-18 11:17:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-18 11:17:16 +0000 UTC FinishedAt: 2026-08-18 11:17:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-18 11:17:16 +0000 UTC FinishedAt: 2026-08-18 11:17:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4xvcl/series-workflow4xvcl-convert-artifact-3496252621/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-18 11:17:26 +0000 UTC FinishedAt: 2026-08-18 11:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-18 11:17:26 +0000 UTC FinishedAt: 2026-08-18 11:19:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6308d040-2608-4cff-8a1a-aaf4331e996a,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-workflow4xvcl/series-workflow4xvcl-build-action-1417004336/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-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-18 11:19:25 +0000 UTC FinishedAt: 2026-08-18 11:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-18 11:19:25 +0000 UTC FinishedAt: 2026-08-18 11:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-18 11:19:25 +0000 UTC FinishedAt: 2026-08-18 11:36:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-18 11:19:25 +0000 UTC FinishedAt: 2026-08-18 11:36:23 +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:*8f543057-432d-4c6e-8a3e-1add153d2525,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-workflow4xvcl/series-workflow4xvcl-convert-artifact-3496252621/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": "d0f2881e-b8c0-4838-b492-9829cd43019d", "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-workflow4xvcl/series-workflow4xvcl-build-action-3648766633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-18 11:19:25 +0000 UTC FinishedAt: 2026-08-18 11:36:13 +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:*8f543057-432d-4c6e-8a3e-1add153d2525,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-workflow4xvcl/series-workflow4xvcl-convert-artifact-3496252621/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": "d0f2881e-b8c0-4838-b492-9829cd43019d", "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-workflow4xvcl/series-workflow4xvcl-build-action-3648766633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-18 11:36:23 +0000 UTC FinishedAt: 2026-08-18 11:36:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-18 11:36:23 +0000 UTC FinishedAt: 2026-08-18 11:36:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-18 11:36:23 +0000 UTC FinishedAt: 2026-08-18 11:38:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-18 11:36:23 +0000 UTC FinishedAt: 2026-08-18 11:38:27 +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:*d0f2881e-b8c0-4838-b492-9829cd43019d,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-workflow4xvcl/series-workflow4xvcl-build-action-3648766633/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-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-18 11:38:37 +0000 UTC FinishedAt: 2026-08-18 14:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-18 11:38:37 +0000 UTC FinishedAt: 2026-08-18 14:41:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"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:*6308d040-2608-4cff-8a1a-aaf4331e996a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d0f2881e-b8c0-4838-b492-9829cd43019d,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-workflow4xvcl/series-workflow4xvcl-build-action-1417004336/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-workflow4xvcl/series-workflow4xvcl-build-action-3648766633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-18 11:38:37 +0000 UTC FinishedAt: 2026-08-18 11:38:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-18 11:38:37 +0000 UTC FinishedAt: 2026-08-18 11:38:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"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-workflow4xvcl/series-workflow4xvcl-convert-artifact-570933170/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-18 11:38:37 +0000 UTC FinishedAt: 2026-08-18 11:38:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-18 11:38:37 +0000 UTC FinishedAt: 2026-08-18 11:38:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-18 11:38:37 +0000 UTC FinishedAt: 2026-08-18 11:38:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-18 11:38:47 +0000 UTC FinishedAt: 2026-08-18 14:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xvcl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bfifo_enqueue","gred_enqueue","plug_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"21040c7f931502070dcc66bb0f1aeed07dec032b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_GRED","NET_SCH_PLUG","NET_SCH_FIFO"],"series_id":"db72e364-2f00-4b68-9cb1-7aa5d87c4252","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-18 11:38:47 +0000 UTC FinishedAt: 2026-08-18 14:41:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6308d040-2608-4cff-8a1a-aaf4331e996a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d0f2881e-b8c0-4838-b492-9829cd43019d,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-workflow4xvcl/series-workflow4xvcl-build-action-1417004336/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-workflow4xvcl/series-workflow4xvcl-build-action-3648766633/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-workflow4xvcl/series-workflow4xvcl-convert-artifact-570933170/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,}