Name: series-workflowz9n9l Phase: Succeeded StartedAt: 2026-08-06 10:40:54 +0000 UTC FinishedAt: 2026-08-06 14:47:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[0] Phase: Succeeded StartedAt: 2026-08-06 10:40:54 +0000 UTC FinishedAt: 2026-08-06 11:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 10:40:54 +0000 UTC FinishedAt: 2026-08-06 11:02:19 +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": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT", "NET_ACT_POLICE", "NET_ACT_GACT", "GACT_PROB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT", "NET_ACT_POLICE", "NET_ACT_GACT", "GACT_PROB" ], "series_id": "ebe6cd8d-d122-4d7e-a239-4da690a99b69" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_action_init_1", "tcf_action_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX1BPTElDRSYjMzQ7LAogICAgJiMzNDtORVRfQUNUX0dBQ1QmIzM0OywKICAgICYjMzQ7R0FDVF9QUk9CJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2FjdGlvbl9pbml0XzEmIzM0OywKICAgICYjMzQ7dGNmX2FjdGlvbl9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgZmFsbGJhY2sgY29udHJvbCBhY3Rpb25zIGluIHRoZSBnZW5lcmljIGFjdGlvbiAoZ2FjdCkgYW5kIHBvbGljZSBhY3Rpb24gbW9kdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgdXNlciBzcGFjZSBmcm9tIHN0b3Jpbmcga2VybmVsLWludGVybmFsIHZlcmRpY3RzLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSB0YyBhY3Rpb24gaW5pdGlhbGl6YXRpb24gcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJlMGQ2NTg3ZDgyZGU2NzBhMjBiYmRiZDkzNTAwMGJhZmJkYmE4MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDExOjAwOjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaCBiL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxuaW5kZXggMjBkOWU1NWY4NTY0ZC4uZmQwM2Y2MzE5ZTg4MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYWN0X2FwaS5oXG5AQCAtMjcwLDYgJiM0MzsyNzAsMjUgQEAgaW50IHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdChpbnQgYWN0aW9uLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCxcbiBzdHJ1Y3QgdGNmX2NoYWluICp0Y2ZfYWN0aW9uX3NldF9jdHJsYWN0KHN0cnVjdCB0Y19hY3Rpb24gKmEsIGludCBhY3Rpb24sXG4gXHRcdFx0XHRcdCBzdHJ1Y3QgdGNmX2NoYWluICpuZXdjaGFpbik7XG4gXG4mIzQzOy8qIFJhbmdlIGNoZWNrIGZvciBhIGNvbnRyb2wgYWN0aW9uIHN1cHBsaWVkIGJ5IHVzZXIgc3BhY2UuXG4mIzQzOyAqXG4mIzQzOyAqIFRoaXMgaXMgdGhlIHNhbWUgdGVzdCB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QoKSBhcHBsaWVzIHRvIHRoZSBwcmltYXJ5XG4mIzQzOyAqIGNvbnRyb2wgYWN0aW9uLCBmYWN0b3JlZCBvdXQgZm9yIHRoZSAqZmFsbGJhY2sqIGNvbnRyb2wgYWN0aW9uc1xuJiM0MzsgKiAoYWN0X2dhY3QmIzM5O3MgVENBX0dBQ1RfUFJPQi5wYWN0aW9uIGFuZCBhY3RfcG9saWNlJiMzOTtzIFRDQV9QT0xJQ0VfUkVTVUxUKSxcbiYjNDM7ICogd2hpY2ggbXVzdCBub3QgcmVhY2ggdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KCkgYmVjYXVzZSB0aGV5IGhhdmUgbm9cbiYjNDM7ICogZ290b19jaGFpbiB0byBhbGxvY2F0ZS4gIFdpdGhvdXQgaXQsIHVzZXIgc3BhY2UgY2FuIHN0b3JlIGtlcm5lbC1pbnRlcm5hbFxuJiM0MzsgKiB2ZXJkaWN0cyBzdWNoIGFzIFRDX0FDVF9DT05TVU1FRCwgd2hpY2ggaXMgVENfQUNUX1ZBTFVFX01BWCAmIzQzOyAxIGFuZCBpc1xuJiM0MzsgKiBkZWxpYmVyYXRlbHkgbm90IHBhcnQgb2YgdGhlIFVBUEkgdmFsdWUgcmFuZ2UuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgdGNmX2FjdGlvbl92YWxpZChpbnQgYWN0aW9uKVxuJiM0Mzt7XG4mIzQzO1x0aW50IG9wY29kZSA9IFRDX0FDVF9FWFRfT1BDT0RFKGFjdGlvbik7XG4mIzQzO1xuJiM0MztcdGlmICghb3Bjb2RlKVxuJiM0MztcdFx0cmV0dXJuIGFjdGlvbiBcdTAwM2M9IFRDX0FDVF9WQUxVRV9NQVg7XG4mIzQzO1x0cmV0dXJuIG9wY29kZSBcdTAwM2M9IFRDX0FDVF9FWFRfT1BDT0RFX01BWCB8fCBhY3Rpb24gPT0gVENfQUNUX1VOU1BFQztcbiYjNDM7fVxuJiM0MztcbiAjaWZkZWYgQ09ORklHX0lORVRcbiBERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UodGNmX2ZyYWdfeG1pdF9jb3VudCk7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9nYWN0LmMgYi9uZXQvc2NoZWQvYWN0X2dhY3QuY1xuaW5kZXggZTk0OTI4MGViODAwZC4uNTY1ODYwY2NjYmE2ZCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfZ2FjdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X2dhY3QuY1xuQEAgLTg5LDYgJiM0Mzs4OSwxMSBAQCBzdGF0aWMgaW50IHRjZl9nYWN0X2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdHBfcGFybSA9IG5sYV9kYXRhKHRiW1RDQV9HQUNUX1BST0JdKTtcbiBcdFx0aWYgKHBfcGFybS1cdTAwM2VwdHlwZSBcdTAwM2U9IE1BWF9SQU5EKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0aWYgKCF0Y2ZfYWN0aW9uX3ZhbGlkKHBfcGFybS1cdTAwM2VwYWN0aW9uKSkge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4mIzQzO1x0XHRcdFx0ICAgICAgIFwmIzM0O2ludmFsaWQgZmFsbGJhY2sgY29udHJvbCBhY3Rpb25cJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKFRDX0FDVF9FWFRfQ01QKHBfcGFybS1cdTAwM2VwYWN0aW9uLCBUQ19BQ1RfR09UT19DSEFJTikpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4gXHRcdFx0XHQgICAgICAgXCYjMzQ7Z290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFja1wmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wb2xpY2UuYyBiL25ldC9zY2hlZC9hY3RfcG9saWNlLmNcbmluZGV4IGIxNjQ2OGE5OGM1NWUuLmNlMDhmNjg0MGVmN2MgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BvbGljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X3BvbGljZS5jXG5AQCAtMTI4LDYgJiM0MzsxMjgsMTIgQEAgc3RhdGljIGludCB0Y2ZfcG9saWNlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXG4gXHRpZiAodGJbVENBX1BPTElDRV9SRVNVTFRdKSB7XG4gXHRcdHRjZnBfcmVzdWx0ID0gbmxhX2dldF91MzIodGJbVENBX1BPTElDRV9SRVNVTFRdKTtcbiYjNDM7XHRcdGlmICghdGNmX2FjdGlvbl92YWxpZCh0Y2ZwX3Jlc3VsdCkpIHtcbiYjNDM7XHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuJiM0MztcdFx0XHRcdCAgICAgICBcJiMzNDtpbnZhbGlkIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9uXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ZXJyID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0Z290byBmYWlsdXJlO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAoVENfQUNUX0VYVF9DTVAodGNmcF9yZXN1bHQsIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiBcdFx0XHRcdCAgICAgICBcJiMzNDtnb3RvIGNoYWluIG5vdCBhbGxvd2VkIG9uIGZhbGxiYWNrXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUE9MSUNFJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfR0FDVCYjMzQ7LAogICAgJiMzNDtHQUNUX1BST0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfYWN0aW9uX2luaXRfMSYjMzQ7LAogICAgJiMzNDt0Y2ZfYWN0aW9uX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmUwZDY1ODdkODJkZTY3MGEyMGJiZGJkOTM1MDAwYmFmYmRiYTgxMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTE6MDA6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hY3RfYXBpLmggYi9pbmNsdWRlL25ldC9hY3RfYXBpLmgKaW5kZXggMjBkOWU1NWY4NTY0ZC4uZmQwM2Y2MzE5ZTg4MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYWN0X2FwaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FjdF9hcGkuaApAQCAtMjcwLDYgJiM0MzsyNzAsMjUgQEAgaW50IHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdChpbnQgYWN0aW9uLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwKIHN0cnVjdCB0Y2ZfY2hhaW4gKnRjZl9hY3Rpb25fc2V0X2N0cmxhY3Qoc3RydWN0IHRjX2FjdGlvbiAqYSwgaW50IGFjdGlvbiwKIAkJCQkJIHN0cnVjdCB0Y2ZfY2hhaW4gKm5ld2NoYWluKTsKIAomIzQzOy8qIFJhbmdlIGNoZWNrIGZvciBhIGNvbnRyb2wgYWN0aW9uIHN1cHBsaWVkIGJ5IHVzZXIgc3BhY2UuCiYjNDM7ICoKJiM0MzsgKiBUaGlzIGlzIHRoZSBzYW1lIHRlc3QgdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KCkgYXBwbGllcyB0byB0aGUgcHJpbWFyeQomIzQzOyAqIGNvbnRyb2wgYWN0aW9uLCBmYWN0b3JlZCBvdXQgZm9yIHRoZSAqZmFsbGJhY2sqIGNvbnRyb2wgYWN0aW9ucwomIzQzOyAqIChhY3RfZ2FjdCYjMzk7cyBUQ0FfR0FDVF9QUk9CLnBhY3Rpb24gYW5kIGFjdF9wb2xpY2UmIzM5O3MgVENBX1BPTElDRV9SRVNVTFQpLAomIzQzOyAqIHdoaWNoIG11c3Qgbm90IHJlYWNoIHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdCgpIGJlY2F1c2UgdGhleSBoYXZlIG5vCiYjNDM7ICogZ290b19jaGFpbiB0byBhbGxvY2F0ZS4gIFdpdGhvdXQgaXQsIHVzZXIgc3BhY2UgY2FuIHN0b3JlIGtlcm5lbC1pbnRlcm5hbAomIzQzOyAqIHZlcmRpY3RzIHN1Y2ggYXMgVENfQUNUX0NPTlNVTUVELCB3aGljaCBpcyBUQ19BQ1RfVkFMVUVfTUFYICYjNDM7IDEgYW5kIGlzCiYjNDM7ICogZGVsaWJlcmF0ZWx5IG5vdCBwYXJ0IG9mIHRoZSBVQVBJIHZhbHVlIHJhbmdlLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCB0Y2ZfYWN0aW9uX3ZhbGlkKGludCBhY3Rpb24pCiYjNDM7ewomIzQzOwlpbnQgb3Bjb2RlID0gVENfQUNUX0VYVF9PUENPREUoYWN0aW9uKTsKJiM0MzsKJiM0MzsJaWYgKCFvcGNvZGUpCiYjNDM7CQlyZXR1cm4gYWN0aW9uICZsdDs9IFRDX0FDVF9WQUxVRV9NQVg7CiYjNDM7CXJldHVybiBvcGNvZGUgJmx0Oz0gVENfQUNUX0VYVF9PUENPREVfTUFYIHx8IGFjdGlvbiA9PSBUQ19BQ1RfVU5TUEVDOwomIzQzO30KJiM0MzsKICNpZmRlZiBDT05GSUdfSU5FVAogREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKHRjZl9mcmFnX3htaXRfY291bnQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dhY3QuYyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jCmluZGV4IGU5NDkyODBlYjgwMGQuLjU2NTg2MGNjY2JhNmQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfZ2FjdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jCkBAIC04OSw2ICYjNDM7ODksMTEgQEAgc3RhdGljIGludCB0Y2ZfZ2FjdF9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLAogCQlwX3Bhcm0gPSBubGFfZGF0YSh0YltUQ0FfR0FDVF9QUk9CXSk7CiAJCWlmIChwX3Bhcm0tJmd0O3B0eXBlICZndDs9IE1BWF9SQU5EKQogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQlpZiAoIXRjZl9hY3Rpb25fdmFsaWQocF9wYXJtLSZndDtwYWN0aW9uKSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywKJiM0MzsJCQkJICAgICAgICYjMzQ7aW52YWxpZCBmYWxsYmFjayBjb250cm9sIGFjdGlvbiYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KIAkJaWYgKFRDX0FDVF9FWFRfQ01QKHBfcGFybS0mZ3Q7cGFjdGlvbiwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7CiAJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCiAJCQkJICAgICAgICYjMzQ7Z290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFjayYjMzQ7KTsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfcG9saWNlLmMgYi9uZXQvc2NoZWQvYWN0X3BvbGljZS5jCmluZGV4IGIxNjQ2OGE5OGM1NWUuLmNlMDhmNjg0MGVmN2MgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfcG9saWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9wb2xpY2UuYwpAQCAtMTI4LDYgJiM0MzsxMjgsMTIgQEAgc3RhdGljIGludCB0Y2ZfcG9saWNlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsCiAKIAlpZiAodGJbVENBX1BPTElDRV9SRVNVTFRdKSB7CiAJCXRjZnBfcmVzdWx0ID0gbmxhX2dldF91MzIodGJbVENBX1BPTElDRV9SRVNVTFRdKTsKJiM0MzsJCWlmICghdGNmX2FjdGlvbl92YWxpZCh0Y2ZwX3Jlc3VsdCkpIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCiYjNDM7CQkJCSAgICAgICAmIzM0O2ludmFsaWQgZmFsbGJhY2sgY29udHJvbCBhY3Rpb24mIzM0Oyk7CiYjNDM7CQkJZXJyID0gLUVJTlZBTDsKJiM0MzsJCQlnb3RvIGZhaWx1cmU7CiYjNDM7CQl9CiAJCWlmIChUQ19BQ1RfRVhUX0NNUCh0Y2ZwX3Jlc3VsdCwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7CiAJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCiAJCQkJICAgICAgICYjMzQ7Z290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFjayYjMzQ7KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgQ29uZmlndXJhdGlvbiBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIGEgZ29vZCwgc2Vuc2libGUgaGFyZGVuaW5nIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgYWRkaW5nIGEgcmFuZ2UgY2hlY2sgZm9yIHVzZXItc3VwcGxpZWQgY29udHJvbCBhY3Rpb25zIHdpdGhpbiB0aGUgYG5ldC9zY2hlZGAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gYGFjdF9nYWN0LmNgIGFuZCBgYWN0X3BvbGljZS5jYC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYHRjZl9hY3Rpb25fdmFsaWRgIGZ1bmN0aW9uIGluIGBpbmNsdWRlL25ldC9hY3RfYXBpLmhgIGFuZCBpdHMgdXNhZ2Ugd2l0aGluIGB0Y2ZfZ2FjdF9pbml0YCBhbmQgYHRjZl9wb2xpY2VfaW5pdGAgaXMgYSBjbGVhbiB3YXkgdG8gaW1wbGVtZW50IHRoaXMgdmFsaWRhdGlvbi4gUHJldmVudGluZyBpbnZhbGlkIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9ucyBpbXByb3ZlcyB0aGUgb3ZlcmFsbCByb2J1c3RuZXNzIG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBpbXByb3Zpbmcgc2VjdXJpdHkgYW5kIHN0YWJpbGl0eS4KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBuZXQvc2NoZWQvYWN0X2dhY3QuY2AgY29ycmVzcG9uZHMgdG8gYE5FVF9BQ1RfR0FDVGAsIGFuZCBgbmV0L3NjaGVkL2FjdF9wb2xpY2UuY2AgY29ycmVzcG9uZHMgdG8gYE5FVF9BQ1RfUE9MSUNFYC4gTm93LCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBtb2R1bGVzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBtaWdodCBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9BQ1RfR0FDVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0Vcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MjUtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MjY6Y29uZmlnIE5FVF9BQ1RfR0FDVFxubmV0L3NjaGVkL0tjb25maWctNzI3LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBhY3Rpb25zXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzM2PWNvbmZpZyBHQUNUX1BST0Jcbm5ldC9zY2hlZC9LY29uZmlnLTczNy1cdGJvb2wgXCYjMzQ7UHJvYmFiaWxpdHkgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzM4Olx0ZGVwZW5kcyBvbiBORVRfQUNUX0dBQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTczOS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDkyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgR0FDVF9QUk9CIGFuZCBUQ0FfR0FDVF9QUk9CIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSBzZWUgdGhhdCBgR0FDVF9QUk9CYCBpcyBhIHJlcXVpcmVkIGlucHV0IGZvciBgVENBX0dBQ1RfUFJPQmAgd2l0aGluIGBhY3RfZ2FjdC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCBidXQgaXQmIzM5O3MgYWx3YXlzIHdpc2UgdG8gYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSB0aGluZ3MsIGVzcGVjaWFsbHkgaW4gcGVyZm9ybWFuY2UtY3JpdGljYWwgc2VjdGlvbnMgb2YgdGhlIGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MganVzdCBjb25maXJtIGhvdyBgR0FDVF9QUk9CYCBpcyBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiB0aGF0IG1vZHVsZS4gVGhlcmUgY291bGQgYmUgc3VidGxlIGRlcGVuZGVuY2llcyBvciBlZGdlIGNhc2VzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIG9yIHBlcmhhcHMgYW4gb3Bwb3J0dW5pdHkgZm9yIG9wdGltaXphdGlvbiBJIGhhdmVuJiMzOTt0IHNwb3R0ZWQgeWV0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYGFjdF9nYWN0LmNgIGZpbGUgYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoYXQgcGllY2Ugb2YgdGhlIHB1enpsZS4gR290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgbGluZWQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RDQV9HQUNUX1BST0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2dhY3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2dhY3QuYz00OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZ2FjdF9wb2xpY3lbVENBX0dBQ1RfTUFYICYjNDM7IDFdID0ge1xubmV0L3NjaGVkL2FjdF9nYWN0LmMtNDktXHRbVENBX0dBQ1RfUEFSTVNdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgdGNfZ2FjdCkgfSxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjUwOlx0W1RDQV9HQUNUX1BST0JdXHRcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB0Y19nYWN0X3ApIH0sXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy01MS19O1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTUzPXN0YXRpYyBpbnQgdGNmX2dhY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy04NC0jaWZuZGVmIENPTkZJR19HQUNUX1BST0Jcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjg1Olx0aWYgKHRiW1RDQV9HQUNUX1BST0JdICE9IE5VTEwpXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy04Ni1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xubmV0L3NjaGVkL2FjdF9nYWN0LmMtODctI2Vsc2Vcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjg4Olx0aWYgKHRiW1RDQV9HQUNUX1BST0JdKSB7XG5uZXQvc2NoZWQvYWN0X2dhY3QuYzo4OTpcdFx0cF9wYXJtID0gbmxhX2RhdGEodGJbVENBX0dBQ1RfUFJPQl0pO1xubmV0L3NjaGVkL2FjdF9nYWN0LmMtOTAtXHRcdGlmIChwX3Bhcm0tXHUwMDNlcHR5cGUgXHUwMDNlPSBNQVhfUkFORClcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYz0xOTA9c3RhdGljIGludCB0Y2ZfZ2FjdF9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4tLVxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMjEzLVxubmV0L3NjaGVkL2FjdF9nYWN0LmM6MjE0Olx0XHRpZiAobmxhX3B1dChza2IsIFRDQV9HQUNUX1BST0IsIHNpemVvZihwX29wdCksIFx1MDAyNnBfb3B0KSlcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTIxNS1cdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYz0yMzE9c3RhdGljIHNpemVfdCB0Y2ZfZ2FjdF9nZXRfZmlsbF9zaXplKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmFjdClcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yMzYtXHRpZiAodG9fZ2FjdChhY3QpLVx1MDAzZXRjZmdfcHR5cGUpXG5uZXQvc2NoZWQvYWN0X2dhY3QuYzoyMzc6XHRcdC8qIFRDQV9HQUNUX1BST0IgKi9cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTIzOC1cdFx0c3ogJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgdGNfZ2FjdF9wKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktjb25maWcgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBNZW50YWwgQXVkaXQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzLCBhbmQgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvZGUgY2hhbmdlcyBpbiBgYWN0X2dhY3QuY2AgYXJlIGd1YXJkZWQgYmVoaW5kIHRoZSBgQ09ORklHX0dBQ1RfUFJPQmAgKmFuZCogYENPTkZJR19ORVRfQUNUX0dBQ1RgIG9wdGlvbnMuIE1ha2VzIHNlbnNlLCB0aGF0JiMzOTtzIHRoZSBwcm9iYWJpbGlzdGljIGdhY3QgZnVuY3Rpb25hbGl0eS4gQW5kLCBhcyBleHBlY3RlZCwgYGFjdF9wb2xpY2UuY2AgbmVlZHMgYENPTkZJR19ORVRfQUNUX1BPTElDRWAuIE5vIHN1cnByaXNlcyB0aGVyZS4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgY29ycmVjdCBmb3IgdGhvc2UgbW9kdWxlcy4gVGltZSB0byBkaWcgaW50byBgbmV0L3NjaGVkL0tjb25maWdgIGFuZCB2ZXJpZnkgdGhlIGBORVRfQUNUX1BPTElDRWAgZGVmaW5pdGlvbi4gSnVzdCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGRlcGVuZGVuY3kgdHJlZSBiZWZvcmUgSSBtYWtlIGFueSBtb2RpZmljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQUNUX1BPTElDRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTcwMj1jb25maWcgTkVUX0NMU19BQ1Rcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MTQtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MTU6Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFBvbGljaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgcmVsZXZhbnQgZmllbGQ6CgoqKkFzc2Vzc2luZyBEZXBlbmRlbmNpZXMqKgoKSG1tLCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHNvbWV0aGluZyBhbmQgSSYjMzk7dmUgY29tZSBhY3Jvc3MgdGhpcyBgTkVUX0NMU19BQ1RgIHRlcm0uIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYWxtb3N0IGNlcnRhaW4gdGhhdCB3aGF0ZXZlciB0aGUgc3lzdGVtIG9yIHByb2Nlc3MgSSYjMzk7bSB3b3JraW5nIHdpdGggaXMsIHRoaXMgYE5FVF9DTFNfQUNUYCBjb21wb25lbnQgb3IgYWN0aXZhdGlvbiBpcyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIFRoZSB3YXkgaXQmIzM5O3MgcGhyYXNlZCBpbXBsaWVzIGEgcG90ZW50aWFsIGRlcGVuZGVuY2Ugb24gaXQgYmVpbmcgcHJlc2VudCBvciBhY3RpdmUuIFRoYXQgYmVpbmcgdGhlIGNhc2UsIEkmIzM5O2Qgc2F5IHRoYXQgSSYjMzk7bGwgcHJvYmFibHkgbmVlZCBgTkVUX0NMU19BQ1RgIGZvciAqYm90aCogb2YgdGhlIGZ1bmN0aW9ucyBvciBtb2R1bGVzIHRoYXQgSSYjMzk7bSBjb25zaWRlcmluZy4gVGhlcmUgaXNuJiMzOTt0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBuYXJyb3cgZG93biB3aGljaCBmdW5jdGlvbiwgc28gSSYjMzk7bSBpbmZlcnJpbmcgYSB1bml2ZXJzYWwgZGVwZW5kZW5jeS4gSSBjYW4gYWx3YXlzIGNoZWNrIG9uIHRoaXMgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTX0FDVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MDEtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDI6Y29uZmlnIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXHRib29sIFwmIzM0O0FjdGlvbnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTExNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jaWVzOiBORVRfQUNUX1BPTElDRSBhbmQgTkVUX0FDVF9HQUNUKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgY3J1Y2lhbCBwcmVsaW1pbmFyeSBzdGVwOiBJIG5lZWQgdG8gYXNjZXJ0YWluIHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzIG9mIGBORVRfQUNUX1BPTElDRWAgYW5kIGBORVRfQUNUX0dBQ1RgLiBLbm93aW5nIHdoYXQgdGhlc2UgZnVuY3Rpb25hbGl0aWVzIHJlbHkgb24gaXMgYWJzb2x1dGVseSBmdW5kYW1lbnRhbCBmb3IgYW55IG1vZGlmaWNhdGlvbiwgZGVidWdnaW5nLCBvciBldmVuIGp1c3QgYSBnZW5lcmFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlaXIgcGxhY2Ugd2l0aGluIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2suIEl0JiMzOTtzIHRvbyByaXNreSB0byBwcm9jZWVkIHdpdGhvdXQgdGhhdCBzb2xpZCBmb3VuZGF0aW9uLiBJ4oCZbSB0aGlua2luZywgdGhpcyBkZXBlbmRlbmN5IGluZm9ybWF0aW9uLCBvbmNlIHNlY3VyZWQsIHdpbGwgZ3VpZGUgbXkgbmV4dCBzdGVwcyAtIGF2b2lkaW5nIGEgcG90ZW50aWFsbHkgbWVzc3kgc2l0dWF0aW9uIHdpdGggdW5mb3Jlc2VlbiBjb25zZXF1ZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKk5FVF9DTFNfQUNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1Ncbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cdHRyaXN0YXRlIFwmIzM0O0luZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTM1MC1cdHNlbGVjdCBORVRfWEdSRVNTXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzE1PWNvbmZpZyBORVRfQUNUX1BPTElDRVxubmV0L3NjaGVkL0tjb25maWctNzE2LVx0dHJpc3RhdGUgXCYjMzQ7VHJhZmZpYyBQb2xpY2luZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzE3Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzE4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcyNj1jb25maWcgTkVUX0FDVF9HQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGFjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcyODpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXG5uZXQvc2NoZWQvS2NvbmZpZy03NDMtXHR0cmlzdGF0ZSBcJiMzNDtSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NDQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NDUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzUyPWNvbmZpZyBORVRfQUNUX1NBTVBMRVxubmV0L3NjaGVkL0tjb25maWctNzUzLVx0dHJpc3RhdGUgXCYjMzQ7VHJhZmZpYyBTYW1wbGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzU0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzU1LVx0c2VsZWN0IFBTQU1QTEVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXHR0cmlzdGF0ZSBcJiMzNDtTdGF0ZWxlc3MgTkFUXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NjY6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXG5uZXQvc2NoZWQvS2NvbmZpZy03NzUtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRWRpdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzc2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzc3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc4Mz1jb25maWcgTkVUX0FDVF9TSU1QXG5uZXQvc2NoZWQvS2NvbmZpZy03ODQtXHR0cmlzdGF0ZSBcJiMzNDtTaW1wbGUgRXhhbXBsZSAoRGVidWcpXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03ODYtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9Nzk3PWNvbmZpZyBORVRfQUNUX1NLQkVESVRcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cdHRyaXN0YXRlIFwmIzM0O1NLQiBFZGl0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3OTk6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cbm5ldC9zY2hlZC9LY29uZmlnLTgwOS1cdHRyaXN0YXRlIFwmIzM0O0NoZWNrc3VtIFVwZGF0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4MTA6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBJTkVUXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXHRzZWxlY3QgTkVUX0NSQzMyQ1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXG5uZXQvc2NoZWQvS2NvbmZpZy04MjAtXHR0cmlzdGF0ZSBcJiMzNDtNUExTIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODIxOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODIyLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgzMD1jb25maWcgTkVUX0FDVF9WTEFOXG5uZXQvc2NoZWQvS2NvbmZpZy04MzEtXHR0cmlzdGF0ZSBcJiMzNDtWbGFuIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODMyOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODMzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg0MT1jb25maWcgTkVUX0FDVF9CUEZcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cdHRyaXN0YXRlIFwmIzM0O0JQRiBiYXNlZCBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg0MzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcbm5ldC9zY2hlZC9LY29uZmlnLTg1NC1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4NTU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ni1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg2NT1jb25maWcgTkVUX0FDVF9DVElORk9cbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgQWN0aW9uc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODY3Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvc2NoZWQvS2NvbmZpZy04NjgtXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04ODI9Y29uZmlnIE5FVF9BQ1RfU0tCTU9EXG5uZXQvc2NoZWQvS2NvbmZpZy04ODMtXHR0cmlzdGF0ZSBcJiMzNDtza2IgZGF0YSBtb2RpZmljYXRpb24gYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4ODQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04ODUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODkzPWNvbmZpZyBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctODk0LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXItRkUgYWN0aW9uIGJhc2VkIG9uIElFVEYgRm9yQ0VTIEludGVyRkUgTEZCXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4OTU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04OTYtXHRzZWxlY3QgTkVUX0lGRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXG5uZXQvc2NoZWQvS2NvbmZpZy05MDctXHR0cmlzdGF0ZSBcJiMzNDtJUCB0dW5uZWwgbWV0YWRhdGEgbWFuaXB1bGF0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MDg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05MDktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTE3PWNvbmZpZyBORVRfQUNUX0NUXG5uZXQvc2NoZWQvS2NvbmZpZy05MTgtXHR0cmlzdGF0ZSBcJiMzNDtjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTE5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiAoIU5GX05BVCB8fCBORl9OQVQpIFx1MDAyNlx1MDAyNiBORl9GTE9XX1RBQkxFXG5uZXQvc2NoZWQvS2NvbmZpZy05MjAtXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkzMD1jb25maWcgTkVUX0FDVF9HQVRFXG5uZXQvc2NoZWQvS2NvbmZpZy05MzEtXHR0cmlzdGF0ZSBcJiMzNDtGcmFtZSBnYXRlIGVudHJ5IGxpc3QgY29udHJvbCB0YyBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkzMjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTkzMy1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05NTQ9Y29uZmlnIE5FVF9UQ19TS0JfRVhUXG5uZXQvc2NoZWQvS2NvbmZpZy05NTUtXHRib29sIFwmIzM0O1RDIHJlY2lyY3VsYXRpb24gc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTU2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTU3LVx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNDQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipEZWNpZGluZyBvbiB0aGUgQ29yZSBOZXR3b3JrIEFjdGlvbiBDb21wb25lbnRzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgYnVpbGRpbmcgdGhpcyBvdXQsIGFuZCBpdCBsb29rcyBsaWtlIHdlJiMzOTtsbCBhYnNvbHV0ZWx5IG5lZWQgdG8gaGF2ZSBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9QT0xJQ0VgLCBgTkVUX0FDVF9HQUNUYCwgYW5kIHRoZSBnZW5lcmFsaXplZCBhY3Rpb24gcHJvYmFiaWxpdHksIGBHQUNUX1BST0JgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmb3IgY29udHJvbGxpbmcgbmV0d29yayBiZWhhdmlvci4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYE5FVF9DTFNfQUNUYCBkaXJlY3RseSBkZXBlbmRlbnQgb24gYE5FVF9TQ0hFRGA/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCByZWxhdGlvbnNoaXAgYmVmb3JlIG1vdmluZyBmb3J3YXJkOyBpdCYjMzk7cyBhIGNyaXRpY2FsIGRlcGVuZGVuY3kgSSBjYW4mIzM5O3QgYWZmb3JkIHRvIG92ZXJsb29rIGF0IHRoaXMgc3RhZ2UuIEJldHRlciB0byBkb3VibGUtY2hlY2sgbm93IHRoYW4gaGF2ZSB0byB1bndpbmQgYSBidW5jaCBvZiB3b3JrIGxhdGVyLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBUcmFmZmljIENvbnRyb2wgQWN0aW9uIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoaXMga2VybmVsIG1vZHVsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucy4gUmlnaHQsIGBORVRfU0NIRURgIGlzIHRoZSByaWdodCBtZW51Y29uZmlnIHNldHRpbmcsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhlIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGB0Y2ZfZ2FjdF9pbml0YCBpbiBgbmV0L3NjaGVkL2FjdF9nYWN0LmNgIGFuZCBgdGNmX3BvbGljZV9pbml0YCBpbiBgbmV0L3NjaGVkL2FjdF9wb2xpY2UuY2AgLSB0aG9zZSBzZWVtIGxpa2UgdGhlIGxpa2VseSBjYW5kaWRhdGVzLgoKTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBpZiB0aG9zZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIHN0YXRpYyBvciBub3QuIFl1cCwgZnJvbSB0aGUgcGF0Y2gsIEkgY2FuIHNlZSB0aGV5IGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gU2luY2UgdGhlc2UgYXJlIGBzdGF0aWNgLCBpdCBtZWFucyB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMgd29uJiMzOTt0IGJlIHN1aXRhYmxlIGZvciBteSBgRm9jdXNTeW1ib2xzYCBhbmFseXNpcy4gV2UgbmVlZCBub24tc3RhdGljIGVudHJ5IHBvaW50cy4KCk9rYXksIGxldCYjMzk7cyBiYWNrIHVwIGEgc3RlcC4gSSByZWNhbGwgdGhlc2UgYWN0aW9uIGluaXQgZnVuY3Rpb25zIGFyZSB1c3VhbGx5IGNhbGxlZCB0aHJvdWdoIGB0Y2ZfYWN0aW9uX2luaXRfMWAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AuIFRob3NlIGVudHJ5IHBvaW50cyBhcmUgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNmX2dhY3RfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfZ2FjdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfZ2FjdC5jPTI2PXN0YXRpYyBpbnQgZ2FjdF9uZXRfcmFuZChzdHJ1Y3QgdGNmX2dhY3QgKmdhY3QpXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yNy17XG5uZXQvc2NoZWQvYWN0X2dhY3QuYzoyODpcdHNtcF9ybWIoKTsgLyogY291cGxlZCB3aXRoIHNtcF93bWIoKSBpbiB0Y2ZfZ2FjdF9pbml0KCkgKi9cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTI5LVx0aWYgKGdldF9yYW5kb21fdTMyX2JlbG93KGdhY3QtXHUwMDNldGNmZ19wdmFsKSlcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYz0zND1zdGF0aWMgaW50IGdhY3RfZGV0ZXJtKHN0cnVjdCB0Y2ZfZ2FjdCAqZ2FjdClcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0zNy1cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjM4Olx0c21wX3JtYigpOyAvKiBjb3VwbGVkIHdpdGggc21wX3dtYigpIGluIHRjZl9nYWN0X2luaXQoKSAqL1xubmV0L3NjaGVkL2FjdF9nYWN0LmMtMzktXHRpZiAocGFjayAlIGdhY3QtXHUwMDNldGNmZ19wdmFsKVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYWN0X3BvbGljeVtUQ0FfR0FDVF9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9nYWN0LmMtNTItXG5uZXQvc2NoZWQvYWN0X2dhY3QuYzo1MzpzdGF0aWMgaW50IHRjZl9nYWN0X2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy01NC1cdFx0XHQgc3RydWN0IG5sYXR0ciAqZXN0LCBzdHJ1Y3QgdGNfYWN0aW9uICoqYSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYz0yOTI9c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9nYWN0X29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yOTgtXHQuZHVtcFx0XHQ9XHR0Y2ZfZ2FjdF9kdW1wLFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6Mjk5Olx0LmluaXRcdFx0PVx0dGNmX2dhY3RfaW5pdCxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTMwMC1cdC5nZXRfZmlsbF9zaXplXHQ9XHR0Y2ZfZ2FjdF9nZXRfZmlsbF9zaXplLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mzc0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqTXkgVW5kZXJzdGFuZGluZyBvZiBUcmFmZmljIENvbnRyb2wgQWN0aW9uIEluaXRpYWxpemF0aW9uKioKClJpZ2h0LCBzbyBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSB3aG9sZSBwcm9jZXNzIG9mIHNldHRpbmcgdXAgdGhlc2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbnMgaXMgcHJldHR5IGZ1bmRhbWVudGFsLiBUaGUga2VybmVsIHRyYWNrcyB0aGVtIHVzaW5nIHRoZSBgdGNfYWN0aW9uX29wc2AgZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBkZWZpbml0aW9uIG9mIGVhY2ggc3BlY2lmaWMgYWN0aW9uIGlzIGtlcHQuIFRoZSBjb3JlIGVudHJ5IHBvaW50cywgdGhlIHN0YXJ0aW5nIGd1biBmb3IgYWN0aW9uIGluaXRpYWxpemF0aW9uLCBhcmUgYHRjZl9hY3Rpb25faW5pdF8xYCBvciBgdGNmX2FjdGlvbl9pbml0YCB3aXRoaW4gYG5ldC9zY2hlZC9hY3RfYXBpLmNgLiBTbywgd2hlbiBJIG5lZWQgdG8gbG9vayBhdCBob3cgYWN0aW9ucyBhcmUgYWRkZWQsIGNvbmZpZ3VyZWQsIG9yIGhhbmRsZWQsIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcg4oCTIGBhY3RfYXBpLmNgIGFuZCBzcGVjaWZpY2FsbHkgdGhvc2UgaW5pdCBmdW5jdGlvbnMuIEl0IHRlbGxzIG1lIHdoZXJlIHRoZSB3aG9sZSBiYWxsIG9mIHdheCBnZXRzIHJvbGxpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9hY3Rpb25faW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9hcGkuYz0xMDE3PWludCB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKHN0cnVjdCB0Y19hY3Rpb25fb3BzICphY3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI2LVx0LyogV2UgaGF2ZSB0byByZWdpc3RlciBwZXJuZXQgb3BzIGJlZm9yZSBtYWtpbmcgdGhlIGFjdGlvbiBvcHMgdmlzaWJsZSxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTAyNzpcdCAqIG90aGVyd2lzZSB0Y2ZfYWN0aW9uX2luaXRfMSgpIGNvdWxkIGdldCBhIHBhcnRpYWxseSBpbml0aWFsaXplZFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI4LVx0ICogbmV0bnMuXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xMzM0PXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk2LVxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMzk3OnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTgtXHRcdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xNDU5PXN0YXRpYyBib29sIHRjX2FjdF9iaW5kKHUzMiBmbGFncylcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjUtXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE0NjY6aW50IHRjZl9hY3Rpb25faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgbmxhdHRyICpubGEsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjctXHRcdCAgICBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKmFjdGlvbnNbXSxcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE1MDctXHRmb3IgKGkgPSAxOyBpIFx1MDAzYz0gVENBX0FDVF9NQVhfUFJJTyBcdTAwMjZcdTAwMjYgdGJbaV07IGkmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE1MDg6XHRcdGFjdCA9IHRjZl9hY3Rpb25faW5pdF8xKG5ldCwgdHAsIHRiW2ldLCBlc3QsIG9wc1tpIC0gMV0sXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE1MDktXHRcdFx0XHRcdFx1MDAyNmluaXRfcmVzW2kgLSAxXSwgZmxhZ3MsIGV4dGFjayk7XG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0yMDk2PXN0YXRpYyBpbnQgdGNmX2FjdGlvbl9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0yMTA1LVx0Zm9yIChsb29wID0gMDsgbG9vcCBcdTAwM2MgMTA7IGxvb3AmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvYWN0X2FwaS5jOjIxMDY6XHRcdHJldCA9IHRjZl9hY3Rpb25faW5pdChuZXQsIE5VTEwsIG5sYSwgTlVMTCwgYWN0aW9ucywgaW5pdF9yZXMsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIxMDctXHRcdFx0XHQgICAgICBcdTAwMjZhdHRyX3NpemUsIGZsYWdzLCAwLCBleHRhY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjk2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFuYWx5emluZyBFbnRyeSBQb2ludHMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24gb24gdGhlc2UgZW50cnkgcG9pbnRzLiBTcGVjaWZpY2FsbHksIGB0Y2ZfYWN0aW9uX2luaXRfMWAgYW5kIGB0Y2ZfYWN0aW9uX2luaXRgLi4uIHRoZXNlIGFyZSB0aGUgb25lcyAqbm90KiBkZWNsYXJlZCBhcyBzdGF0aWMsIHNvIHRoZXkmIzM5O3JlIGxpa2VseSB0aGUgcHVibGljIGludGVyZmFjZXMgdG8gdGhlIGZ1bmN0aW9uYWxpdHkuIEJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlaXIgZXhwb3J0IHN0YXR1cy4gQXJlIHRoZXkgYWN0dWFsbHkgKmV4cG9ydGVkKiBzeW1ib2xzIGF2YWlsYWJsZSBmb3IgZXh0ZXJuYWwgbGlua2luZywgb3IgYXJlIHRoZXkgaW50ZXJuYWwgdG8gYSBwYXJ0aWN1bGFyIG1vZHVsZT8gVGhpcyB3aWxsIGRldGVybWluZSBob3cgYWNjZXNzaWJsZSB0aGV5IGFyZSBmb3IgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfYWN0aW9uX2luaXRfMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9hcGkuYz0xMDE3PWludCB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKHN0cnVjdCB0Y19hY3Rpb25fb3BzICphY3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI2LVx0LyogV2UgaGF2ZSB0byByZWdpc3RlciBwZXJuZXQgb3BzIGJlZm9yZSBtYWtpbmcgdGhlIGFjdGlvbiBvcHMgdmlzaWJsZSxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTAyNzpcdCAqIG90aGVyd2lzZSB0Y2ZfYWN0aW9uX2luaXRfMSgpIGNvdWxkIGdldCBhIHBhcnRpYWxseSBpbml0aWFsaXplZFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI4LVx0ICogbmV0bnMuXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xMzM0PXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk2LVxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMzk3OnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTgtXHRcdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xNDY2PWludCB0Y2ZfYWN0aW9uX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgc3RydWN0IG5sYXR0ciAqbmxhLFxuLS1cbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwNy1cdGZvciAoaSA9IDE7IGkgXHUwMDNjPSBUQ0FfQUNUX01BWF9QUklPIFx1MDAyNlx1MDAyNiB0YltpXTsgaSYjNDM7JiM0MzspIHtcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTUwODpcdFx0YWN0ID0gdGNmX2FjdGlvbl9pbml0XzEobmV0LCB0cCwgdGJbaV0sIGVzdCwgb3BzW2kgLSAxXSxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwOS1cdFx0XHRcdFx0XHUwMDI2aW5pdF9yZXNbaSAtIDFdLCBmbGFncywgZXh0YWNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgdGNmX2FjdGlvbl9pbml0YCoqCgpPa2F5LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdGhhdCBgdGNmX2FjdGlvbl9pbml0XzFgIGlzbiYjMzk7dCBhIHN0YXRpYyB2YXJpYWJsZS4gVGhpcyBpbXBsaWVzIHRoYXQgaXRzIHZhbHVlIGNhbiBjaGFuZ2Ugb3ZlciB0aW1lLCBhbmQgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGZpeGVkIGF0IGNvbXBpbGUgdGltZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IHJhaXNlcyBhIGZldyBpbW1lZGlhdGUgcXVlc3Rpb25zIGFib3V0IHRoZSBzY29wZSBhbmQgbGlmZWN5Y2xlIG9mIHRoYXQgdmFyaWFibGUuCgpNeSBuZXh0IG1vdmUgaXMgdG8gemVybyBpbiBvbiBgdGNmX2FjdGlvbl9pbml0YCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLCBhbmQgd2hhdCBpdHMgcmVsYXRpb25zaGlwIGlzIHRvIGB0Y2ZfYWN0aW9uX2luaXRfMWAuIElzIGB0Y2ZfYWN0aW9uX2luaXRgIHBvdGVudGlhbGx5IGEgZnVuY3Rpb24gdGhhdCBwb3B1bGF0ZXMgb3IgbW9kaWZpZXMgYHRjZl9hY3Rpb25faW5pdF8xYD8gSXMgdGhlcmUgc29tZSBraW5kIG9mIGluaXRpYWxpemF0aW9uIG9yIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgdHdvPyBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgY29kZSB3aGVyZSBgdGNmX2FjdGlvbl9pbml0YCBpcyBkZWZpbmVkIGFuZCB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYXJvdW5kIGB0Y2ZfYWN0aW9uX2luaXRgIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciwgYW5kIGltcGxpY2F0aW9ucywgb2YgYHRjZl9hY3Rpb25faW5pdF8xYC4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlZCB2YXJpYWJsZXMvZnVuY3Rpb25zIGFyZSBpbnRlcmFjdGluZywgYW5kIHdoYXQgdGhhdCBtaWdodCBiZSBhYmxlIHRvIHRlbGwgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9hY3Rpb25faW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9hcGkuYz0xMDE3PWludCB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKHN0cnVjdCB0Y19hY3Rpb25fb3BzICphY3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI2LVx0LyogV2UgaGF2ZSB0byByZWdpc3RlciBwZXJuZXQgb3BzIGJlZm9yZSBtYWtpbmcgdGhlIGFjdGlvbiBvcHMgdmlzaWJsZSxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTAyNzpcdCAqIG90aGVyd2lzZSB0Y2ZfYWN0aW9uX2luaXRfMSgpIGNvdWxkIGdldCBhIHBhcnRpYWxseSBpbml0aWFsaXplZFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI4LVx0ICogbmV0bnMuXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xMzM0PXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk2LVxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMzk3OnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTgtXHRcdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xNDU5PXN0YXRpYyBib29sIHRjX2FjdF9iaW5kKHUzMiBmbGFncylcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjUtXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE0NjY6aW50IHRjZl9hY3Rpb25faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgbmxhdHRyICpubGEsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjctXHRcdCAgICBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKmFjdGlvbnNbXSxcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE1MDctXHRmb3IgKGkgPSAxOyBpIFx1MDAzYz0gVENBX0FDVF9NQVhfUFJJTyBcdTAwMjZcdTAwMjYgdGJbaV07IGkmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE1MDg6XHRcdGFjdCA9IHRjZl9hY3Rpb25faW5pdF8xKG5ldCwgdHAsIHRiW2ldLCBlc3QsIG9wc1tpIC0gMV0sXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE1MDktXHRcdFx0XHRcdFx1MDAyNmluaXRfcmVzW2kgLSAxXSwgZmxhZ3MsIGV4dGFjayk7XG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0yMDk2PXN0YXRpYyBpbnQgdGNmX2FjdGlvbl9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0yMTA1LVx0Zm9yIChsb29wID0gMDsgbG9vcCBcdTAwM2MgMTA7IGxvb3AmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvYWN0X2FwaS5jOjIxMDY6XHRcdHJldCA9IHRjZl9hY3Rpb25faW5pdChuZXQsIE5VTEwsIG5sYSwgTlVMTCwgYWN0aW9ucywgaW5pdF9yZXMsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIxMDctXHRcdFx0XHQgICAgICBcdTAwMjZhdHRyX3NpemUsIGZsYWdzLCAwLCBleHRhY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk1MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgVENGIEFjdGlvbiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBgdGNmX2FjdGlvbl9pbml0YCBpcyB0aGUgb25lIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLCBhbmQgSSByZWNhbGwgaXQmIzM5O3MgZGVjbGFyZWQgaW4gYGluY2x1ZGUvbmV0L2FjdF9hcGkuaGAuIFJpZ2h0LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGF0IGhlYWRlciBmaWxlIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHRjZl9hY3Rpb25faW5pdGAgaXRzZWxmLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBiYXNlIGludGVyZmFjZSBmb3IgdGhlc2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBoYW5kbGVycy4gTmVlZCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBhY3QgQVBJIHN0cnVjdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfYWN0aW9uX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9hY3RfYXBpLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvYWN0X2FwaS5oPTIxND1pbnQgdGNmX2FjdGlvbl9leGVjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKiphY3Rpb25zLFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oLTIxNS1cdFx0ICAgIGludCBucl9hY3Rpb25zLCBzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKTtcbmluY2x1ZGUvbmV0L2FjdF9hcGkuaDoyMTY6aW50IHRjZl9hY3Rpb25faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgbmxhdHRyICpubGEsXG5pbmNsdWRlL25ldC9hY3RfYXBpLmgtMjE3LVx0XHQgICAgc3RydWN0IG5sYXR0ciAqZXN0LFxuLS1cbmluY2x1ZGUvbmV0L2FjdF9hcGkuaD0yMjA9c3RydWN0IHRjX2FjdGlvbl9vcHMgKnRjX2FjdGlvbl9sb2FkX29wcyhzdHJ1Y3QgbmxhdHRyICpubGEsIHUzMiBmbGFncyxcbmluY2x1ZGUvbmV0L2FjdF9hcGkuaC0yMjEtXHRcdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuaW5jbHVkZS9uZXQvYWN0X2FwaS5oOjIyMjpzdHJ1Y3QgdGNfYWN0aW9uICp0Y2ZfYWN0aW9uX2luaXRfMShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oLTIyMy1cdFx0XHRcdCAgICBzdHJ1Y3QgbmxhdHRyICpubGEsIHN0cnVjdCBubGF0dHIgKmVzdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbWluZyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaGVyZS4gSXQgc2VlbXMgbGlrZSBib3RoIGB0Y2ZfYWN0aW9uX2luaXRfMWAgYW5kIGB0Y2ZfYWN0aW9uX2luaXRgIGxvb2sgbGlrZSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgbXkgRm9jdXNTeW1ib2xzLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRob3NlLgoKTm93LCBiZWZvcmUgSSBjb21taXQsIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGltcG9ydGFudCBzZXR0aW5ncyBpbiB0aGUgYnJvYWRlciBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIHNob3VsZCBjaGVjazogYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC4KCkFoLCByaWdodCwgbm93IEkgcmVtZW1iZXIuIGBORVRfQUNUX1BPTElDRWAgYW5kIGBORVRfQUNUX0dBQ1RgIGFyZSBhY3R1YWxseSAqcmVxdWlyZWQqIGZvciB0aGUgZnVuY3Rpb25hbGl0eSBJJiMzOTttIHRhcmdldGluZy4gSSBjYW4mIzM5O3Qgb3Zlcmxvb2sgdGhvc2UuIE9rYXksIHNvIG5vdyB3aGF0IGFib3V0IGBORVRfU0NIRURgPyBUaGF0JiMzOTtzIHRoZSBtZW51Y29uZmlnIG9wdGlvbiwgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgY29uZmlybSB0aGF0LgoKWWVzLCBgTkVUX1NDSEVEYCBpcyBpbmRlZWQgdGhlIHByaW1hcnkgbWVudWNvbmZpZyBJIG5lZWQuIFBlcmZlY3QuIFNvLCBteSBsaXN0IG5vdyBsb29rcyBsaWtlOiBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC4gR290IGl0LgoKV2FpdCBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgYE5FVF9TQ0hFRGAgaXMgcmVhbGx5IG5lZWRlZC4gVXN1YWxseSwgd2hlbiB5b3UgZW5hYmxlIGBORVRfQ0xTX0FDVGAsIGBORVRfU0NIRURgIGZvbGxvd3MgYXMgYSByZXF1aXJlbWVudC4gVG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTtsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBiZSBwcmVjaXNlIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcywgYWZ0ZXIgYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjEzNQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQWN0aW9uIEluaXRpYWxpemF0aW9uIGluIHRoZSBOZXR3b3JraW5nIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgbmV0d29ya2luZyBjb2RlLiBGaXJzdCB0aGluZywgSSBuZWVkIHRvIGNvbmZpcm0gYE5FVF9TQ0hFRGAgaXMgaW5kZWVkIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZCwgY2hlY2suIE5vdywgbXkgcHJpbWFyeSBmb2N1cyBpcyB1bmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBhY3Rpb25zIHdpdGhpbiB0aGlzIGZyYW1ld29yay4gTGV0JiMzOTtzIHNlZSBpZiBgdGNmX2FjdGlvbl9pbml0XzFgIGlzIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciB0aGlzLiBZZXMsIHRoYXQgbG9va3MgbGlrZSBpdDsgaXQmIzM5O3MgdGhlIHJpZ2h0IGZ1bmN0aW9uLCBhcyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGEgc2luZ2xlIGFjdGlvbiBhbmQgY2FsbHMgdGhlIHJlbGV2YW50IGAuaW5pdGAgY2FsbGJhY2sgb2YgdGhlIGFjdGlvbiBvcGVyYXRpb25zLgoKVGhlIHBhdGNoIG1lbnRpb25zIG1vZGlmaWNhdGlvbnMgdG8gYHRjZl9nYWN0X2luaXRgIGFuZCBgdGNmX3BvbGljZV9pbml0YCwgd2hpY2ggcG9pbnRzIG1lIHRvd2FyZHMgZm9jdXNpbmcgb24gYHRjZl9hY3Rpb25faW5pdF8xYCBhcyBhIGtleSBzeW1ib2wuIEFsc28sIEkgc2hvdWxkbiYjMzk7dCBpZ25vcmUgYHRjZl9hY3Rpb25faW5pdGAsIHNpbmNlIGl0IGRpcmVjdGx5IGNhbGxzIGB0Y2ZfYWN0aW9uX2luaXRfMWAuCgpJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IGxvb2sgYXQgYHRjZl9hY3Rpb25fdmFsaWRgIGluIGBpbmNsdWRlL25ldC9hY3RfYXBpLmhgLiBPaCwgaXQmIzM5O3MgaW5saW5lLCBzbyBpdCB3b24mIzM5O3Qgc2hvdyB1cCBhcyBhIHN5bWJvbC4gTm8gc3VycHJpc2VzIHRoZXJlLgoKSSYjMzk7bSBjaGVja2luZyBmb3Igb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgZnVuY3Rpb25zLiBgdGNmX2dhY3RfaW5pdGAgYW5kIGB0Y2ZfcG9saWNlX2luaXRgIGFyZSBzdGF0aWMsIHNvIHRoZXkmIzM5O3JlIG5vdCBnb2luZyB0byBiZSBnb29kIGNhbmRpZGF0ZXMgdG8gdHJhY2suIGB0Y2ZfYWN0aW9uX2luaXRfMWAgaXMgZGVmaW5pdGVseSB0aGUgcHJpbWUgY2FuZGlkYXRlLgoKTm93LCBsZXQmIzM5O3MgbWFrZSBhIHF1aWNrIG5vdGUgb2YgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX0FDVGAsIGBORVRfQUNUX1BPTElDRWAsIGBORVRfQUNUX0dBQ1RgLCBhbmQgYEdBQ1RfUFJPQmAuCgpGaW5hbGx5LCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIGBORVRfQUNUX1BPTElDRWAgYW5kIGBORVRfQUNUX0dBQ1RgIGJvdGggZGVwZW5kIG9uIGBORVRfQ0xTX0FDVGAuIGBHQUNUX1BST0JgIGZ1cnRoZXIgZGVwZW5kcyBvbiBgTkVUX0FDVF9HQUNUYC4gQW5kIEkmIzM5O20gcHJldHR5IHN1cmUgYE5FVF9DTFNfQUNUYCBpcyBjb25kaXRpb25hbCB1bmRlciBgTkVUX1NDSEVEYC4gTGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGF0IGxhc3Qgb25lLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRfU0NIRURcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00My1cbm5ldC9zY2hlZC9LY29uZmlnOjQ0OmlmIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDYwCgkJCQkJCQlvdXRwdXQ6IDEzOQoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTmV0d29yayBDb25maWd1cmF0aW9uIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBjb2RlLCBhbmQgaXQmIzM5O3MgY2xlYXIgdGhhdCBgTkVUX0NMU19BQ1RgIGlzIG5lc3RlZCB1bmRlciBgTkVUX1NDSEVEYC4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcGluZyB0aGluZ3Mgb3JnYW5pemVkLiBTbywgYXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgcmVsZXZhbnQgY29uZmlncyBhcmUgYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX0FDVGAsIGBORVRfQUNUX1BPTElDRWAsIGBORVRfQUNUX0dBQ1RgLCBhbmQgYEdBQ1RfUFJPQmAuIFN0YW5kYXJkIHN0dWZmLCBzZXR0aW5nIHVwIHRyYWZmaWMgY29udHJvbCBhbmQgYWxsIHRoYXQuCgpOb3csIG15IGZvY3VzIHN5bWJvbHMgaGVyZSBhcmUgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uczogYHRjZl9hY3Rpb25faW5pdF8xYCBhbmQgYHRjZl9hY3Rpb25faW5pdGAuIFNlZW1zIGxpa2UgdGhhdCYjMzk7cyB0aGUga2V5IGVudHJ5IHBvaW50IHRvIHdoZXJlIHRoaW5ncyBhcmUgaGFwcGVuaW5nLgoKUmlnaHQsIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIHZhbGlkYXRpb24gaXNzdWVzIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGUgbWFqb3IgY2hhbmdlIGlzIGZ1bmN0aW9uYWwgLSB0aGlzIGlzIGFib3V0IHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gZ2V0dGluZyBob2xkIG9mIGludGVybmFsIGtlcm5lbCB2ZXJkaWN0cywgd2hpY2ggaXMgZ29vZC4gV2UgZGVmaW5pdGVseSBkb24mIzM5O3Qgd2FudCB0aGF0IGtpbmQgb2Ygc2VjdXJpdHkgaXNzdWUgY3JlZXBpbmcgaW4uIFRoaXMgaXMgYSBzb2xpZCBwaWVjZSBvZiB3b3JrLgoKVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgYmVpbmcgcmVhY2hlZCB0aHJvdWdoIHRoZSB0YyBhY3Rpb24gaW5pdGlhbGl6YXRpb24gcGF0aC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3BvdCB0byBjaGVjayBmb3IgdGhpcyBraW5kIG9mIHRoaW5nLiBMZXQmIzM5O3MgY2FsbCB0aGlzIGBzZXQtcmVzdWx0c2AuIAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUE9MSUNFJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfR0FDVCYjMzQ7LAogICAgJiMzNDtHQUNUX1BST0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfYWN0aW9uX2luaXRfMSYjMzQ7LAogICAgJiMzNDt0Y2ZfYWN0aW9uX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkVUX0FDVF9QT0xJQ0UmIzM0OywKICAgICYjMzQ7TkVUX0FDVF9HQUNUJiMzNDssCiAgICAmIzM0O0dBQ1RfUFJPQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9hY3Rpb25faW5pdF8xJiMzNDssCiAgICAmIzM0O3RjZl9hY3Rpb25faW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9ucyBpbiB0aGUgZ2VuZXJpYyBhY3Rpb24gKGdhY3QpIGFuZCBwb2xpY2UgYWN0aW9uIG1vZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHVzZXIgc3BhY2UgZnJvbSBzdG9yaW5nIGtlcm5lbC1pbnRlcm5hbCB2ZXJkaWN0cy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgdGMgYWN0aW9uIGluaXRpYWxpemF0aW9uIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo0MC45NzkwMjAyMDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTg3MzkxNTcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX1BPTElDRVwiLFxuICAgIFwiTkVUX0FDVF9HQUNUXCIsXG4gICAgXCJHQUNUX1BST0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYWN0aW9uX2luaXRfMVwiLFxuICAgIFwidGNmX2FjdGlvbl9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo0MC45NzkwMjUwOTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTk0NzgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJlMGQ2NTg3ZDgyZGU2NzBhMjBiYmRiZDkzNTAwMGJhZmJkYmE4MTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAxMTowMDozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hY3RfYXBpLmggYi9pbmNsdWRlL25ldC9hY3RfYXBpLmhcXG5pbmRleCAyMGQ5ZTU1Zjg1NjRkLi5mZDAzZjYzMTllODgwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxcbkBAIC0yNzAsNiArMjcwLDI1IEBAIGludCB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QoaW50IGFjdGlvbiwgc3RydWN0IHRjZl9wcm90byAqdHAsXFxuIHN0cnVjdCB0Y2ZfY2hhaW4gKnRjZl9hY3Rpb25fc2V0X2N0cmxhY3Qoc3RydWN0IHRjX2FjdGlvbiAqYSwgaW50IGFjdGlvbixcXG4gXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCB0Y2ZfY2hhaW4gKm5ld2NoYWluKTtcXG4gXFxuKy8qIFJhbmdlIGNoZWNrIGZvciBhIGNvbnRyb2wgYWN0aW9uIHN1cHBsaWVkIGJ5IHVzZXIgc3BhY2UuXFxuKyAqXFxuKyAqIFRoaXMgaXMgdGhlIHNhbWUgdGVzdCB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QoKSBhcHBsaWVzIHRvIHRoZSBwcmltYXJ5XFxuKyAqIGNvbnRyb2wgYWN0aW9uLCBmYWN0b3JlZCBvdXQgZm9yIHRoZSAqZmFsbGJhY2sqIGNvbnRyb2wgYWN0aW9uc1xcbisgKiAoYWN0X2dhY3QncyBUQ0FfR0FDVF9QUk9CLnBhY3Rpb24gYW5kIGFjdF9wb2xpY2UncyBUQ0FfUE9MSUNFX1JFU1VMVCksXFxuKyAqIHdoaWNoIG11c3Qgbm90IHJlYWNoIHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdCgpIGJlY2F1c2UgdGhleSBoYXZlIG5vXFxuKyAqIGdvdG9fY2hhaW4gdG8gYWxsb2NhdGUuICBXaXRob3V0IGl0LCB1c2VyIHNwYWNlIGNhbiBzdG9yZSBrZXJuZWwtaW50ZXJuYWxcXG4rICogdmVyZGljdHMgc3VjaCBhcyBUQ19BQ1RfQ09OU1VNRUQsIHdoaWNoIGlzIFRDX0FDVF9WQUxVRV9NQVggKyAxIGFuZCBpc1xcbisgKiBkZWxpYmVyYXRlbHkgbm90IHBhcnQgb2YgdGhlIFVBUEkgdmFsdWUgcmFuZ2UuXFxuKyAqL1xcbitzdGF0aWMgaW5saW5lIGJvb2wgdGNmX2FjdGlvbl92YWxpZChpbnQgYWN0aW9uKVxcbit7XFxuK1xcdGludCBvcGNvZGUgPSBUQ19BQ1RfRVhUX09QQ09ERShhY3Rpb24pO1xcbitcXG4rXFx0aWYgKCFvcGNvZGUpXFxuK1xcdFxcdHJldHVybiBhY3Rpb24gXFx1MDAzYz0gVENfQUNUX1ZBTFVFX01BWDtcXG4rXFx0cmV0dXJuIG9wY29kZSBcXHUwMDNjPSBUQ19BQ1RfRVhUX09QQ09ERV9NQVggfHwgYWN0aW9uID09IFRDX0FDVF9VTlNQRUM7XFxuK31cXG4rXFxuICNpZmRlZiBDT05GSUdfSU5FVFxcbiBERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UodGNmX2ZyYWdfeG1pdF9jb3VudCk7XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dhY3QuYyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jXFxuaW5kZXggZTk0OTI4MGViODAwZC4uNTY1ODYwY2NjYmE2ZCAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvYWN0X2dhY3QuY1xcbisrKyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jXFxuQEAgLTg5LDYgKzg5LDExIEBAIHN0YXRpYyBpbnQgdGNmX2dhY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4gXFx0XFx0cF9wYXJtID0gbmxhX2RhdGEodGJbVENBX0dBQ1RfUFJPQl0pO1xcbiBcXHRcXHRpZiAocF9wYXJtLVxcdTAwM2VwdHlwZSBcXHUwMDNlPSBNQVhfUkFORClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdGlmICghdGNmX2FjdGlvbl92YWxpZChwX3Bhcm0tXFx1MDAzZXBhY3Rpb24pKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIFxcXCJpbnZhbGlkIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9uXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChUQ19BQ1RfRVhUX0NNUChwX3Bhcm0tXFx1MDAzZXBhY3Rpb24sIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuIFxcdFxcdFxcdFxcdCAgICAgICBcXFwiZ290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFja1xcXCIpO1xcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3BvbGljZS5jIGIvbmV0L3NjaGVkL2FjdF9wb2xpY2UuY1xcbmluZGV4IGIxNjQ2OGE5OGM1NWUuLmNlMDhmNjg0MGVmN2MgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9wb2xpY2UuY1xcbisrKyBiL25ldC9zY2hlZC9hY3RfcG9saWNlLmNcXG5AQCAtMTI4LDYgKzEyOCwxMiBAQCBzdGF0aWMgaW50IHRjZl9wb2xpY2VfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4gXFxuIFxcdGlmICh0YltUQ0FfUE9MSUNFX1JFU1VMVF0pIHtcXG4gXFx0XFx0dGNmcF9yZXN1bHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfUE9MSUNFX1JFU1VMVF0pO1xcbitcXHRcXHRpZiAoIXRjZl9hY3Rpb25fdmFsaWQodGNmcF9yZXN1bHQpKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIFxcXCJpbnZhbGlkIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9uXFxcIik7XFxuK1xcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGdvdG8gZmFpbHVyZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAoVENfQUNUX0VYVF9DTVAodGNmcF9yZXN1bHQsIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuIFxcdFxcdFxcdFxcdCAgICAgICBcXFwiZ290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFja1xcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo0MS41MTU5NTQ2MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NTMzNjk3MTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX1BPTElDRVwiLFxuICAgIFwiTkVUX0FDVF9HQUNUXCIsXG4gICAgXCJHQUNUX1BST0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYWN0aW9uX2luaXRfMVwiLFxuICAgIFwidGNmX2FjdGlvbl9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZTBkNjU4N2Q4MmRlNjcwYTIwYmJkYmQ5MzUwMDBiYWZiZGJhODEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxMTowMDozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaCBiL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxuaW5kZXggMjBkOWU1NWY4NTY0ZC4uZmQwM2Y2MzE5ZTg4MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxuKysrIGIvaW5jbHVkZS9uZXQvYWN0X2FwaS5oXG5AQCAtMjcwLDYgKzI3MCwyNSBAQCBpbnQgdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KGludCBhY3Rpb24sIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLFxuIHN0cnVjdCB0Y2ZfY2hhaW4gKnRjZl9hY3Rpb25fc2V0X2N0cmxhY3Qoc3RydWN0IHRjX2FjdGlvbiAqYSwgaW50IGFjdGlvbixcbiBcdFx0XHRcdFx0IHN0cnVjdCB0Y2ZfY2hhaW4gKm5ld2NoYWluKTtcbiBcbisvKiBSYW5nZSBjaGVjayBmb3IgYSBjb250cm9sIGFjdGlvbiBzdXBwbGllZCBieSB1c2VyIHNwYWNlLlxuKyAqXG4rICogVGhpcyBpcyB0aGUgc2FtZSB0ZXN0IHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdCgpIGFwcGxpZXMgdG8gdGhlIHByaW1hcnlcbisgKiBjb250cm9sIGFjdGlvbiwgZmFjdG9yZWQgb3V0IGZvciB0aGUgKmZhbGxiYWNrKiBjb250cm9sIGFjdGlvbnNcbisgKiAoYWN0X2dhY3QncyBUQ0FfR0FDVF9QUk9CLnBhY3Rpb24gYW5kIGFjdF9wb2xpY2UncyBUQ0FfUE9MSUNFX1JFU1VMVCksXG4rICogd2hpY2ggbXVzdCBub3QgcmVhY2ggdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KCkgYmVjYXVzZSB0aGV5IGhhdmUgbm9cbisgKiBnb3RvX2NoYWluIHRvIGFsbG9jYXRlLiAgV2l0aG91dCBpdCwgdXNlciBzcGFjZSBjYW4gc3RvcmUga2VybmVsLWludGVybmFsXG4rICogdmVyZGljdHMgc3VjaCBhcyBUQ19BQ1RfQ09OU1VNRUQsIHdoaWNoIGlzIFRDX0FDVF9WQUxVRV9NQVggKyAxIGFuZCBpc1xuKyAqIGRlbGliZXJhdGVseSBub3QgcGFydCBvZiB0aGUgVUFQSSB2YWx1ZSByYW5nZS5cbisgKi9cbitzdGF0aWMgaW5saW5lIGJvb2wgdGNmX2FjdGlvbl92YWxpZChpbnQgYWN0aW9uKVxuK3tcbitcdGludCBvcGNvZGUgPSBUQ19BQ1RfRVhUX09QQ09ERShhY3Rpb24pO1xuK1xuK1x0aWYgKCFvcGNvZGUpXG4rXHRcdHJldHVybiBhY3Rpb24gXHUwMDNjPSBUQ19BQ1RfVkFMVUVfTUFYO1xuK1x0cmV0dXJuIG9wY29kZSBcdTAwM2M9IFRDX0FDVF9FWFRfT1BDT0RFX01BWCB8fCBhY3Rpb24gPT0gVENfQUNUX1VOU1BFQztcbit9XG4rXG4gI2lmZGVmIENPTkZJR19JTkVUXG4gREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKHRjZl9mcmFnX3htaXRfY291bnQpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfZ2FjdC5jIGIvbmV0L3NjaGVkL2FjdF9nYWN0LmNcbmluZGV4IGU5NDkyODBlYjgwMGQuLjU2NTg2MGNjY2JhNmQgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X2dhY3QuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9nYWN0LmNcbkBAIC04OSw2ICs4OSwxMSBAQCBzdGF0aWMgaW50IHRjZl9nYWN0X2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdHBfcGFybSA9IG5sYV9kYXRhKHRiW1RDQV9HQUNUX1BST0JdKTtcbiBcdFx0aWYgKHBfcGFybS1cdTAwM2VwdHlwZSBcdTAwM2U9IE1BWF9SQU5EKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRpZiAoIXRjZl9hY3Rpb25fdmFsaWQocF9wYXJtLVx1MDAzZXBhY3Rpb24pKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuK1x0XHRcdFx0ICAgICAgIFwiaW52YWxpZCBmYWxsYmFjayBjb250cm9sIGFjdGlvblwiKTtcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuIFx0XHRpZiAoVENfQUNUX0VYVF9DTVAocF9wYXJtLVx1MDAzZXBhY3Rpb24sIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiBcdFx0XHRcdCAgICAgICBcImdvdG8gY2hhaW4gbm90IGFsbG93ZWQgb24gZmFsbGJhY2tcIik7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wb2xpY2UuYyBiL25ldC9zY2hlZC9hY3RfcG9saWNlLmNcbmluZGV4IGIxNjQ2OGE5OGM1NWUuLmNlMDhmNjg0MGVmN2MgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BvbGljZS5jXG4rKysgYi9uZXQvc2NoZWQvYWN0X3BvbGljZS5jXG5AQCAtMTI4LDYgKzEyOCwxMiBAQCBzdGF0aWMgaW50IHRjZl9wb2xpY2VfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcbiBcbiBcdGlmICh0YltUQ0FfUE9MSUNFX1JFU1VMVF0pIHtcbiBcdFx0dGNmcF9yZXN1bHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfUE9MSUNFX1JFU1VMVF0pO1xuK1x0XHRpZiAoIXRjZl9hY3Rpb25fdmFsaWQodGNmcF9yZXN1bHQpKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuK1x0XHRcdFx0ICAgICAgIFwiaW52YWxpZCBmYWxsYmFjayBjb250cm9sIGFjdGlvblwiKTtcbitcdFx0XHRlcnIgPSAtRUlOVkFMO1xuK1x0XHRcdGdvdG8gZmFpbHVyZTtcbitcdFx0fVxuIFx0XHRpZiAoVENfQUNUX0VYVF9DTVAodGNmcF9yZXN1bHQsIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiBcdFx0XHRcdCAgICAgICBcImdvdG8gY2hhaW4gbm90IGFsbG93ZWQgb24gZmFsbGJhY2tcIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo0MS41MTU5NTcxNzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjM2MzIwOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzIGFuZCBDb25maWd1cmF0aW9uIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgYSBnb29kLCBzZW5zaWJsZSBoYXJkZW5pbmcgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGFkZGluZyBhIHJhbmdlIGNoZWNrIGZvciB1c2VyLXN1cHBsaWVkIGNvbnRyb2wgYWN0aW9ucyB3aXRoaW4gdGhlIGBuZXQvc2NoZWRgIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGBhY3RfZ2FjdC5jYCBhbmQgYGFjdF9wb2xpY2UuY2AuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGB0Y2ZfYWN0aW9uX3ZhbGlkYCBmdW5jdGlvbiBpbiBgaW5jbHVkZS9uZXQvYWN0X2FwaS5oYCBhbmQgaXRzIHVzYWdlIHdpdGhpbiBgdGNmX2dhY3RfaW5pdGAgYW5kIGB0Y2ZfcG9saWNlX2luaXRgIGlzIGEgY2xlYW4gd2F5IHRvIGltcGxlbWVudCB0aGlzIHZhbGlkYXRpb24uIFByZXZlbnRpbmcgaW52YWxpZCBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW1wcm92ZXMgdGhlIG92ZXJhbGwgcm9idXN0bmVzcyBvZiB0aGUgdHJhZmZpYyBjb250cm9sIGZ1bmN0aW9uYWxpdHkuIEl0J3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBpbXByb3Zpbmcgc2VjdXJpdHkgYW5kIHN0YWJpbGl0eS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYG5ldC9zY2hlZC9hY3RfZ2FjdC5jYCBjb3JyZXNwb25kcyB0byBgTkVUX0FDVF9HQUNUYCwgYW5kIGBuZXQvc2NoZWQvYWN0X3BvbGljZS5jYCBjb3JyZXNwb25kcyB0byBgTkVUX0FDVF9QT0xJQ0VgLiBOb3csIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBtaWdodCBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODY3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDA6NDYuMTUyMjgwNTk1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NjQzNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9BQ1RfR0FDVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz03MTU9Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MjUtXFxubmV0L3NjaGVkL0tjb25maWc6NzI2OmNvbmZpZyBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgYWN0aW9uc1xcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTczNj1jb25maWcgR0FDVF9QUk9CXFxubmV0L3NjaGVkL0tjb25maWctNzM3LVxcdGJvb2wgXFxcIlByb2JhYmlsaXR5IHN1cHBvcnRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzM4OlxcdGRlcGVuZHMgb24gTkVUX0FDVF9HQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzM5LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDA6NDYuMjE2OTI5ODYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzOTIwODE0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgR0FDVF9QUk9CIGFuZCBUQ0FfR0FDVF9QUk9CIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGF0IGBHQUNUX1BST0JgIGlzIGEgcmVxdWlyZWQgaW5wdXQgZm9yIGBUQ0FfR0FDVF9QUk9CYCB3aXRoaW4gYGFjdF9nYWN0LmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQsIGJ1dCBpdCdzIGFsd2F5cyB3aXNlIHRvIGJlIHRob3JvdWdoIHdpdGggdGhlc2UgdGhpbmdzLCBlc3BlY2lhbGx5IGluIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHNlY3Rpb25zIG9mIHRoZSBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MganVzdCBjb25maXJtIGhvdyBgR0FDVF9QUk9CYCBpcyBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiB0aGF0IG1vZHVsZS4gVGhlcmUgY291bGQgYmUgc3VidGxlIGRlcGVuZGVuY2llcyBvciBlZGdlIGNhc2VzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIG9yIHBlcmhhcHMgYW4gb3Bwb3J0dW5pdHkgZm9yIG9wdGltaXphdGlvbiBJIGhhdmVuJ3Qgc3BvdHRlZCB5ZXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgYWN0X2dhY3QuY2AgZmlsZSBhbmQgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhhdCBwaWVjZSBvZiB0aGUgcHV6emxlLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZydzIGxpbmVkIHVwIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAwOjU2LjYwOTAxNDE1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzY0ODAyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJUQ0FfR0FDVF9QUk9CXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2FjdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYWN0X3BvbGljeVtUQ0FfR0FDVF9NQVggKyAxXSA9IHtcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy00OS1cXHRbVENBX0dBQ1RfUEFSTVNdXFx0PSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IHRjX2dhY3QpIH0sXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6NTA6XFx0W1RDQV9HQUNUX1BST0JdXFx0XFx0PSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IHRjX2dhY3RfcCkgfSxcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy01MS19O1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9NTM9c3RhdGljIGludCB0Y2ZfZ2FjdF9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtODQtI2lmbmRlZiBDT05GSUdfR0FDVF9QUk9CXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6ODU6XFx0aWYgKHRiW1RDQV9HQUNUX1BST0JdICE9IE5VTEwpXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtODYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTg3LSNlbHNlXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6ODg6XFx0aWYgKHRiW1RDQV9HQUNUX1BST0JdKSB7XFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6ODk6XFx0XFx0cF9wYXJtID0gbmxhX2RhdGEodGJbVENBX0dBQ1RfUFJPQl0pO1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTkwLVxcdFxcdGlmIChwX3Bhcm0tXFx1MDAzZXB0eXBlIFxcdTAwM2U9IE1BWF9SQU5EKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9MTkwPXN0YXRpYyBpbnQgdGNmX2dhY3RfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMjEzLVxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjIxNDpcXHRcXHRpZiAobmxhX3B1dChza2IsIFRDQV9HQUNUX1BST0IsIHNpemVvZihwX29wdCksIFxcdTAwMjZwX29wdCkpXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMjE1LVxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9MjMxPXN0YXRpYyBzaXplX3QgdGNmX2dhY3RfZ2V0X2ZpbGxfc2l6ZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphY3QpXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yMzYtXFx0aWYgKHRvX2dhY3QoYWN0KS1cXHUwMDNldGNmZ19wdHlwZSlcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYzoyMzc6XFx0XFx0LyogVENBX0dBQ1RfUFJPQiAqL1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTIzOC1cXHRcXHRzeiArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHRjX2dhY3RfcCkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo1Ni42NzI2NjcxMzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg3MzQwMDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktjb25maWcgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBNZW50YWwgQXVkaXQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgbW9kdWxlIGRlcGVuZGVuY2llcywgYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvZGUgY2hhbmdlcyBpbiBgYWN0X2dhY3QuY2AgYXJlIGd1YXJkZWQgYmVoaW5kIHRoZSBgQ09ORklHX0dBQ1RfUFJPQmAgKmFuZCogYENPTkZJR19ORVRfQUNUX0dBQ1RgIG9wdGlvbnMuIE1ha2VzIHNlbnNlLCB0aGF0J3MgdGhlIHByb2JhYmlsaXN0aWMgZ2FjdCBmdW5jdGlvbmFsaXR5LiBBbmQsIGFzIGV4cGVjdGVkLCBgYWN0X3BvbGljZS5jYCBuZWVkcyBgQ09ORklHX05FVF9BQ1RfUE9MSUNFYC4gTm8gc3VycHJpc2VzIHRoZXJlLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0IGZvciB0aG9zZSBtb2R1bGVzLiBUaW1lIHRvIGRpZyBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHZlcmlmeSB0aGUgYE5FVF9BQ1RfUE9MSUNFYCBkZWZpbml0aW9uLiBKdXN0IG1ha2luZyBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgZGVwZW5kZW5jeSB0cmVlIGJlZm9yZSBJIG1ha2UgYW55IG1vZGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTowMS4xNjAwMDk0ODJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk5OTgxNjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQUNUX1BPTElDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz03MDI9Y29uZmlnIE5FVF9DTFNfQUNUXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MTQtXFxubmV0L3NjaGVkL0tjb25maWc6NzE1OmNvbmZpZyBORVRfQUNUX1BPTElDRVxcbm5ldC9zY2hlZC9LY29uZmlnLTcxNi1cXHR0cmlzdGF0ZSBcXFwiVHJhZmZpYyBQb2xpY2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MDEuNDU5OTk1ODczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzODA2ODc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoZSByZWxldmFudCBmaWVsZDpcblxuKipBc3Nlc3NpbmcgRGVwZW5kZW5jaWVzKipcblxuSG1tLCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgc29tZXRoaW5nIGFuZCBJJ3ZlIGNvbWUgYWNyb3NzIHRoaXMgYE5FVF9DTFNfQUNUYCB0ZXJtLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYWxtb3N0IGNlcnRhaW4gdGhhdCB3aGF0ZXZlciB0aGUgc3lzdGVtIG9yIHByb2Nlc3MgSSdtIHdvcmtpbmcgd2l0aCBpcywgdGhpcyBgTkVUX0NMU19BQ1RgIGNvbXBvbmVudCBvciBhY3RpdmF0aW9uIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZS4gVGhlIHdheSBpdCdzIHBocmFzZWQgaW1wbGllcyBhIHBvdGVudGlhbCBkZXBlbmRlbmNlIG9uIGl0IGJlaW5nIHByZXNlbnQgb3IgYWN0aXZlLiBUaGF0IGJlaW5nIHRoZSBjYXNlLCBJJ2Qgc2F5IHRoYXQgSSdsbCBwcm9iYWJseSBuZWVkIGBORVRfQ0xTX0FDVGAgZm9yICpib3RoKiBvZiB0aGUgZnVuY3Rpb25zIG9yIG1vZHVsZXMgdGhhdCBJJ20gY29uc2lkZXJpbmcuIFRoZXJlIGlzbid0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBuYXJyb3cgZG93biB3aGljaCBmdW5jdGlvbiwgc28gSSdtIGluZmVycmluZyBhIHVuaXZlcnNhbCBkZXBlbmRlbmN5LiBJIGNhbiBhbHdheXMgY2hlY2sgb24gdGhpcyBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjA1LjQ5ODA2ODAxMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA5MTAxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9DTFNfQUNUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTcwMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDI6Y29uZmlnIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzAzLVxcdGJvb2wgXFxcIkFjdGlvbnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjA1LjU2ODk4NTg3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODc2NDQzNDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIERlcGVuZGVuY2llczogTkVUX0FDVF9QT0xJQ0UgYW5kIE5FVF9BQ1RfR0FDVCoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuIExldCdzIHN0YXJ0IHdpdGggYSBjcnVjaWFsIHByZWxpbWluYXJ5IHN0ZXA6IEkgbmVlZCB0byBhc2NlcnRhaW4gdGhlIGRpcmVjdCBkZXBlbmRlbmNpZXMgb2YgYE5FVF9BQ1RfUE9MSUNFYCBhbmQgYE5FVF9BQ1RfR0FDVGAuIEtub3dpbmcgd2hhdCB0aGVzZSBmdW5jdGlvbmFsaXRpZXMgcmVseSBvbiBpcyBhYnNvbHV0ZWx5IGZ1bmRhbWVudGFsIGZvciBhbnkgbW9kaWZpY2F0aW9uLCBkZWJ1Z2dpbmcsIG9yIGV2ZW4ganVzdCBhIGdlbmVyYWwgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gSXQncyB0b28gcmlza3kgdG8gcHJvY2VlZCB3aXRob3V0IHRoYXQgc29saWQgZm91bmRhdGlvbi4gSeKAmW0gdGhpbmtpbmcsIHRoaXMgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiwgb25jZSBzZWN1cmVkLCB3aWxsIGd1aWRlIG15IG5leHQgc3RlcHMgLSBhdm9pZGluZyBhIHBvdGVudGlhbGx5IG1lc3N5IHNpdHVhdGlvbiB3aXRoIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTE1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MDkuNDQ1NDMyMTkyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM1NzczMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qTkVUX0NMU19BQ1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkluZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6MzQ5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNTAtXFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0VcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgUG9saWNpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzE3OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzI2PWNvbmZpZyBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgYWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXFxubmV0L3NjaGVkL0tjb25maWctNzQzLVxcdHRyaXN0YXRlIFxcXCJSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc0NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTMtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgU2FtcGxpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzU0OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTUtXFx0c2VsZWN0IFBTQU1QTEVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc2ND1jb25maWcgTkVUX0FDVF9OQVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzY2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXFxubmV0L3NjaGVkL0tjb25maWctNzc1LVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgRWRpdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NzY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4NC1cXHR0cmlzdGF0ZSBcXFwiU2ltcGxlIEV4YW1wbGUgKERlYnVnKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4Ni1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03OTc9Y29uZmlnIE5FVF9BQ1RfU0tCRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cXHR0cmlzdGF0ZSBcXFwiU0tCIEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzk5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXFx0dHJpc3RhdGUgXFxcIkNoZWNrc3VtIFVwZGF0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgxMDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXFxubmV0L3NjaGVkL0tjb25maWctODIwLVxcdHRyaXN0YXRlIFxcXCJNUExTIG1hbmlwdWxhdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MjE6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxcbm5ldC9zY2hlZC9LY29uZmlnLTgzMS1cXHR0cmlzdGF0ZSBcXFwiVmxhbiBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODMyOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODQxPWNvbmZpZyBORVRfQUNUX0JQRlxcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cXHR0cmlzdGF0ZSBcXFwiQlBGIGJhc2VkIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg1NTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ni1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnLTg2OC1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODgyPWNvbmZpZyBORVRfQUNUX1NLQk1PRFxcbm5ldC9zY2hlZC9LY29uZmlnLTg4My1cXHR0cmlzdGF0ZSBcXFwic2tiIGRhdGEgbW9kaWZpY2F0aW9uIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4ODQ6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg4NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04OTM9Y29uZmlnIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctODk0LVxcdHRyaXN0YXRlIFxcXCJJbnRlci1GRSBhY3Rpb24gYmFzZWQgb24gSUVURiBGb3JDRVMgSW50ZXJGRSBMRkJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODk1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04OTYtXFx0c2VsZWN0IE5FVF9JRkVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXFxubmV0L3NjaGVkL0tjb25maWctOTA3LVxcdHRyaXN0YXRlIFxcXCJJUCB0dW5uZWwgbWV0YWRhdGEgbWFuaXB1bGF0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkwODpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkxNz1jb25maWcgTkVUX0FDVF9DVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkxOC1cXHR0cmlzdGF0ZSBcXFwiY29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTE5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2ICghTkZfTkFUIHx8IE5GX05BVCkgXFx1MDAyNlxcdTAwMjYgTkZfRkxPV19UQUJMRVxcbm5ldC9zY2hlZC9LY29uZmlnLTkyMC1cXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTMwPWNvbmZpZyBORVRfQUNUX0dBVEVcXG5uZXQvc2NoZWQvS2NvbmZpZy05MzEtXFx0dHJpc3RhdGUgXFxcIkZyYW1lIGdhdGUgZW50cnkgbGlzdCBjb250cm9sIHRjIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MzI6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkzMy1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NTQ9Y29uZmlnIE5FVF9UQ19TS0JfRVhUXFxubmV0L3NjaGVkL0tjb25maWctOTU1LVxcdGJvb2wgXFxcIlRDIHJlY2lyY3VsYXRpb24gc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NTY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1Ny1cXHRzZWxlY3QgU0tCX0VYVEVOU0lPTlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MDkuNTQ5MDE0OTI5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMDA5MTg2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkRlY2lkaW5nIG9uIHRoZSBDb3JlIE5ldHdvcmsgQWN0aW9uIENvbXBvbmVudHMqKlxuXG5SaWdodCwgc28gd2UncmUgYnVpbGRpbmcgdGhpcyBvdXQsIGFuZCBpdCBsb29rcyBsaWtlIHdlJ2xsIGFic29sdXRlbHkgbmVlZCB0byBoYXZlIGBORVRfQ0xTX0FDVGAsIGBORVRfQUNUX1BPTElDRWAsIGBORVRfQUNUX0dBQ1RgLCBhbmQgdGhlIGdlbmVyYWxpemVkIGFjdGlvbiBwcm9iYWJpbGl0eSwgYEdBQ1RfUFJPQmAuIFRob3NlIHNlZW0gbGlrZSB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGZvciBjb250cm9sbGluZyBuZXR3b3JrIGJlaGF2aW9yLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyBgTkVUX0NMU19BQ1RgIGRpcmVjdGx5IGRlcGVuZGVudCBvbiBgTkVUX1NDSEVEYD8gSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IHJlbGF0aW9uc2hpcCBiZWZvcmUgbW92aW5nIGZvcndhcmQ7IGl0J3MgYSBjcml0aWNhbCBkZXBlbmRlbmN5IEkgY2FuJ3QgYWZmb3JkIHRvIG92ZXJsb29rIGF0IHRoaXMgc3RhZ2UuIEJldHRlciB0byBkb3VibGUtY2hlY2sgbm93IHRoYW4gaGF2ZSB0byB1bndpbmQgYSBidW5jaCBvZiB3b3JrIGxhdGVyLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA0NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjEzLjU0OTkzNTY2OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NTU2MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjEzLjc2NzQ5OTQ3MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTEzNzAyMTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhpcyBrZXJuZWwgbW9kdWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRyYWZmaWMgY29udHJvbCBhY3Rpb25zLiBSaWdodCwgYE5FVF9TQ0hFRGAgaXMgdGhlIHJpZ2h0IG1lbnVjb25maWcgc2V0dGluZywgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC5cblxuTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhlIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJJ20gZm9jdXNpbmcgb24gYHRjZl9nYWN0X2luaXRgIGluIGBuZXQvc2NoZWQvYWN0X2dhY3QuY2AgYW5kIGB0Y2ZfcG9saWNlX2luaXRgIGluIGBuZXQvc2NoZWQvYWN0X3BvbGljZS5jYCAtIHRob3NlIHNlZW0gbGlrZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgaWYgdGhvc2UgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm90LiBZdXAsIGZyb20gdGhlIHBhdGNoLCBJIGNhbiBzZWUgdGhleSBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFNpbmNlIHRoZXNlIGFyZSBgc3RhdGljYCwgaXQgbWVhbnMgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIHdvbid0IGJlIHN1aXRhYmxlIGZvciBteSBgRm9jdXNTeW1ib2xzYCBhbmFseXNpcy4gV2UgbmVlZCBub24tc3RhdGljIGVudHJ5IHBvaW50cy5cblxuT2theSwgbGV0J3MgYmFjayB1cCBhIHN0ZXAuIEkgcmVjYWxsIHRoZXNlIGFjdGlvbiBpbml0IGZ1bmN0aW9ucyBhcmUgdXN1YWxseSBjYWxsZWQgdGhyb3VnaCBgdGNmX2FjdGlvbl9pbml0XzFgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiB3aXRoaW4gYG5ldC9zY2hlZC9hY3RfYXBpLmNgLiBUaG9zZSBlbnRyeSBwb2ludHMgYXJlIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MTguODgxMjA1OTQ4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzA2NzY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfZ2FjdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2FjdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTI2PXN0YXRpYyBpbnQgZ2FjdF9uZXRfcmFuZChzdHJ1Y3QgdGNmX2dhY3QgKmdhY3QpXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMjcte1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjI4OlxcdHNtcF9ybWIoKTsgLyogY291cGxlZCB3aXRoIHNtcF93bWIoKSBpbiB0Y2ZfZ2FjdF9pbml0KCkgKi9cXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yOS1cXHRpZiAoZ2V0X3JhbmRvbV91MzJfYmVsb3coZ2FjdC1cXHUwMDNldGNmZ19wdmFsKSlcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTM0PXN0YXRpYyBpbnQgZ2FjdF9kZXRlcm0oc3RydWN0IHRjZl9nYWN0ICpnYWN0KVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMzctXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6Mzg6XFx0c21wX3JtYigpOyAvKiBjb3VwbGVkIHdpdGggc21wX3dtYigpIGluIHRjZl9nYWN0X2luaXQoKSAqL1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTM5LVxcdGlmIChwYWNrICUgZ2FjdC1cXHUwMDNldGNmZ19wdmFsKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGdhY3RfcG9saWN5W1RDQV9HQUNUX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtNTItXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6NTM6c3RhdGljIGludCB0Y2ZfZ2FjdF9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTU0LVxcdFxcdFxcdCBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKiphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9MjkyPXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfZ2FjdF9vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yOTgtXFx0LmR1bXBcXHRcXHQ9XFx0dGNmX2dhY3RfZHVtcCxcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYzoyOTk6XFx0LmluaXRcXHRcXHQ9XFx0dGNmX2dhY3RfaW5pdCxcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0zMDAtXFx0LmdldF9maWxsX3NpemVcXHQ9XFx0dGNmX2dhY3RfZ2V0X2ZpbGxfc2l6ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MTguOTY4Mjc3NTk1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjI1NjM2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKk15IFVuZGVyc3RhbmRpbmcgb2YgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSB3aG9sZSBwcm9jZXNzIG9mIHNldHRpbmcgdXAgdGhlc2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbnMgaXMgcHJldHR5IGZ1bmRhbWVudGFsLiBUaGUga2VybmVsIHRyYWNrcyB0aGVtIHVzaW5nIHRoZSBgdGNfYWN0aW9uX29wc2AgZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGF0J3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gb2YgZWFjaCBzcGVjaWZpYyBhY3Rpb24gaXMga2VwdC4gVGhlIGNvcmUgZW50cnkgcG9pbnRzLCB0aGUgc3RhcnRpbmcgZ3VuIGZvciBhY3Rpb24gaW5pdGlhbGl6YXRpb24sIGFyZSBgdGNmX2FjdGlvbl9pbml0XzFgIG9yIGB0Y2ZfYWN0aW9uX2luaXRgIHdpdGhpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AuIFNvLCB3aGVuIEkgbmVlZCB0byBsb29rIGF0IGhvdyBhY3Rpb25zIGFyZSBhZGRlZCwgY29uZmlndXJlZCwgb3IgaGFuZGxlZCwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIOKAkyBgYWN0X2FwaS5jYCBhbmQgc3BlY2lmaWNhbGx5IHRob3NlIGluaXQgZnVuY3Rpb25zLiBJdCB0ZWxscyBtZSB3aGVyZSB0aGUgd2hvbGUgYmFsbCBvZiB3YXggZ2V0cyByb2xsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Mzc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MjIuNjMwODQ0Mjg0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzE0NDY4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfYWN0aW9uX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2FjdF9hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvYWN0X2FwaS5jPTEwMTc9aW50IHRjZl9yZWdpc3Rlcl9hY3Rpb24oc3RydWN0IHRjX2FjdGlvbl9vcHMgKmFjdCxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTAyNi1cXHQvKiBXZSBoYXZlIHRvIHJlZ2lzdGVyIHBlcm5ldCBvcHMgYmVmb3JlIG1ha2luZyB0aGUgYWN0aW9uIG9wcyB2aXNpYmxlLFxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTAyNzpcXHQgKiBvdGhlcndpc2UgdGNmX2FjdGlvbl9pbml0XzEoKSBjb3VsZCBnZXQgYSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWRcXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEwMjgtXFx0ICogbmV0bnMuXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jPTEzMzQ9c3RydWN0IHRjX2FjdGlvbl9vcHMgKnRjX2FjdGlvbl9sb2FkX29wcyhzdHJ1Y3QgbmxhdHRyICpubGEsIHUzMiBmbGFncyxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTM5Ni1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjEzOTc6c3RydWN0IHRjX2FjdGlvbiAqdGNmX2FjdGlvbl9pbml0XzEoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCxcXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IG5sYXR0ciAqZXN0LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYz0xNDU5PXN0YXRpYyBib29sIHRjX2FjdF9iaW5kKHUzMiBmbGFncylcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTQ2NS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE0NjY6aW50IHRjZl9hY3Rpb25faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgbmxhdHRyICpubGEsXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xNDY3LVxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKmFjdGlvbnNbXSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwNy1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2M9IFRDQV9BQ1RfTUFYX1BSSU8gXFx1MDAyNlxcdTAwMjYgdGJbaV07IGkrKykge1xcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTUwODpcXHRcXHRhY3QgPSB0Y2ZfYWN0aW9uX2luaXRfMShuZXQsIHRwLCB0YltpXSwgZXN0LCBvcHNbaSAtIDFdLFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwOS1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2aW5pdF9yZXNbaSAtIDFdLCBmbGFncywgZXh0YWNrKTtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM9MjA5Nj1zdGF0aWMgaW50IHRjZl9hY3Rpb25fYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0yMTA1LVxcdGZvciAobG9vcCA9IDA7IGxvb3AgXFx1MDAzYyAxMDsgbG9vcCsrKSB7XFxubmV0L3NjaGVkL2FjdF9hcGkuYzoyMTA2OlxcdFxcdHJldCA9IHRjZl9hY3Rpb25faW5pdChuZXQsIE5VTEwsIG5sYSwgTlVMTCwgYWN0aW9ucywgaW5pdF9yZXMsXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0yMTA3LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhdHRyX3NpemUsIGZsYWdzLCAwLCBleHRhY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMToyMi42ODc5OTU3NzNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMTQyODM2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkFuYWx5emluZyBFbnRyeSBQb2ludHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIG9uIHRoZXNlIGVudHJ5IHBvaW50cy4gU3BlY2lmaWNhbGx5LCBgdGNmX2FjdGlvbl9pbml0XzFgIGFuZCBgdGNmX2FjdGlvbl9pbml0YC4uLiB0aGVzZSBhcmUgdGhlIG9uZXMgKm5vdCogZGVjbGFyZWQgYXMgc3RhdGljLCBzbyB0aGV5J3JlIGxpa2VseSB0aGUgcHVibGljIGludGVyZmFjZXMgdG8gdGhlIGZ1bmN0aW9uYWxpdHkuIEJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlaXIgZXhwb3J0IHN0YXR1cy4gQXJlIHRoZXkgYWN0dWFsbHkgKmV4cG9ydGVkKiBzeW1ib2xzIGF2YWlsYWJsZSBmb3IgZXh0ZXJuYWwgbGlua2luZywgb3IgYXJlIHRoZXkgaW50ZXJuYWwgdG8gYSBwYXJ0aWN1bGFyIG1vZHVsZT8gVGhpcyB3aWxsIGRldGVybWluZSBob3cgYWNjZXNzaWJsZSB0aGV5IGFyZSBmb3IgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBMZXQncyBzZWUgd2hhdCB0aGUgc3ltYm9sIHRhYmxlIHRlbGxzIHVzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyOTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTozNC4wMDIyODI4NTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjY4NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9hY3Rpb25faW5pdF8xXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2FjdF9hcGkuYz0xMDE3PWludCB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKHN0cnVjdCB0Y19hY3Rpb25fb3BzICphY3QsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEwMjYtXFx0LyogV2UgaGF2ZSB0byByZWdpc3RlciBwZXJuZXQgb3BzIGJlZm9yZSBtYWtpbmcgdGhlIGFjdGlvbiBvcHMgdmlzaWJsZSxcXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjEwMjc6XFx0ICogb3RoZXJ3aXNlIHRjZl9hY3Rpb25faW5pdF8xKCkgY291bGQgZ2V0IGEgcGFydGlhbGx5IGluaXRpYWxpemVkXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI4LVxcdCAqIG5ldG5zLlxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYz0xMzM0PXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTYtXFxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMzk3OnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk4LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICpubGEsIHN0cnVjdCBubGF0dHIgKmVzdCxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM9MTQ2Nj1pbnQgdGNmX2FjdGlvbl9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwNy1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2M9IFRDQV9BQ1RfTUFYX1BSSU8gXFx1MDAyNlxcdTAwMjYgdGJbaV07IGkrKykge1xcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTUwODpcXHRcXHRhY3QgPSB0Y2ZfYWN0aW9uX2luaXRfMShuZXQsIHRwLCB0YltpXSwgZXN0LCBvcHNbaSAtIDFdLFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwOS1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2aW5pdF9yZXNbaSAtIDFdLCBmbGFncywgZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MzQuMDczNTU2OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM4NzY3MDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYHRjZl9hY3Rpb25faW5pdGAqKlxuXG5Pa2F5LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdGhhdCBgdGNmX2FjdGlvbl9pbml0XzFgIGlzbid0IGEgc3RhdGljIHZhcmlhYmxlLiBUaGlzIGltcGxpZXMgdGhhdCBpdHMgdmFsdWUgY2FuIGNoYW5nZSBvdmVyIHRpbWUsIGFuZCBpc24ndCBzb21ldGhpbmcgdGhhdCdzIGZpeGVkIGF0IGNvbXBpbGUgdGltZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IHJhaXNlcyBhIGZldyBpbW1lZGlhdGUgcXVlc3Rpb25zIGFib3V0IHRoZSBzY29wZSBhbmQgbGlmZWN5Y2xlIG9mIHRoYXQgdmFyaWFibGUuXG5cbk15IG5leHQgbW92ZSBpcyB0byB6ZXJvIGluIG9uIGB0Y2ZfYWN0aW9uX2luaXRgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgYmVpbmcgdXNlZCwgYW5kIHdoYXQgaXRzIHJlbGF0aW9uc2hpcCBpcyB0byBgdGNmX2FjdGlvbl9pbml0XzFgLiBJcyBgdGNmX2FjdGlvbl9pbml0YCBwb3RlbnRpYWxseSBhIGZ1bmN0aW9uIHRoYXQgcG9wdWxhdGVzIG9yIG1vZGlmaWVzIGB0Y2ZfYWN0aW9uX2luaXRfMWA/IElzIHRoZXJlIHNvbWUga2luZCBvZiBpbml0aWFsaXphdGlvbiBvciBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIHR3bz8gSSdtIHRoaW5raW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgY29kZSB3aGVyZSBgdGNmX2FjdGlvbl9pbml0YCBpcyBkZWZpbmVkIGFuZCB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYXJvdW5kIGB0Y2ZfYWN0aW9uX2luaXRgIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciwgYW5kIGltcGxpY2F0aW9ucywgb2YgYHRjZl9hY3Rpb25faW5pdF8xYC4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlZCB2YXJpYWJsZXMvZnVuY3Rpb25zIGFyZSBpbnRlcmFjdGluZywgYW5kIHdoYXQgdGhhdCBtaWdodCBiZSBhYmxlIHRvIHRlbGwgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTozNy44MTIzMjY4MjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzQ5ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9hY3Rpb25faW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvYWN0X2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9hY3RfYXBpLmM9MTAxNz1pbnQgdGNmX3JlZ2lzdGVyX2FjdGlvbihzdHJ1Y3QgdGNfYWN0aW9uX29wcyAqYWN0LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI2LVxcdC8qIFdlIGhhdmUgdG8gcmVnaXN0ZXIgcGVybmV0IG9wcyBiZWZvcmUgbWFraW5nIHRoZSBhY3Rpb24gb3BzIHZpc2libGUsXFxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMDI3OlxcdCAqIG90aGVyd2lzZSB0Y2ZfYWN0aW9uX2luaXRfMSgpIGNvdWxkIGdldCBhIHBhcnRpYWxseSBpbml0aWFsaXplZFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTAyOC1cXHQgKiBuZXRucy5cXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM9MTMzND1zdHJ1Y3QgdGNfYWN0aW9uX29wcyAqdGNfYWN0aW9uX2xvYWRfb3BzKHN0cnVjdCBubGF0dHIgKm5sYSwgdTMyIGZsYWdzLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk2LVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTM5NzpzdHJ1Y3QgdGNfYWN0aW9uICp0Y2ZfYWN0aW9uX2luaXRfMShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTM5OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jPTE0NTk9c3RhdGljIGJvb2wgdGNfYWN0X2JpbmQodTMyIGZsYWdzKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xNDY1LVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTQ2NjppbnQgdGNmX2FjdGlvbl9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjctXFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKmVzdCwgc3RydWN0IHRjX2FjdGlvbiAqYWN0aW9uc1tdLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xNTA3LVxcdGZvciAoaSA9IDE7IGkgXFx1MDAzYz0gVENBX0FDVF9NQVhfUFJJTyBcXHUwMDI2XFx1MDAyNiB0YltpXTsgaSsrKSB7XFxubmV0L3NjaGVkL2FjdF9hcGkuYzoxNTA4OlxcdFxcdGFjdCA9IHRjZl9hY3Rpb25faW5pdF8xKG5ldCwgdHAsIHRiW2ldLCBlc3QsIG9wc1tpIC0gMV0sXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xNTA5LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpbml0X3Jlc1tpIC0gMV0sIGZsYWdzLCBleHRhY2spO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYz0yMDk2PXN0YXRpYyBpbnQgdGNmX2FjdGlvbl9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIxMDUtXFx0Zm9yIChsb29wID0gMDsgbG9vcCBcXHUwMDNjIDEwOyBsb29wKyspIHtcXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjIxMDY6XFx0XFx0cmV0ID0gdGNmX2FjdGlvbl9pbml0KG5ldCwgTlVMTCwgbmxhLCBOVUxMLCBhY3Rpb25zLCBpbml0X3JlcyxcXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIxMDctXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmF0dHJfc2l6ZSwgZmxhZ3MsIDAsIGV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjM3Ljg2OTA4MDcyNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg1MDMxNTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgVENGIEFjdGlvbiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGB0Y2ZfYWN0aW9uX2luaXRgIGlzIHRoZSBvbmUgd2UncmUgaW50ZXJlc3RlZCBpbiwgYW5kIEkgcmVjYWxsIGl0J3MgZGVjbGFyZWQgaW4gYGluY2x1ZGUvbmV0L2FjdF9hcGkuaGAuIFJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoYXQgaGVhZGVyIGZpbGUgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgdGNmX2FjdGlvbl9pbml0YCBpdHNlbGYuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGJhc2UgaW50ZXJmYWNlIGZvciB0aGVzZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGhhbmRsZXJzLiBOZWVkIHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGFjdCBBUEkgc3RydWN0dXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5NTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTo0MS41NTQxMTQzOTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTcyNTQwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfYWN0aW9uX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvYWN0X2FwaS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2FjdF9hcGkuaD0yMTQ9aW50IHRjZl9hY3Rpb25fZXhlYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICoqYWN0aW9ucyxcXG5pbmNsdWRlL25ldC9hY3RfYXBpLmgtMjE1LVxcdFxcdCAgICBpbnQgbnJfYWN0aW9ucywgc3RydWN0IHRjZl9yZXN1bHQgKnJlcyk7XFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oOjIxNjppbnQgdGNmX2FjdGlvbl9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG5pbmNsdWRlL25ldC9hY3RfYXBpLmgtMjE3LVxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICplc3QsXFxuLS1cXG5pbmNsdWRlL25ldC9hY3RfYXBpLmg9MjIwPXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oLTIyMS1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5pbmNsdWRlL25ldC9hY3RfYXBpLmg6MjIyOnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oLTIyMy1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjQxLjY2NTg0NTk2MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjQwNTExMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gaG9taW5nIGluIG9uIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlLiBJdCBzZWVtcyBsaWtlIGJvdGggYHRjZl9hY3Rpb25faW5pdF8xYCBhbmQgYHRjZl9hY3Rpb25faW5pdGAgbG9vayBsaWtlIGV4Y2VsbGVudCBjYW5kaWRhdGVzIGZvciBteSBGb2N1c1N5bWJvbHMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aG9zZS5cblxuTm93LCBiZWZvcmUgSSBjb21taXQsIGxldCdzIHRha2UgYSBxdWljayBsb29rIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBpbXBvcnRhbnQgc2V0dGluZ3MgaW4gdGhlIGJyb2FkZXIgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIHNob3VsZCBjaGVjazogYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC5cblxuQWgsIHJpZ2h0LCBub3cgSSByZW1lbWJlci4gYE5FVF9BQ1RfUE9MSUNFYCBhbmQgYE5FVF9BQ1RfR0FDVGAgYXJlIGFjdHVhbGx5ICpyZXF1aXJlZCogZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEknbSB0YXJnZXRpbmcuIEkgY2FuJ3Qgb3Zlcmxvb2sgdGhvc2UuIE9rYXksIHNvIG5vdyB3aGF0IGFib3V0IGBORVRfU0NIRURgPyBUaGF0J3MgdGhlIG1lbnVjb25maWcgb3B0aW9uLCBpc24ndCBpdD8gTGV0J3MgY29uZmlybSB0aGF0LlxuXG5ZZXMsIGBORVRfU0NIRURgIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZC4gUGVyZmVjdC4gU28sIG15IGxpc3Qgbm93IGxvb2tzIGxpa2U6IGBORVRfU0NIRURgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9QT0xJQ0VgLCBgTkVUX0FDVF9HQUNUYCwgYW5kIGBHQUNUX1BST0JgLiBHb3QgaXQuXG5cbldhaXQgYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIGBORVRfU0NIRURgIGlzIHJlYWxseSBuZWVkZWQuIFVzdWFsbHksIHdoZW4geW91IGVuYWJsZSBgTkVUX0NMU19BQ1RgLCBgTkVUX1NDSEVEYCBmb2xsb3dzIGFzIGEgcmVxdWlyZW1lbnQuIFRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBiZSBwcmVjaXNlIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcywgYWZ0ZXIgYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ1NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTo0OS45MDYzNTk4MTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MDY3MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjQ5Ljk3MzQzMDk4MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTE0NTczMzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBBY3Rpb24gSW5pdGlhbGl6YXRpb24gaW4gdGhlIE5ldHdvcmtpbmcgU3Vic3lzdGVtKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbmV0d29ya2luZyBjb2RlLiBGaXJzdCB0aGluZywgSSBuZWVkIHRvIGNvbmZpcm0gYE5FVF9TQ0hFRGAgaXMgaW5kZWVkIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZCwgY2hlY2suIE5vdywgbXkgcHJpbWFyeSBmb2N1cyBpcyB1bmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBhY3Rpb25zIHdpdGhpbiB0aGlzIGZyYW1ld29yay4gTGV0J3Mgc2VlIGlmIGB0Y2ZfYWN0aW9uX2luaXRfMWAgaXMgdGhlIGJlc3QgZW50cnkgcG9pbnQgZm9yIHRoaXMuIFllcywgdGhhdCBsb29rcyBsaWtlIGl0OyBpdCdzIHRoZSByaWdodCBmdW5jdGlvbiwgYXMgaXQncyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGEgc2luZ2xlIGFjdGlvbiBhbmQgY2FsbHMgdGhlIHJlbGV2YW50IGAuaW5pdGAgY2FsbGJhY2sgb2YgdGhlIGFjdGlvbiBvcGVyYXRpb25zLlxuXG5UaGUgcGF0Y2ggbWVudGlvbnMgbW9kaWZpY2F0aW9ucyB0byBgdGNmX2dhY3RfaW5pdGAgYW5kIGB0Y2ZfcG9saWNlX2luaXRgLCB3aGljaCBwb2ludHMgbWUgdG93YXJkcyBmb2N1c2luZyBvbiBgdGNmX2FjdGlvbl9pbml0XzFgIGFzIGEga2V5IHN5bWJvbC4gQWxzbywgSSBzaG91bGRuJ3QgaWdub3JlIGB0Y2ZfYWN0aW9uX2luaXRgLCBzaW5jZSBpdCBkaXJlY3RseSBjYWxscyBgdGNmX2FjdGlvbl9pbml0XzFgLlxuXG5JIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IGxvb2sgYXQgYHRjZl9hY3Rpb25fdmFsaWRgIGluIGBpbmNsdWRlL25ldC9hY3RfYXBpLmhgLiBPaCwgaXQncyBpbmxpbmUsIHNvIGl0IHdvbid0IHNob3cgdXAgYXMgYSBzeW1ib2wuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuSSdtIGNoZWNraW5nIGZvciBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmdW5jdGlvbnMuIGB0Y2ZfZ2FjdF9pbml0YCBhbmQgYHRjZl9wb2xpY2VfaW5pdGAgYXJlIHN0YXRpYywgc28gdGhleSdyZSBub3QgZ29pbmcgdG8gYmUgZ29vZCBjYW5kaWRhdGVzIHRvIHRyYWNrLiBgdGNmX2FjdGlvbl9pbml0XzFgIGlzIGRlZmluaXRlbHkgdGhlIHByaW1lIGNhbmRpZGF0ZS5cblxuTm93LCBsZXQncyBtYWtlIGEgcXVpY2sgbm90ZSBvZiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC5cblxuRmluYWxseSwgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBgTkVUX0FDVF9QT0xJQ0VgIGFuZCBgTkVUX0FDVF9HQUNUYCBib3RoIGRlcGVuZCBvbiBgTkVUX0NMU19BQ1RgLiBgR0FDVF9QUk9CYCBmdXJ0aGVyIGRlcGVuZHMgb24gYE5FVF9BQ1RfR0FDVGAuIEFuZCBJJ20gcHJldHR5IHN1cmUgYE5FVF9DTFNfQUNUYCBpcyBjb25kaXRpb25hbCB1bmRlciBgTkVUX1NDSEVEYC4gTGV0J3MganVzdCBjb25maXJtIHRoYXQgbGFzdCBvbmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMzUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6NTcuODg4MDA3MjYzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzA3MTA5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZiBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9Nj1tZW51Y29uZmlnIE5FVF9TQ0hFRFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDMtXFxubmV0L3NjaGVkL0tjb25maWc6NDQ6aWYgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjU3Ljk2MTA4MjY5MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzQwODcwNDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBjb2RlLCBhbmQgaXQncyBjbGVhciB0aGF0IGBORVRfQ0xTX0FDVGAgaXMgbmVzdGVkIHVuZGVyIGBORVRfU0NIRURgLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwaW5nIHRoaW5ncyBvcmdhbml6ZWQuIFNvLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSByZWxldmFudCBjb25maWdzIGFyZSBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC4gU3RhbmRhcmQgc3R1ZmYsIHNldHRpbmcgdXAgdHJhZmZpYyBjb250cm9sIGFuZCBhbGwgdGhhdC5cblxuTm93LCBteSBmb2N1cyBzeW1ib2xzIGhlcmUgYXJlIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnM6IGB0Y2ZfYWN0aW9uX2luaXRfMWAgYW5kIGB0Y2ZfYWN0aW9uX2luaXRgLiBTZWVtcyBsaWtlIHRoYXQncyB0aGUga2V5IGVudHJ5IHBvaW50IHRvIHdoZXJlIHRoaW5ncyBhcmUgaGFwcGVuaW5nLlxuXG5SaWdodCwgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgdmFsaWRhdGlvbiBpc3N1ZXMgZm9yIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgZ2VuZXJpYyBhY3Rpb24gKGdhY3QpIGFuZCBwb2xpY2UgYWN0aW9uIG1vZHVsZXMuIFRoZSBtYWpvciBjaGFuZ2UgaXMgZnVuY3Rpb25hbCAtIHRoaXMgaXMgYWJvdXQgcHJldmVudGluZyB1c2Vyc3BhY2UgZnJvbSBnZXR0aW5nIGhvbGQgb2YgaW50ZXJuYWwga2VybmVsIHZlcmRpY3RzLCB3aGljaCBpcyBnb29kLiBXZSBkZWZpbml0ZWx5IGRvbid0IHdhbnQgdGhhdCBraW5kIG9mIHNlY3VyaXR5IGlzc3VlIGNyZWVwaW5nIGluLiBUaGlzIGlzIGEgc29saWQgcGllY2Ugb2Ygd29yay5cblxuVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgYmVpbmcgcmVhY2hlZCB0aHJvdWdoIHRoZSB0YyBhY3Rpb24gaW5pdGlhbGl6YXRpb24gcGF0aC4gVGhhdCdzIGEgZ29vZCBzcG90IHRvIGNoZWNrIGZvciB0aGlzIGtpbmQgb2YgdGhpbmcuIExldCdzIGNhbGwgdGhpcyBgc2V0LXJlc3VsdHNgLiBcblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNjAsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAyOjA2LjcwMTk1NzAxN1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDk2NjAzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkVUX0FDVF9QT0xJQ0VcIixcbiAgICBcIk5FVF9BQ1RfR0FDVFwiLFxuICAgIFwiR0FDVF9QUk9CXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2FjdGlvbl9pbml0XzFcIixcbiAgICBcInRjZl9hY3Rpb25faW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgZmFsbGJhY2sgY29udHJvbCBhY3Rpb25zIGluIHRoZSBnZW5lcmljIGFjdGlvbiAoZ2FjdCkgYW5kIHBvbGljZSBhY3Rpb24gbW9kdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgdXNlciBzcGFjZSBmcm9tIHN0b3Jpbmcga2VybmVsLWludGVybmFsIHZlcmRpY3RzLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSB0YyBhY3Rpb24gaW5pdGlhbGl6YXRpb24gcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX1BPTElDRVwiLFxuICAgIFwiTkVUX0FDVF9HQUNUXCIsXG4gICAgXCJHQUNUX1BST0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYWN0aW9uX2luaXRfMVwiLFxuICAgIFwidGNmX2FjdGlvbl9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowz9n9l[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 10:40:54 +0000 UTC FinishedAt: 2026-08-06 11:02:09 +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": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT", "NET_ACT_POLICE", "NET_ACT_GACT", "GACT_PROB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT", "NET_ACT_POLICE", "NET_ACT_GACT", "GACT_PROB" ], "series_id": "ebe6cd8d-d122-4d7e-a239-4da690a99b69" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_action_init_1", "tcf_action_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX1BPTElDRSYjMzQ7LAogICAgJiMzNDtORVRfQUNUX0dBQ1QmIzM0OywKICAgICYjMzQ7R0FDVF9QUk9CJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2FjdGlvbl9pbml0XzEmIzM0OywKICAgICYjMzQ7dGNmX2FjdGlvbl9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgZmFsbGJhY2sgY29udHJvbCBhY3Rpb25zIGluIHRoZSBnZW5lcmljIGFjdGlvbiAoZ2FjdCkgYW5kIHBvbGljZSBhY3Rpb24gbW9kdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgdXNlciBzcGFjZSBmcm9tIHN0b3Jpbmcga2VybmVsLWludGVybmFsIHZlcmRpY3RzLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSB0YyBhY3Rpb24gaW5pdGlhbGl6YXRpb24gcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJlMGQ2NTg3ZDgyZGU2NzBhMjBiYmRiZDkzNTAwMGJhZmJkYmE4MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDExOjAwOjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaCBiL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxuaW5kZXggMjBkOWU1NWY4NTY0ZC4uZmQwM2Y2MzE5ZTg4MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYWN0X2FwaS5oXG5AQCAtMjcwLDYgJiM0MzsyNzAsMjUgQEAgaW50IHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdChpbnQgYWN0aW9uLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCxcbiBzdHJ1Y3QgdGNmX2NoYWluICp0Y2ZfYWN0aW9uX3NldF9jdHJsYWN0KHN0cnVjdCB0Y19hY3Rpb24gKmEsIGludCBhY3Rpb24sXG4gXHRcdFx0XHRcdCBzdHJ1Y3QgdGNmX2NoYWluICpuZXdjaGFpbik7XG4gXG4mIzQzOy8qIFJhbmdlIGNoZWNrIGZvciBhIGNvbnRyb2wgYWN0aW9uIHN1cHBsaWVkIGJ5IHVzZXIgc3BhY2UuXG4mIzQzOyAqXG4mIzQzOyAqIFRoaXMgaXMgdGhlIHNhbWUgdGVzdCB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QoKSBhcHBsaWVzIHRvIHRoZSBwcmltYXJ5XG4mIzQzOyAqIGNvbnRyb2wgYWN0aW9uLCBmYWN0b3JlZCBvdXQgZm9yIHRoZSAqZmFsbGJhY2sqIGNvbnRyb2wgYWN0aW9uc1xuJiM0MzsgKiAoYWN0X2dhY3QmIzM5O3MgVENBX0dBQ1RfUFJPQi5wYWN0aW9uIGFuZCBhY3RfcG9saWNlJiMzOTtzIFRDQV9QT0xJQ0VfUkVTVUxUKSxcbiYjNDM7ICogd2hpY2ggbXVzdCBub3QgcmVhY2ggdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KCkgYmVjYXVzZSB0aGV5IGhhdmUgbm9cbiYjNDM7ICogZ290b19jaGFpbiB0byBhbGxvY2F0ZS4gIFdpdGhvdXQgaXQsIHVzZXIgc3BhY2UgY2FuIHN0b3JlIGtlcm5lbC1pbnRlcm5hbFxuJiM0MzsgKiB2ZXJkaWN0cyBzdWNoIGFzIFRDX0FDVF9DT05TVU1FRCwgd2hpY2ggaXMgVENfQUNUX1ZBTFVFX01BWCAmIzQzOyAxIGFuZCBpc1xuJiM0MzsgKiBkZWxpYmVyYXRlbHkgbm90IHBhcnQgb2YgdGhlIFVBUEkgdmFsdWUgcmFuZ2UuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgdGNmX2FjdGlvbl92YWxpZChpbnQgYWN0aW9uKVxuJiM0Mzt7XG4mIzQzO1x0aW50IG9wY29kZSA9IFRDX0FDVF9FWFRfT1BDT0RFKGFjdGlvbik7XG4mIzQzO1xuJiM0MztcdGlmICghb3Bjb2RlKVxuJiM0MztcdFx0cmV0dXJuIGFjdGlvbiBcdTAwM2M9IFRDX0FDVF9WQUxVRV9NQVg7XG4mIzQzO1x0cmV0dXJuIG9wY29kZSBcdTAwM2M9IFRDX0FDVF9FWFRfT1BDT0RFX01BWCB8fCBhY3Rpb24gPT0gVENfQUNUX1VOU1BFQztcbiYjNDM7fVxuJiM0MztcbiAjaWZkZWYgQ09ORklHX0lORVRcbiBERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UodGNmX2ZyYWdfeG1pdF9jb3VudCk7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9nYWN0LmMgYi9uZXQvc2NoZWQvYWN0X2dhY3QuY1xuaW5kZXggZTk0OTI4MGViODAwZC4uNTY1ODYwY2NjYmE2ZCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfZ2FjdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X2dhY3QuY1xuQEAgLTg5LDYgJiM0Mzs4OSwxMSBAQCBzdGF0aWMgaW50IHRjZl9nYWN0X2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdHBfcGFybSA9IG5sYV9kYXRhKHRiW1RDQV9HQUNUX1BST0JdKTtcbiBcdFx0aWYgKHBfcGFybS1cdTAwM2VwdHlwZSBcdTAwM2U9IE1BWF9SQU5EKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0aWYgKCF0Y2ZfYWN0aW9uX3ZhbGlkKHBfcGFybS1cdTAwM2VwYWN0aW9uKSkge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4mIzQzO1x0XHRcdFx0ICAgICAgIFwmIzM0O2ludmFsaWQgZmFsbGJhY2sgY29udHJvbCBhY3Rpb25cJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKFRDX0FDVF9FWFRfQ01QKHBfcGFybS1cdTAwM2VwYWN0aW9uLCBUQ19BQ1RfR09UT19DSEFJTikpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4gXHRcdFx0XHQgICAgICAgXCYjMzQ7Z290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFja1wmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wb2xpY2UuYyBiL25ldC9zY2hlZC9hY3RfcG9saWNlLmNcbmluZGV4IGIxNjQ2OGE5OGM1NWUuLmNlMDhmNjg0MGVmN2MgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BvbGljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X3BvbGljZS5jXG5AQCAtMTI4LDYgJiM0MzsxMjgsMTIgQEAgc3RhdGljIGludCB0Y2ZfcG9saWNlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXG4gXHRpZiAodGJbVENBX1BPTElDRV9SRVNVTFRdKSB7XG4gXHRcdHRjZnBfcmVzdWx0ID0gbmxhX2dldF91MzIodGJbVENBX1BPTElDRV9SRVNVTFRdKTtcbiYjNDM7XHRcdGlmICghdGNmX2FjdGlvbl92YWxpZCh0Y2ZwX3Jlc3VsdCkpIHtcbiYjNDM7XHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuJiM0MztcdFx0XHRcdCAgICAgICBcJiMzNDtpbnZhbGlkIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9uXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ZXJyID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0Z290byBmYWlsdXJlO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAoVENfQUNUX0VYVF9DTVAodGNmcF9yZXN1bHQsIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiBcdFx0XHRcdCAgICAgICBcJiMzNDtnb3RvIGNoYWluIG5vdCBhbGxvd2VkIG9uIGZhbGxiYWNrXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUE9MSUNFJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfR0FDVCYjMzQ7LAogICAgJiMzNDtHQUNUX1BST0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfYWN0aW9uX2luaXRfMSYjMzQ7LAogICAgJiMzNDt0Y2ZfYWN0aW9uX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmUwZDY1ODdkODJkZTY3MGEyMGJiZGJkOTM1MDAwYmFmYmRiYTgxMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTE6MDA6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hY3RfYXBpLmggYi9pbmNsdWRlL25ldC9hY3RfYXBpLmgKaW5kZXggMjBkOWU1NWY4NTY0ZC4uZmQwM2Y2MzE5ZTg4MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYWN0X2FwaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FjdF9hcGkuaApAQCAtMjcwLDYgJiM0MzsyNzAsMjUgQEAgaW50IHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdChpbnQgYWN0aW9uLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwKIHN0cnVjdCB0Y2ZfY2hhaW4gKnRjZl9hY3Rpb25fc2V0X2N0cmxhY3Qoc3RydWN0IHRjX2FjdGlvbiAqYSwgaW50IGFjdGlvbiwKIAkJCQkJIHN0cnVjdCB0Y2ZfY2hhaW4gKm5ld2NoYWluKTsKIAomIzQzOy8qIFJhbmdlIGNoZWNrIGZvciBhIGNvbnRyb2wgYWN0aW9uIHN1cHBsaWVkIGJ5IHVzZXIgc3BhY2UuCiYjNDM7ICoKJiM0MzsgKiBUaGlzIGlzIHRoZSBzYW1lIHRlc3QgdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KCkgYXBwbGllcyB0byB0aGUgcHJpbWFyeQomIzQzOyAqIGNvbnRyb2wgYWN0aW9uLCBmYWN0b3JlZCBvdXQgZm9yIHRoZSAqZmFsbGJhY2sqIGNvbnRyb2wgYWN0aW9ucwomIzQzOyAqIChhY3RfZ2FjdCYjMzk7cyBUQ0FfR0FDVF9QUk9CLnBhY3Rpb24gYW5kIGFjdF9wb2xpY2UmIzM5O3MgVENBX1BPTElDRV9SRVNVTFQpLAomIzQzOyAqIHdoaWNoIG11c3Qgbm90IHJlYWNoIHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdCgpIGJlY2F1c2UgdGhleSBoYXZlIG5vCiYjNDM7ICogZ290b19jaGFpbiB0byBhbGxvY2F0ZS4gIFdpdGhvdXQgaXQsIHVzZXIgc3BhY2UgY2FuIHN0b3JlIGtlcm5lbC1pbnRlcm5hbAomIzQzOyAqIHZlcmRpY3RzIHN1Y2ggYXMgVENfQUNUX0NPTlNVTUVELCB3aGljaCBpcyBUQ19BQ1RfVkFMVUVfTUFYICYjNDM7IDEgYW5kIGlzCiYjNDM7ICogZGVsaWJlcmF0ZWx5IG5vdCBwYXJ0IG9mIHRoZSBVQVBJIHZhbHVlIHJhbmdlLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCB0Y2ZfYWN0aW9uX3ZhbGlkKGludCBhY3Rpb24pCiYjNDM7ewomIzQzOwlpbnQgb3Bjb2RlID0gVENfQUNUX0VYVF9PUENPREUoYWN0aW9uKTsKJiM0MzsKJiM0MzsJaWYgKCFvcGNvZGUpCiYjNDM7CQlyZXR1cm4gYWN0aW9uICZsdDs9IFRDX0FDVF9WQUxVRV9NQVg7CiYjNDM7CXJldHVybiBvcGNvZGUgJmx0Oz0gVENfQUNUX0VYVF9PUENPREVfTUFYIHx8IGFjdGlvbiA9PSBUQ19BQ1RfVU5TUEVDOwomIzQzO30KJiM0MzsKICNpZmRlZiBDT05GSUdfSU5FVAogREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKHRjZl9mcmFnX3htaXRfY291bnQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dhY3QuYyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jCmluZGV4IGU5NDkyODBlYjgwMGQuLjU2NTg2MGNjY2JhNmQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfZ2FjdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jCkBAIC04OSw2ICYjNDM7ODksMTEgQEAgc3RhdGljIGludCB0Y2ZfZ2FjdF9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLAogCQlwX3Bhcm0gPSBubGFfZGF0YSh0YltUQ0FfR0FDVF9QUk9CXSk7CiAJCWlmIChwX3Bhcm0tJmd0O3B0eXBlICZndDs9IE1BWF9SQU5EKQogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQlpZiAoIXRjZl9hY3Rpb25fdmFsaWQocF9wYXJtLSZndDtwYWN0aW9uKSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywKJiM0MzsJCQkJICAgICAgICYjMzQ7aW52YWxpZCBmYWxsYmFjayBjb250cm9sIGFjdGlvbiYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KIAkJaWYgKFRDX0FDVF9FWFRfQ01QKHBfcGFybS0mZ3Q7cGFjdGlvbiwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7CiAJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCiAJCQkJICAgICAgICYjMzQ7Z290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFjayYjMzQ7KTsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfcG9saWNlLmMgYi9uZXQvc2NoZWQvYWN0X3BvbGljZS5jCmluZGV4IGIxNjQ2OGE5OGM1NWUuLmNlMDhmNjg0MGVmN2MgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfcG9saWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9wb2xpY2UuYwpAQCAtMTI4LDYgJiM0MzsxMjgsMTIgQEAgc3RhdGljIGludCB0Y2ZfcG9saWNlX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsCiAKIAlpZiAodGJbVENBX1BPTElDRV9SRVNVTFRdKSB7CiAJCXRjZnBfcmVzdWx0ID0gbmxhX2dldF91MzIodGJbVENBX1BPTElDRV9SRVNVTFRdKTsKJiM0MzsJCWlmICghdGNmX2FjdGlvbl92YWxpZCh0Y2ZwX3Jlc3VsdCkpIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCiYjNDM7CQkJCSAgICAgICAmIzM0O2ludmFsaWQgZmFsbGJhY2sgY29udHJvbCBhY3Rpb24mIzM0Oyk7CiYjNDM7CQkJZXJyID0gLUVJTlZBTDsKJiM0MzsJCQlnb3RvIGZhaWx1cmU7CiYjNDM7CQl9CiAJCWlmIChUQ19BQ1RfRVhUX0NNUCh0Y2ZwX3Jlc3VsdCwgVENfQUNUX0dPVE9fQ0hBSU4pKSB7CiAJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCiAJCQkJICAgICAgICYjMzQ7Z290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFjayYjMzQ7KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgQ29uZmlndXJhdGlvbiBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIGEgZ29vZCwgc2Vuc2libGUgaGFyZGVuaW5nIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgYWRkaW5nIGEgcmFuZ2UgY2hlY2sgZm9yIHVzZXItc3VwcGxpZWQgY29udHJvbCBhY3Rpb25zIHdpdGhpbiB0aGUgYG5ldC9zY2hlZGAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gYGFjdF9nYWN0LmNgIGFuZCBgYWN0X3BvbGljZS5jYC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYHRjZl9hY3Rpb25fdmFsaWRgIGZ1bmN0aW9uIGluIGBpbmNsdWRlL25ldC9hY3RfYXBpLmhgIGFuZCBpdHMgdXNhZ2Ugd2l0aGluIGB0Y2ZfZ2FjdF9pbml0YCBhbmQgYHRjZl9wb2xpY2VfaW5pdGAgaXMgYSBjbGVhbiB3YXkgdG8gaW1wbGVtZW50IHRoaXMgdmFsaWRhdGlvbi4gUHJldmVudGluZyBpbnZhbGlkIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9ucyBpbXByb3ZlcyB0aGUgb3ZlcmFsbCByb2J1c3RuZXNzIG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBpbXByb3Zpbmcgc2VjdXJpdHkgYW5kIHN0YWJpbGl0eS4KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBuZXQvc2NoZWQvYWN0X2dhY3QuY2AgY29ycmVzcG9uZHMgdG8gYE5FVF9BQ1RfR0FDVGAsIGFuZCBgbmV0L3NjaGVkL2FjdF9wb2xpY2UuY2AgY29ycmVzcG9uZHMgdG8gYE5FVF9BQ1RfUE9MSUNFYC4gTm93LCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBtb2R1bGVzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBtaWdodCBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9BQ1RfR0FDVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0Vcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MjUtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MjY6Y29uZmlnIE5FVF9BQ1RfR0FDVFxubmV0L3NjaGVkL0tjb25maWctNzI3LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBhY3Rpb25zXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzM2PWNvbmZpZyBHQUNUX1BST0Jcbm5ldC9zY2hlZC9LY29uZmlnLTczNy1cdGJvb2wgXCYjMzQ7UHJvYmFiaWxpdHkgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzM4Olx0ZGVwZW5kcyBvbiBORVRfQUNUX0dBQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTczOS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDkyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgR0FDVF9QUk9CIGFuZCBUQ0FfR0FDVF9QUk9CIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSBzZWUgdGhhdCBgR0FDVF9QUk9CYCBpcyBhIHJlcXVpcmVkIGlucHV0IGZvciBgVENBX0dBQ1RfUFJPQmAgd2l0aGluIGBhY3RfZ2FjdC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCBidXQgaXQmIzM5O3MgYWx3YXlzIHdpc2UgdG8gYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSB0aGluZ3MsIGVzcGVjaWFsbHkgaW4gcGVyZm9ybWFuY2UtY3JpdGljYWwgc2VjdGlvbnMgb2YgdGhlIGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MganVzdCBjb25maXJtIGhvdyBgR0FDVF9QUk9CYCBpcyBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiB0aGF0IG1vZHVsZS4gVGhlcmUgY291bGQgYmUgc3VidGxlIGRlcGVuZGVuY2llcyBvciBlZGdlIGNhc2VzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIG9yIHBlcmhhcHMgYW4gb3Bwb3J0dW5pdHkgZm9yIG9wdGltaXphdGlvbiBJIGhhdmVuJiMzOTt0IHNwb3R0ZWQgeWV0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYGFjdF9nYWN0LmNgIGZpbGUgYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoYXQgcGllY2Ugb2YgdGhlIHB1enpsZS4gR290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgbGluZWQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RDQV9HQUNUX1BST0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2dhY3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2dhY3QuYz00OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZ2FjdF9wb2xpY3lbVENBX0dBQ1RfTUFYICYjNDM7IDFdID0ge1xubmV0L3NjaGVkL2FjdF9nYWN0LmMtNDktXHRbVENBX0dBQ1RfUEFSTVNdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgdGNfZ2FjdCkgfSxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjUwOlx0W1RDQV9HQUNUX1BST0JdXHRcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB0Y19nYWN0X3ApIH0sXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy01MS19O1xuLS1cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTUzPXN0YXRpYyBpbnQgdGNmX2dhY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy04NC0jaWZuZGVmIENPTkZJR19HQUNUX1BST0Jcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjg1Olx0aWYgKHRiW1RDQV9HQUNUX1BST0JdICE9IE5VTEwpXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy04Ni1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xubmV0L3NjaGVkL2FjdF9nYWN0LmMtODctI2Vsc2Vcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjg4Olx0aWYgKHRiW1RDQV9HQUNUX1BST0JdKSB7XG5uZXQvc2NoZWQvYWN0X2dhY3QuYzo4OTpcdFx0cF9wYXJtID0gbmxhX2RhdGEodGJbVENBX0dBQ1RfUFJPQl0pO1xubmV0L3NjaGVkL2FjdF9nYWN0LmMtOTAtXHRcdGlmIChwX3Bhcm0tXHUwMDNlcHR5cGUgXHUwMDNlPSBNQVhfUkFORClcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYz0xOTA9c3RhdGljIGludCB0Y2ZfZ2FjdF9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4tLVxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMjEzLVxubmV0L3NjaGVkL2FjdF9nYWN0LmM6MjE0Olx0XHRpZiAobmxhX3B1dChza2IsIFRDQV9HQUNUX1BST0IsIHNpemVvZihwX29wdCksIFx1MDAyNnBfb3B0KSlcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTIxNS1cdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYz0yMzE9c3RhdGljIHNpemVfdCB0Y2ZfZ2FjdF9nZXRfZmlsbF9zaXplKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmFjdClcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yMzYtXHRpZiAodG9fZ2FjdChhY3QpLVx1MDAzZXRjZmdfcHR5cGUpXG5uZXQvc2NoZWQvYWN0X2dhY3QuYzoyMzc6XHRcdC8qIFRDQV9HQUNUX1BST0IgKi9cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTIzOC1cdFx0c3ogJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgdGNfZ2FjdF9wKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktjb25maWcgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBNZW50YWwgQXVkaXQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzLCBhbmQgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvZGUgY2hhbmdlcyBpbiBgYWN0X2dhY3QuY2AgYXJlIGd1YXJkZWQgYmVoaW5kIHRoZSBgQ09ORklHX0dBQ1RfUFJPQmAgKmFuZCogYENPTkZJR19ORVRfQUNUX0dBQ1RgIG9wdGlvbnMuIE1ha2VzIHNlbnNlLCB0aGF0JiMzOTtzIHRoZSBwcm9iYWJpbGlzdGljIGdhY3QgZnVuY3Rpb25hbGl0eS4gQW5kLCBhcyBleHBlY3RlZCwgYGFjdF9wb2xpY2UuY2AgbmVlZHMgYENPTkZJR19ORVRfQUNUX1BPTElDRWAuIE5vIHN1cnByaXNlcyB0aGVyZS4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgY29ycmVjdCBmb3IgdGhvc2UgbW9kdWxlcy4gVGltZSB0byBkaWcgaW50byBgbmV0L3NjaGVkL0tjb25maWdgIGFuZCB2ZXJpZnkgdGhlIGBORVRfQUNUX1BPTElDRWAgZGVmaW5pdGlvbi4gSnVzdCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGRlcGVuZGVuY3kgdHJlZSBiZWZvcmUgSSBtYWtlIGFueSBtb2RpZmljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQUNUX1BPTElDRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTcwMj1jb25maWcgTkVUX0NMU19BQ1Rcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MTQtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MTU6Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFBvbGljaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgcmVsZXZhbnQgZmllbGQ6CgoqKkFzc2Vzc2luZyBEZXBlbmRlbmNpZXMqKgoKSG1tLCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHNvbWV0aGluZyBhbmQgSSYjMzk7dmUgY29tZSBhY3Jvc3MgdGhpcyBgTkVUX0NMU19BQ1RgIHRlcm0uIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYWxtb3N0IGNlcnRhaW4gdGhhdCB3aGF0ZXZlciB0aGUgc3lzdGVtIG9yIHByb2Nlc3MgSSYjMzk7bSB3b3JraW5nIHdpdGggaXMsIHRoaXMgYE5FVF9DTFNfQUNUYCBjb21wb25lbnQgb3IgYWN0aXZhdGlvbiBpcyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIFRoZSB3YXkgaXQmIzM5O3MgcGhyYXNlZCBpbXBsaWVzIGEgcG90ZW50aWFsIGRlcGVuZGVuY2Ugb24gaXQgYmVpbmcgcHJlc2VudCBvciBhY3RpdmUuIFRoYXQgYmVpbmcgdGhlIGNhc2UsIEkmIzM5O2Qgc2F5IHRoYXQgSSYjMzk7bGwgcHJvYmFibHkgbmVlZCBgTkVUX0NMU19BQ1RgIGZvciAqYm90aCogb2YgdGhlIGZ1bmN0aW9ucyBvciBtb2R1bGVzIHRoYXQgSSYjMzk7bSBjb25zaWRlcmluZy4gVGhlcmUgaXNuJiMzOTt0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBuYXJyb3cgZG93biB3aGljaCBmdW5jdGlvbiwgc28gSSYjMzk7bSBpbmZlcnJpbmcgYSB1bml2ZXJzYWwgZGVwZW5kZW5jeS4gSSBjYW4gYWx3YXlzIGNoZWNrIG9uIHRoaXMgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTX0FDVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MDEtXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDI6Y29uZmlnIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXHRib29sIFwmIzM0O0FjdGlvbnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTExNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jaWVzOiBORVRfQUNUX1BPTElDRSBhbmQgTkVUX0FDVF9HQUNUKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgY3J1Y2lhbCBwcmVsaW1pbmFyeSBzdGVwOiBJIG5lZWQgdG8gYXNjZXJ0YWluIHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzIG9mIGBORVRfQUNUX1BPTElDRWAgYW5kIGBORVRfQUNUX0dBQ1RgLiBLbm93aW5nIHdoYXQgdGhlc2UgZnVuY3Rpb25hbGl0aWVzIHJlbHkgb24gaXMgYWJzb2x1dGVseSBmdW5kYW1lbnRhbCBmb3IgYW55IG1vZGlmaWNhdGlvbiwgZGVidWdnaW5nLCBvciBldmVuIGp1c3QgYSBnZW5lcmFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlaXIgcGxhY2Ugd2l0aGluIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2suIEl0JiMzOTtzIHRvbyByaXNreSB0byBwcm9jZWVkIHdpdGhvdXQgdGhhdCBzb2xpZCBmb3VuZGF0aW9uLiBJ4oCZbSB0aGlua2luZywgdGhpcyBkZXBlbmRlbmN5IGluZm9ybWF0aW9uLCBvbmNlIHNlY3VyZWQsIHdpbGwgZ3VpZGUgbXkgbmV4dCBzdGVwcyAtIGF2b2lkaW5nIGEgcG90ZW50aWFsbHkgbWVzc3kgc2l0dWF0aW9uIHdpdGggdW5mb3Jlc2VlbiBjb25zZXF1ZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKk5FVF9DTFNfQUNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1Ncbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cdHRyaXN0YXRlIFwmIzM0O0luZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTM1MC1cdHNlbGVjdCBORVRfWEdSRVNTXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzE1PWNvbmZpZyBORVRfQUNUX1BPTElDRVxubmV0L3NjaGVkL0tjb25maWctNzE2LVx0dHJpc3RhdGUgXCYjMzQ7VHJhZmZpYyBQb2xpY2luZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzE3Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzE4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcyNj1jb25maWcgTkVUX0FDVF9HQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGFjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcyODpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXG5uZXQvc2NoZWQvS2NvbmZpZy03NDMtXHR0cmlzdGF0ZSBcJiMzNDtSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NDQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NDUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzUyPWNvbmZpZyBORVRfQUNUX1NBTVBMRVxubmV0L3NjaGVkL0tjb25maWctNzUzLVx0dHJpc3RhdGUgXCYjMzQ7VHJhZmZpYyBTYW1wbGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzU0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzU1LVx0c2VsZWN0IFBTQU1QTEVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXHR0cmlzdGF0ZSBcJiMzNDtTdGF0ZWxlc3MgTkFUXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NjY6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXG5uZXQvc2NoZWQvS2NvbmZpZy03NzUtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRWRpdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzc2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzc3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc4Mz1jb25maWcgTkVUX0FDVF9TSU1QXG5uZXQvc2NoZWQvS2NvbmZpZy03ODQtXHR0cmlzdGF0ZSBcJiMzNDtTaW1wbGUgRXhhbXBsZSAoRGVidWcpXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03ODYtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9Nzk3PWNvbmZpZyBORVRfQUNUX1NLQkVESVRcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cdHRyaXN0YXRlIFwmIzM0O1NLQiBFZGl0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3OTk6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cbm5ldC9zY2hlZC9LY29uZmlnLTgwOS1cdHRyaXN0YXRlIFwmIzM0O0NoZWNrc3VtIFVwZGF0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4MTA6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBJTkVUXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXHRzZWxlY3QgTkVUX0NSQzMyQ1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXG5uZXQvc2NoZWQvS2NvbmZpZy04MjAtXHR0cmlzdGF0ZSBcJiMzNDtNUExTIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODIxOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODIyLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgzMD1jb25maWcgTkVUX0FDVF9WTEFOXG5uZXQvc2NoZWQvS2NvbmZpZy04MzEtXHR0cmlzdGF0ZSBcJiMzNDtWbGFuIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODMyOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODMzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg0MT1jb25maWcgTkVUX0FDVF9CUEZcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cdHRyaXN0YXRlIFwmIzM0O0JQRiBiYXNlZCBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg0MzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcbm5ldC9zY2hlZC9LY29uZmlnLTg1NC1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4NTU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ni1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg2NT1jb25maWcgTkVUX0FDVF9DVElORk9cbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgQWN0aW9uc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODY3Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvc2NoZWQvS2NvbmZpZy04NjgtXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04ODI9Y29uZmlnIE5FVF9BQ1RfU0tCTU9EXG5uZXQvc2NoZWQvS2NvbmZpZy04ODMtXHR0cmlzdGF0ZSBcJiMzNDtza2IgZGF0YSBtb2RpZmljYXRpb24gYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4ODQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04ODUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODkzPWNvbmZpZyBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctODk0LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXItRkUgYWN0aW9uIGJhc2VkIG9uIElFVEYgRm9yQ0VTIEludGVyRkUgTEZCXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4OTU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04OTYtXHRzZWxlY3QgTkVUX0lGRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXG5uZXQvc2NoZWQvS2NvbmZpZy05MDctXHR0cmlzdGF0ZSBcJiMzNDtJUCB0dW5uZWwgbWV0YWRhdGEgbWFuaXB1bGF0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MDg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05MDktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTE3PWNvbmZpZyBORVRfQUNUX0NUXG5uZXQvc2NoZWQvS2NvbmZpZy05MTgtXHR0cmlzdGF0ZSBcJiMzNDtjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTE5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiAoIU5GX05BVCB8fCBORl9OQVQpIFx1MDAyNlx1MDAyNiBORl9GTE9XX1RBQkxFXG5uZXQvc2NoZWQvS2NvbmZpZy05MjAtXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkzMD1jb25maWcgTkVUX0FDVF9HQVRFXG5uZXQvc2NoZWQvS2NvbmZpZy05MzEtXHR0cmlzdGF0ZSBcJiMzNDtGcmFtZSBnYXRlIGVudHJ5IGxpc3QgY29udHJvbCB0YyBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkzMjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTkzMy1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05NTQ9Y29uZmlnIE5FVF9UQ19TS0JfRVhUXG5uZXQvc2NoZWQvS2NvbmZpZy05NTUtXHRib29sIFwmIzM0O1RDIHJlY2lyY3VsYXRpb24gc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTU2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTU3LVx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNDQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipEZWNpZGluZyBvbiB0aGUgQ29yZSBOZXR3b3JrIEFjdGlvbiBDb21wb25lbnRzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgYnVpbGRpbmcgdGhpcyBvdXQsIGFuZCBpdCBsb29rcyBsaWtlIHdlJiMzOTtsbCBhYnNvbHV0ZWx5IG5lZWQgdG8gaGF2ZSBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9QT0xJQ0VgLCBgTkVUX0FDVF9HQUNUYCwgYW5kIHRoZSBnZW5lcmFsaXplZCBhY3Rpb24gcHJvYmFiaWxpdHksIGBHQUNUX1BST0JgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmb3IgY29udHJvbGxpbmcgbmV0d29yayBiZWhhdmlvci4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYE5FVF9DTFNfQUNUYCBkaXJlY3RseSBkZXBlbmRlbnQgb24gYE5FVF9TQ0hFRGA/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCByZWxhdGlvbnNoaXAgYmVmb3JlIG1vdmluZyBmb3J3YXJkOyBpdCYjMzk7cyBhIGNyaXRpY2FsIGRlcGVuZGVuY3kgSSBjYW4mIzM5O3QgYWZmb3JkIHRvIG92ZXJsb29rIGF0IHRoaXMgc3RhZ2UuIEJldHRlciB0byBkb3VibGUtY2hlY2sgbm93IHRoYW4gaGF2ZSB0byB1bndpbmQgYSBidW5jaCBvZiB3b3JrIGxhdGVyLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtlcm5lbCBUcmFmZmljIENvbnRyb2wgQWN0aW9uIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoaXMga2VybmVsIG1vZHVsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucy4gUmlnaHQsIGBORVRfU0NIRURgIGlzIHRoZSByaWdodCBtZW51Y29uZmlnIHNldHRpbmcsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhlIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGB0Y2ZfZ2FjdF9pbml0YCBpbiBgbmV0L3NjaGVkL2FjdF9nYWN0LmNgIGFuZCBgdGNmX3BvbGljZV9pbml0YCBpbiBgbmV0L3NjaGVkL2FjdF9wb2xpY2UuY2AgLSB0aG9zZSBzZWVtIGxpa2UgdGhlIGxpa2VseSBjYW5kaWRhdGVzLgoKTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBpZiB0aG9zZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIHN0YXRpYyBvciBub3QuIFl1cCwgZnJvbSB0aGUgcGF0Y2gsIEkgY2FuIHNlZSB0aGV5IGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gU2luY2UgdGhlc2UgYXJlIGBzdGF0aWNgLCBpdCBtZWFucyB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMgd29uJiMzOTt0IGJlIHN1aXRhYmxlIGZvciBteSBgRm9jdXNTeW1ib2xzYCBhbmFseXNpcy4gV2UgbmVlZCBub24tc3RhdGljIGVudHJ5IHBvaW50cy4KCk9rYXksIGxldCYjMzk7cyBiYWNrIHVwIGEgc3RlcC4gSSByZWNhbGwgdGhlc2UgYWN0aW9uIGluaXQgZnVuY3Rpb25zIGFyZSB1c3VhbGx5IGNhbGxlZCB0aHJvdWdoIGB0Y2ZfYWN0aW9uX2luaXRfMWAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AuIFRob3NlIGVudHJ5IHBvaW50cyBhcmUgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNmX2dhY3RfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfZ2FjdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfZ2FjdC5jPTI2PXN0YXRpYyBpbnQgZ2FjdF9uZXRfcmFuZChzdHJ1Y3QgdGNmX2dhY3QgKmdhY3QpXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yNy17XG5uZXQvc2NoZWQvYWN0X2dhY3QuYzoyODpcdHNtcF9ybWIoKTsgLyogY291cGxlZCB3aXRoIHNtcF93bWIoKSBpbiB0Y2ZfZ2FjdF9pbml0KCkgKi9cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTI5LVx0aWYgKGdldF9yYW5kb21fdTMyX2JlbG93KGdhY3QtXHUwMDNldGNmZ19wdmFsKSlcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYz0zND1zdGF0aWMgaW50IGdhY3RfZGV0ZXJtKHN0cnVjdCB0Y2ZfZ2FjdCAqZ2FjdClcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0zNy1cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjM4Olx0c21wX3JtYigpOyAvKiBjb3VwbGVkIHdpdGggc21wX3dtYigpIGluIHRjZl9nYWN0X2luaXQoKSAqL1xubmV0L3NjaGVkL2FjdF9nYWN0LmMtMzktXHRpZiAocGFjayAlIGdhY3QtXHUwMDNldGNmZ19wdmFsKVxuLS1cbm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYWN0X3BvbGljeVtUQ0FfR0FDVF9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9nYWN0LmMtNTItXG5uZXQvc2NoZWQvYWN0X2dhY3QuYzo1MzpzdGF0aWMgaW50IHRjZl9nYWN0X2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy01NC1cdFx0XHQgc3RydWN0IG5sYXR0ciAqZXN0LCBzdHJ1Y3QgdGNfYWN0aW9uICoqYSxcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYz0yOTI9c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9nYWN0X29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yOTgtXHQuZHVtcFx0XHQ9XHR0Y2ZfZ2FjdF9kdW1wLFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6Mjk5Olx0LmluaXRcdFx0PVx0dGNmX2dhY3RfaW5pdCxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTMwMC1cdC5nZXRfZmlsbF9zaXplXHQ9XHR0Y2ZfZ2FjdF9nZXRfZmlsbF9zaXplLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mzc0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqTXkgVW5kZXJzdGFuZGluZyBvZiBUcmFmZmljIENvbnRyb2wgQWN0aW9uIEluaXRpYWxpemF0aW9uKioKClJpZ2h0LCBzbyBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSB3aG9sZSBwcm9jZXNzIG9mIHNldHRpbmcgdXAgdGhlc2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbnMgaXMgcHJldHR5IGZ1bmRhbWVudGFsLiBUaGUga2VybmVsIHRyYWNrcyB0aGVtIHVzaW5nIHRoZSBgdGNfYWN0aW9uX29wc2AgZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBkZWZpbml0aW9uIG9mIGVhY2ggc3BlY2lmaWMgYWN0aW9uIGlzIGtlcHQuIFRoZSBjb3JlIGVudHJ5IHBvaW50cywgdGhlIHN0YXJ0aW5nIGd1biBmb3IgYWN0aW9uIGluaXRpYWxpemF0aW9uLCBhcmUgYHRjZl9hY3Rpb25faW5pdF8xYCBvciBgdGNmX2FjdGlvbl9pbml0YCB3aXRoaW4gYG5ldC9zY2hlZC9hY3RfYXBpLmNgLiBTbywgd2hlbiBJIG5lZWQgdG8gbG9vayBhdCBob3cgYWN0aW9ucyBhcmUgYWRkZWQsIGNvbmZpZ3VyZWQsIG9yIGhhbmRsZWQsIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcg4oCTIGBhY3RfYXBpLmNgIGFuZCBzcGVjaWZpY2FsbHkgdGhvc2UgaW5pdCBmdW5jdGlvbnMuIEl0IHRlbGxzIG1lIHdoZXJlIHRoZSB3aG9sZSBiYWxsIG9mIHdheCBnZXRzIHJvbGxpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9hY3Rpb25faW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9hcGkuYz0xMDE3PWludCB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKHN0cnVjdCB0Y19hY3Rpb25fb3BzICphY3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI2LVx0LyogV2UgaGF2ZSB0byByZWdpc3RlciBwZXJuZXQgb3BzIGJlZm9yZSBtYWtpbmcgdGhlIGFjdGlvbiBvcHMgdmlzaWJsZSxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTAyNzpcdCAqIG90aGVyd2lzZSB0Y2ZfYWN0aW9uX2luaXRfMSgpIGNvdWxkIGdldCBhIHBhcnRpYWxseSBpbml0aWFsaXplZFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI4LVx0ICogbmV0bnMuXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xMzM0PXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk2LVxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMzk3OnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTgtXHRcdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xNDU5PXN0YXRpYyBib29sIHRjX2FjdF9iaW5kKHUzMiBmbGFncylcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjUtXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE0NjY6aW50IHRjZl9hY3Rpb25faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgbmxhdHRyICpubGEsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjctXHRcdCAgICBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKmFjdGlvbnNbXSxcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE1MDctXHRmb3IgKGkgPSAxOyBpIFx1MDAzYz0gVENBX0FDVF9NQVhfUFJJTyBcdTAwMjZcdTAwMjYgdGJbaV07IGkmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE1MDg6XHRcdGFjdCA9IHRjZl9hY3Rpb25faW5pdF8xKG5ldCwgdHAsIHRiW2ldLCBlc3QsIG9wc1tpIC0gMV0sXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE1MDktXHRcdFx0XHRcdFx1MDAyNmluaXRfcmVzW2kgLSAxXSwgZmxhZ3MsIGV4dGFjayk7XG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0yMDk2PXN0YXRpYyBpbnQgdGNmX2FjdGlvbl9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0yMTA1LVx0Zm9yIChsb29wID0gMDsgbG9vcCBcdTAwM2MgMTA7IGxvb3AmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvYWN0X2FwaS5jOjIxMDY6XHRcdHJldCA9IHRjZl9hY3Rpb25faW5pdChuZXQsIE5VTEwsIG5sYSwgTlVMTCwgYWN0aW9ucywgaW5pdF9yZXMsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIxMDctXHRcdFx0XHQgICAgICBcdTAwMjZhdHRyX3NpemUsIGZsYWdzLCAwLCBleHRhY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjk2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFuYWx5emluZyBFbnRyeSBQb2ludHMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24gb24gdGhlc2UgZW50cnkgcG9pbnRzLiBTcGVjaWZpY2FsbHksIGB0Y2ZfYWN0aW9uX2luaXRfMWAgYW5kIGB0Y2ZfYWN0aW9uX2luaXRgLi4uIHRoZXNlIGFyZSB0aGUgb25lcyAqbm90KiBkZWNsYXJlZCBhcyBzdGF0aWMsIHNvIHRoZXkmIzM5O3JlIGxpa2VseSB0aGUgcHVibGljIGludGVyZmFjZXMgdG8gdGhlIGZ1bmN0aW9uYWxpdHkuIEJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlaXIgZXhwb3J0IHN0YXR1cy4gQXJlIHRoZXkgYWN0dWFsbHkgKmV4cG9ydGVkKiBzeW1ib2xzIGF2YWlsYWJsZSBmb3IgZXh0ZXJuYWwgbGlua2luZywgb3IgYXJlIHRoZXkgaW50ZXJuYWwgdG8gYSBwYXJ0aWN1bGFyIG1vZHVsZT8gVGhpcyB3aWxsIGRldGVybWluZSBob3cgYWNjZXNzaWJsZSB0aGV5IGFyZSBmb3IgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfYWN0aW9uX2luaXRfMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9hcGkuYz0xMDE3PWludCB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKHN0cnVjdCB0Y19hY3Rpb25fb3BzICphY3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI2LVx0LyogV2UgaGF2ZSB0byByZWdpc3RlciBwZXJuZXQgb3BzIGJlZm9yZSBtYWtpbmcgdGhlIGFjdGlvbiBvcHMgdmlzaWJsZSxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTAyNzpcdCAqIG90aGVyd2lzZSB0Y2ZfYWN0aW9uX2luaXRfMSgpIGNvdWxkIGdldCBhIHBhcnRpYWxseSBpbml0aWFsaXplZFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI4LVx0ICogbmV0bnMuXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xMzM0PXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk2LVxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMzk3OnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTgtXHRcdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xNDY2PWludCB0Y2ZfYWN0aW9uX2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgc3RydWN0IG5sYXR0ciAqbmxhLFxuLS1cbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwNy1cdGZvciAoaSA9IDE7IGkgXHUwMDNjPSBUQ0FfQUNUX01BWF9QUklPIFx1MDAyNlx1MDAyNiB0YltpXTsgaSYjNDM7JiM0MzspIHtcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTUwODpcdFx0YWN0ID0gdGNmX2FjdGlvbl9pbml0XzEobmV0LCB0cCwgdGJbaV0sIGVzdCwgb3BzW2kgLSAxXSxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwOS1cdFx0XHRcdFx0XHUwMDI2aW5pdF9yZXNbaSAtIDFdLCBmbGFncywgZXh0YWNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgdGNmX2FjdGlvbl9pbml0YCoqCgpPa2F5LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdGhhdCBgdGNmX2FjdGlvbl9pbml0XzFgIGlzbiYjMzk7dCBhIHN0YXRpYyB2YXJpYWJsZS4gVGhpcyBpbXBsaWVzIHRoYXQgaXRzIHZhbHVlIGNhbiBjaGFuZ2Ugb3ZlciB0aW1lLCBhbmQgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGZpeGVkIGF0IGNvbXBpbGUgdGltZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IHJhaXNlcyBhIGZldyBpbW1lZGlhdGUgcXVlc3Rpb25zIGFib3V0IHRoZSBzY29wZSBhbmQgbGlmZWN5Y2xlIG9mIHRoYXQgdmFyaWFibGUuCgpNeSBuZXh0IG1vdmUgaXMgdG8gemVybyBpbiBvbiBgdGNmX2FjdGlvbl9pbml0YCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLCBhbmQgd2hhdCBpdHMgcmVsYXRpb25zaGlwIGlzIHRvIGB0Y2ZfYWN0aW9uX2luaXRfMWAuIElzIGB0Y2ZfYWN0aW9uX2luaXRgIHBvdGVudGlhbGx5IGEgZnVuY3Rpb24gdGhhdCBwb3B1bGF0ZXMgb3IgbW9kaWZpZXMgYHRjZl9hY3Rpb25faW5pdF8xYD8gSXMgdGhlcmUgc29tZSBraW5kIG9mIGluaXRpYWxpemF0aW9uIG9yIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgdHdvPyBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgY29kZSB3aGVyZSBgdGNmX2FjdGlvbl9pbml0YCBpcyBkZWZpbmVkIGFuZCB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYXJvdW5kIGB0Y2ZfYWN0aW9uX2luaXRgIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciwgYW5kIGltcGxpY2F0aW9ucywgb2YgYHRjZl9hY3Rpb25faW5pdF8xYC4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlZCB2YXJpYWJsZXMvZnVuY3Rpb25zIGFyZSBpbnRlcmFjdGluZywgYW5kIHdoYXQgdGhhdCBtaWdodCBiZSBhYmxlIHRvIHRlbGwgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9hY3Rpb25faW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9hcGkuYz0xMDE3PWludCB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKHN0cnVjdCB0Y19hY3Rpb25fb3BzICphY3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI2LVx0LyogV2UgaGF2ZSB0byByZWdpc3RlciBwZXJuZXQgb3BzIGJlZm9yZSBtYWtpbmcgdGhlIGFjdGlvbiBvcHMgdmlzaWJsZSxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTAyNzpcdCAqIG90aGVyd2lzZSB0Y2ZfYWN0aW9uX2luaXRfMSgpIGNvdWxkIGdldCBhIHBhcnRpYWxseSBpbml0aWFsaXplZFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI4LVx0ICogbmV0bnMuXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xMzM0PXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk2LVxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMzk3OnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTgtXHRcdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0xNDU5PXN0YXRpYyBib29sIHRjX2FjdF9iaW5kKHUzMiBmbGFncylcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjUtXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE0NjY6aW50IHRjZl9hY3Rpb25faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgbmxhdHRyICpubGEsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjctXHRcdCAgICBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKmFjdGlvbnNbXSxcbi0tXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE1MDctXHRmb3IgKGkgPSAxOyBpIFx1MDAzYz0gVENBX0FDVF9NQVhfUFJJTyBcdTAwMjZcdTAwMjYgdGJbaV07IGkmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE1MDg6XHRcdGFjdCA9IHRjZl9hY3Rpb25faW5pdF8xKG5ldCwgdHAsIHRiW2ldLCBlc3QsIG9wc1tpIC0gMV0sXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE1MDktXHRcdFx0XHRcdFx1MDAyNmluaXRfcmVzW2kgLSAxXSwgZmxhZ3MsIGV4dGFjayk7XG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYz0yMDk2PXN0YXRpYyBpbnQgdGNmX2FjdGlvbl9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4tLVxubmV0L3NjaGVkL2FjdF9hcGkuYy0yMTA1LVx0Zm9yIChsb29wID0gMDsgbG9vcCBcdTAwM2MgMTA7IGxvb3AmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvYWN0X2FwaS5jOjIxMDY6XHRcdHJldCA9IHRjZl9hY3Rpb25faW5pdChuZXQsIE5VTEwsIG5sYSwgTlVMTCwgYWN0aW9ucywgaW5pdF9yZXMsXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIxMDctXHRcdFx0XHQgICAgICBcdTAwMjZhdHRyX3NpemUsIGZsYWdzLCAwLCBleHRhY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk1MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgVENGIEFjdGlvbiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBgdGNmX2FjdGlvbl9pbml0YCBpcyB0aGUgb25lIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLCBhbmQgSSByZWNhbGwgaXQmIzM5O3MgZGVjbGFyZWQgaW4gYGluY2x1ZGUvbmV0L2FjdF9hcGkuaGAuIFJpZ2h0LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGF0IGhlYWRlciBmaWxlIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHRjZl9hY3Rpb25faW5pdGAgaXRzZWxmLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBiYXNlIGludGVyZmFjZSBmb3IgdGhlc2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBoYW5kbGVycy4gTmVlZCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBhY3QgQVBJIHN0cnVjdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfYWN0aW9uX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9hY3RfYXBpLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvYWN0X2FwaS5oPTIxND1pbnQgdGNmX2FjdGlvbl9leGVjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKiphY3Rpb25zLFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oLTIxNS1cdFx0ICAgIGludCBucl9hY3Rpb25zLCBzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKTtcbmluY2x1ZGUvbmV0L2FjdF9hcGkuaDoyMTY6aW50IHRjZl9hY3Rpb25faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgbmxhdHRyICpubGEsXG5pbmNsdWRlL25ldC9hY3RfYXBpLmgtMjE3LVx0XHQgICAgc3RydWN0IG5sYXR0ciAqZXN0LFxuLS1cbmluY2x1ZGUvbmV0L2FjdF9hcGkuaD0yMjA9c3RydWN0IHRjX2FjdGlvbl9vcHMgKnRjX2FjdGlvbl9sb2FkX29wcyhzdHJ1Y3QgbmxhdHRyICpubGEsIHUzMiBmbGFncyxcbmluY2x1ZGUvbmV0L2FjdF9hcGkuaC0yMjEtXHRcdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuaW5jbHVkZS9uZXQvYWN0X2FwaS5oOjIyMjpzdHJ1Y3QgdGNfYWN0aW9uICp0Y2ZfYWN0aW9uX2luaXRfMShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oLTIyMy1cdFx0XHRcdCAgICBzdHJ1Y3QgbmxhdHRyICpubGEsIHN0cnVjdCBubGF0dHIgKmVzdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTE6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbWluZyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaGVyZS4gSXQgc2VlbXMgbGlrZSBib3RoIGB0Y2ZfYWN0aW9uX2luaXRfMWAgYW5kIGB0Y2ZfYWN0aW9uX2luaXRgIGxvb2sgbGlrZSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgbXkgRm9jdXNTeW1ib2xzLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRob3NlLgoKTm93LCBiZWZvcmUgSSBjb21taXQsIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGltcG9ydGFudCBzZXR0aW5ncyBpbiB0aGUgYnJvYWRlciBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIHNob3VsZCBjaGVjazogYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC4KCkFoLCByaWdodCwgbm93IEkgcmVtZW1iZXIuIGBORVRfQUNUX1BPTElDRWAgYW5kIGBORVRfQUNUX0dBQ1RgIGFyZSBhY3R1YWxseSAqcmVxdWlyZWQqIGZvciB0aGUgZnVuY3Rpb25hbGl0eSBJJiMzOTttIHRhcmdldGluZy4gSSBjYW4mIzM5O3Qgb3Zlcmxvb2sgdGhvc2UuIE9rYXksIHNvIG5vdyB3aGF0IGFib3V0IGBORVRfU0NIRURgPyBUaGF0JiMzOTtzIHRoZSBtZW51Y29uZmlnIG9wdGlvbiwgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgY29uZmlybSB0aGF0LgoKWWVzLCBgTkVUX1NDSEVEYCBpcyBpbmRlZWQgdGhlIHByaW1hcnkgbWVudWNvbmZpZyBJIG5lZWQuIFBlcmZlY3QuIFNvLCBteSBsaXN0IG5vdyBsb29rcyBsaWtlOiBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC4gR290IGl0LgoKV2FpdCBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgYE5FVF9TQ0hFRGAgaXMgcmVhbGx5IG5lZWRlZC4gVXN1YWxseSwgd2hlbiB5b3UgZW5hYmxlIGBORVRfQ0xTX0FDVGAsIGBORVRfU0NIRURgIGZvbGxvd3MgYXMgYSByZXF1aXJlbWVudC4gVG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTtsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBiZSBwcmVjaXNlIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcywgYWZ0ZXIgYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjEzNQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQWN0aW9uIEluaXRpYWxpemF0aW9uIGluIHRoZSBOZXR3b3JraW5nIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgbmV0d29ya2luZyBjb2RlLiBGaXJzdCB0aGluZywgSSBuZWVkIHRvIGNvbmZpcm0gYE5FVF9TQ0hFRGAgaXMgaW5kZWVkIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZCwgY2hlY2suIE5vdywgbXkgcHJpbWFyeSBmb2N1cyBpcyB1bmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBhY3Rpb25zIHdpdGhpbiB0aGlzIGZyYW1ld29yay4gTGV0JiMzOTtzIHNlZSBpZiBgdGNmX2FjdGlvbl9pbml0XzFgIGlzIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciB0aGlzLiBZZXMsIHRoYXQgbG9va3MgbGlrZSBpdDsgaXQmIzM5O3MgdGhlIHJpZ2h0IGZ1bmN0aW9uLCBhcyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGEgc2luZ2xlIGFjdGlvbiBhbmQgY2FsbHMgdGhlIHJlbGV2YW50IGAuaW5pdGAgY2FsbGJhY2sgb2YgdGhlIGFjdGlvbiBvcGVyYXRpb25zLgoKVGhlIHBhdGNoIG1lbnRpb25zIG1vZGlmaWNhdGlvbnMgdG8gYHRjZl9nYWN0X2luaXRgIGFuZCBgdGNmX3BvbGljZV9pbml0YCwgd2hpY2ggcG9pbnRzIG1lIHRvd2FyZHMgZm9jdXNpbmcgb24gYHRjZl9hY3Rpb25faW5pdF8xYCBhcyBhIGtleSBzeW1ib2wuIEFsc28sIEkgc2hvdWxkbiYjMzk7dCBpZ25vcmUgYHRjZl9hY3Rpb25faW5pdGAsIHNpbmNlIGl0IGRpcmVjdGx5IGNhbGxzIGB0Y2ZfYWN0aW9uX2luaXRfMWAuCgpJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IGxvb2sgYXQgYHRjZl9hY3Rpb25fdmFsaWRgIGluIGBpbmNsdWRlL25ldC9hY3RfYXBpLmhgLiBPaCwgaXQmIzM5O3MgaW5saW5lLCBzbyBpdCB3b24mIzM5O3Qgc2hvdyB1cCBhcyBhIHN5bWJvbC4gTm8gc3VycHJpc2VzIHRoZXJlLgoKSSYjMzk7bSBjaGVja2luZyBmb3Igb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgZnVuY3Rpb25zLiBgdGNmX2dhY3RfaW5pdGAgYW5kIGB0Y2ZfcG9saWNlX2luaXRgIGFyZSBzdGF0aWMsIHNvIHRoZXkmIzM5O3JlIG5vdCBnb2luZyB0byBiZSBnb29kIGNhbmRpZGF0ZXMgdG8gdHJhY2suIGB0Y2ZfYWN0aW9uX2luaXRfMWAgaXMgZGVmaW5pdGVseSB0aGUgcHJpbWUgY2FuZGlkYXRlLgoKTm93LCBsZXQmIzM5O3MgbWFrZSBhIHF1aWNrIG5vdGUgb2YgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX0FDVGAsIGBORVRfQUNUX1BPTElDRWAsIGBORVRfQUNUX0dBQ1RgLCBhbmQgYEdBQ1RfUFJPQmAuCgpGaW5hbGx5LCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIGBORVRfQUNUX1BPTElDRWAgYW5kIGBORVRfQUNUX0dBQ1RgIGJvdGggZGVwZW5kIG9uIGBORVRfQ0xTX0FDVGAuIGBHQUNUX1BST0JgIGZ1cnRoZXIgZGVwZW5kcyBvbiBgTkVUX0FDVF9HQUNUYC4gQW5kIEkmIzM5O20gcHJldHR5IHN1cmUgYE5FVF9DTFNfQUNUYCBpcyBjb25kaXRpb25hbCB1bmRlciBgTkVUX1NDSEVEYC4gTGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGF0IGxhc3Qgb25lLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRfU0NIRURcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00My1cbm5ldC9zY2hlZC9LY29uZmlnOjQ0OmlmIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDExOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDYwCgkJCQkJCQlvdXRwdXQ6IDEzOQoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTmV0d29yayBDb25maWd1cmF0aW9uIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBjb2RlLCBhbmQgaXQmIzM5O3MgY2xlYXIgdGhhdCBgTkVUX0NMU19BQ1RgIGlzIG5lc3RlZCB1bmRlciBgTkVUX1NDSEVEYC4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcGluZyB0aGluZ3Mgb3JnYW5pemVkLiBTbywgYXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgcmVsZXZhbnQgY29uZmlncyBhcmUgYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX0FDVGAsIGBORVRfQUNUX1BPTElDRWAsIGBORVRfQUNUX0dBQ1RgLCBhbmQgYEdBQ1RfUFJPQmAuIFN0YW5kYXJkIHN0dWZmLCBzZXR0aW5nIHVwIHRyYWZmaWMgY29udHJvbCBhbmQgYWxsIHRoYXQuCgpOb3csIG15IGZvY3VzIHN5bWJvbHMgaGVyZSBhcmUgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uczogYHRjZl9hY3Rpb25faW5pdF8xYCBhbmQgYHRjZl9hY3Rpb25faW5pdGAuIFNlZW1zIGxpa2UgdGhhdCYjMzk7cyB0aGUga2V5IGVudHJ5IHBvaW50IHRvIHdoZXJlIHRoaW5ncyBhcmUgaGFwcGVuaW5nLgoKUmlnaHQsIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIHZhbGlkYXRpb24gaXNzdWVzIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGUgbWFqb3IgY2hhbmdlIGlzIGZ1bmN0aW9uYWwgLSB0aGlzIGlzIGFib3V0IHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gZ2V0dGluZyBob2xkIG9mIGludGVybmFsIGtlcm5lbCB2ZXJkaWN0cywgd2hpY2ggaXMgZ29vZC4gV2UgZGVmaW5pdGVseSBkb24mIzM5O3Qgd2FudCB0aGF0IGtpbmQgb2Ygc2VjdXJpdHkgaXNzdWUgY3JlZXBpbmcgaW4uIFRoaXMgaXMgYSBzb2xpZCBwaWVjZSBvZiB3b3JrLgoKVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgYmVpbmcgcmVhY2hlZCB0aHJvdWdoIHRoZSB0YyBhY3Rpb24gaW5pdGlhbGl6YXRpb24gcGF0aC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3BvdCB0byBjaGVjayBmb3IgdGhpcyBraW5kIG9mIHRoaW5nLiBMZXQmIzM5O3MgY2FsbCB0aGlzIGBzZXQtcmVzdWx0c2AuIAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUE9MSUNFJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfR0FDVCYjMzQ7LAogICAgJiMzNDtHQUNUX1BST0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfYWN0aW9uX2luaXRfMSYjMzQ7LAogICAgJiMzNDt0Y2ZfYWN0aW9uX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkVUX0FDVF9QT0xJQ0UmIzM0OywKICAgICYjMzQ7TkVUX0FDVF9HQUNUJiMzNDssCiAgICAmIzM0O0dBQ1RfUFJPQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9hY3Rpb25faW5pdF8xJiMzNDssCiAgICAmIzM0O3RjZl9hY3Rpb25faW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9ucyBpbiB0aGUgZ2VuZXJpYyBhY3Rpb24gKGdhY3QpIGFuZCBwb2xpY2UgYWN0aW9uIG1vZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHVzZXIgc3BhY2UgZnJvbSBzdG9yaW5nIGtlcm5lbC1pbnRlcm5hbCB2ZXJkaWN0cy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgdGMgYWN0aW9uIGluaXRpYWxpemF0aW9uIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo0MC45NzkwMjAyMDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTg3MzkxNTcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX1BPTElDRVwiLFxuICAgIFwiTkVUX0FDVF9HQUNUXCIsXG4gICAgXCJHQUNUX1BST0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYWN0aW9uX2luaXRfMVwiLFxuICAgIFwidGNmX2FjdGlvbl9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo0MC45NzkwMjUwOTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTk0NzgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJlMGQ2NTg3ZDgyZGU2NzBhMjBiYmRiZDkzNTAwMGJhZmJkYmE4MTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAxMTowMDozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hY3RfYXBpLmggYi9pbmNsdWRlL25ldC9hY3RfYXBpLmhcXG5pbmRleCAyMGQ5ZTU1Zjg1NjRkLi5mZDAzZjYzMTllODgwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxcbkBAIC0yNzAsNiArMjcwLDI1IEBAIGludCB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QoaW50IGFjdGlvbiwgc3RydWN0IHRjZl9wcm90byAqdHAsXFxuIHN0cnVjdCB0Y2ZfY2hhaW4gKnRjZl9hY3Rpb25fc2V0X2N0cmxhY3Qoc3RydWN0IHRjX2FjdGlvbiAqYSwgaW50IGFjdGlvbixcXG4gXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCB0Y2ZfY2hhaW4gKm5ld2NoYWluKTtcXG4gXFxuKy8qIFJhbmdlIGNoZWNrIGZvciBhIGNvbnRyb2wgYWN0aW9uIHN1cHBsaWVkIGJ5IHVzZXIgc3BhY2UuXFxuKyAqXFxuKyAqIFRoaXMgaXMgdGhlIHNhbWUgdGVzdCB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QoKSBhcHBsaWVzIHRvIHRoZSBwcmltYXJ5XFxuKyAqIGNvbnRyb2wgYWN0aW9uLCBmYWN0b3JlZCBvdXQgZm9yIHRoZSAqZmFsbGJhY2sqIGNvbnRyb2wgYWN0aW9uc1xcbisgKiAoYWN0X2dhY3QncyBUQ0FfR0FDVF9QUk9CLnBhY3Rpb24gYW5kIGFjdF9wb2xpY2UncyBUQ0FfUE9MSUNFX1JFU1VMVCksXFxuKyAqIHdoaWNoIG11c3Qgbm90IHJlYWNoIHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdCgpIGJlY2F1c2UgdGhleSBoYXZlIG5vXFxuKyAqIGdvdG9fY2hhaW4gdG8gYWxsb2NhdGUuICBXaXRob3V0IGl0LCB1c2VyIHNwYWNlIGNhbiBzdG9yZSBrZXJuZWwtaW50ZXJuYWxcXG4rICogdmVyZGljdHMgc3VjaCBhcyBUQ19BQ1RfQ09OU1VNRUQsIHdoaWNoIGlzIFRDX0FDVF9WQUxVRV9NQVggKyAxIGFuZCBpc1xcbisgKiBkZWxpYmVyYXRlbHkgbm90IHBhcnQgb2YgdGhlIFVBUEkgdmFsdWUgcmFuZ2UuXFxuKyAqL1xcbitzdGF0aWMgaW5saW5lIGJvb2wgdGNmX2FjdGlvbl92YWxpZChpbnQgYWN0aW9uKVxcbit7XFxuK1xcdGludCBvcGNvZGUgPSBUQ19BQ1RfRVhUX09QQ09ERShhY3Rpb24pO1xcbitcXG4rXFx0aWYgKCFvcGNvZGUpXFxuK1xcdFxcdHJldHVybiBhY3Rpb24gXFx1MDAzYz0gVENfQUNUX1ZBTFVFX01BWDtcXG4rXFx0cmV0dXJuIG9wY29kZSBcXHUwMDNjPSBUQ19BQ1RfRVhUX09QQ09ERV9NQVggfHwgYWN0aW9uID09IFRDX0FDVF9VTlNQRUM7XFxuK31cXG4rXFxuICNpZmRlZiBDT05GSUdfSU5FVFxcbiBERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UodGNmX2ZyYWdfeG1pdF9jb3VudCk7XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dhY3QuYyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jXFxuaW5kZXggZTk0OTI4MGViODAwZC4uNTY1ODYwY2NjYmE2ZCAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvYWN0X2dhY3QuY1xcbisrKyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jXFxuQEAgLTg5LDYgKzg5LDExIEBAIHN0YXRpYyBpbnQgdGNmX2dhY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4gXFx0XFx0cF9wYXJtID0gbmxhX2RhdGEodGJbVENBX0dBQ1RfUFJPQl0pO1xcbiBcXHRcXHRpZiAocF9wYXJtLVxcdTAwM2VwdHlwZSBcXHUwMDNlPSBNQVhfUkFORClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdGlmICghdGNmX2FjdGlvbl92YWxpZChwX3Bhcm0tXFx1MDAzZXBhY3Rpb24pKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIFxcXCJpbnZhbGlkIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9uXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChUQ19BQ1RfRVhUX0NNUChwX3Bhcm0tXFx1MDAzZXBhY3Rpb24sIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuIFxcdFxcdFxcdFxcdCAgICAgICBcXFwiZ290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFja1xcXCIpO1xcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3BvbGljZS5jIGIvbmV0L3NjaGVkL2FjdF9wb2xpY2UuY1xcbmluZGV4IGIxNjQ2OGE5OGM1NWUuLmNlMDhmNjg0MGVmN2MgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9wb2xpY2UuY1xcbisrKyBiL25ldC9zY2hlZC9hY3RfcG9saWNlLmNcXG5AQCAtMTI4LDYgKzEyOCwxMiBAQCBzdGF0aWMgaW50IHRjZl9wb2xpY2VfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4gXFxuIFxcdGlmICh0YltUQ0FfUE9MSUNFX1JFU1VMVF0pIHtcXG4gXFx0XFx0dGNmcF9yZXN1bHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfUE9MSUNFX1JFU1VMVF0pO1xcbitcXHRcXHRpZiAoIXRjZl9hY3Rpb25fdmFsaWQodGNmcF9yZXN1bHQpKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIFxcXCJpbnZhbGlkIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9uXFxcIik7XFxuK1xcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGdvdG8gZmFpbHVyZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAoVENfQUNUX0VYVF9DTVAodGNmcF9yZXN1bHQsIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuIFxcdFxcdFxcdFxcdCAgICAgICBcXFwiZ290byBjaGFpbiBub3QgYWxsb3dlZCBvbiBmYWxsYmFja1xcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo0MS41MTU5NTQ2MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NTMzNjk3MTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX1BPTElDRVwiLFxuICAgIFwiTkVUX0FDVF9HQUNUXCIsXG4gICAgXCJHQUNUX1BST0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYWN0aW9uX2luaXRfMVwiLFxuICAgIFwidGNmX2FjdGlvbl9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZTBkNjU4N2Q4MmRlNjcwYTIwYmJkYmQ5MzUwMDBiYWZiZGJhODEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxMTowMDozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaCBiL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxuaW5kZXggMjBkOWU1NWY4NTY0ZC4uZmQwM2Y2MzE5ZTg4MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FjdF9hcGkuaFxuKysrIGIvaW5jbHVkZS9uZXQvYWN0X2FwaS5oXG5AQCAtMjcwLDYgKzI3MCwyNSBAQCBpbnQgdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KGludCBhY3Rpb24sIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLFxuIHN0cnVjdCB0Y2ZfY2hhaW4gKnRjZl9hY3Rpb25fc2V0X2N0cmxhY3Qoc3RydWN0IHRjX2FjdGlvbiAqYSwgaW50IGFjdGlvbixcbiBcdFx0XHRcdFx0IHN0cnVjdCB0Y2ZfY2hhaW4gKm5ld2NoYWluKTtcbiBcbisvKiBSYW5nZSBjaGVjayBmb3IgYSBjb250cm9sIGFjdGlvbiBzdXBwbGllZCBieSB1c2VyIHNwYWNlLlxuKyAqXG4rICogVGhpcyBpcyB0aGUgc2FtZSB0ZXN0IHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdCgpIGFwcGxpZXMgdG8gdGhlIHByaW1hcnlcbisgKiBjb250cm9sIGFjdGlvbiwgZmFjdG9yZWQgb3V0IGZvciB0aGUgKmZhbGxiYWNrKiBjb250cm9sIGFjdGlvbnNcbisgKiAoYWN0X2dhY3QncyBUQ0FfR0FDVF9QUk9CLnBhY3Rpb24gYW5kIGFjdF9wb2xpY2UncyBUQ0FfUE9MSUNFX1JFU1VMVCksXG4rICogd2hpY2ggbXVzdCBub3QgcmVhY2ggdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KCkgYmVjYXVzZSB0aGV5IGhhdmUgbm9cbisgKiBnb3RvX2NoYWluIHRvIGFsbG9jYXRlLiAgV2l0aG91dCBpdCwgdXNlciBzcGFjZSBjYW4gc3RvcmUga2VybmVsLWludGVybmFsXG4rICogdmVyZGljdHMgc3VjaCBhcyBUQ19BQ1RfQ09OU1VNRUQsIHdoaWNoIGlzIFRDX0FDVF9WQUxVRV9NQVggKyAxIGFuZCBpc1xuKyAqIGRlbGliZXJhdGVseSBub3QgcGFydCBvZiB0aGUgVUFQSSB2YWx1ZSByYW5nZS5cbisgKi9cbitzdGF0aWMgaW5saW5lIGJvb2wgdGNmX2FjdGlvbl92YWxpZChpbnQgYWN0aW9uKVxuK3tcbitcdGludCBvcGNvZGUgPSBUQ19BQ1RfRVhUX09QQ09ERShhY3Rpb24pO1xuK1xuK1x0aWYgKCFvcGNvZGUpXG4rXHRcdHJldHVybiBhY3Rpb24gXHUwMDNjPSBUQ19BQ1RfVkFMVUVfTUFYO1xuK1x0cmV0dXJuIG9wY29kZSBcdTAwM2M9IFRDX0FDVF9FWFRfT1BDT0RFX01BWCB8fCBhY3Rpb24gPT0gVENfQUNUX1VOU1BFQztcbit9XG4rXG4gI2lmZGVmIENPTkZJR19JTkVUXG4gREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKHRjZl9mcmFnX3htaXRfY291bnQpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfZ2FjdC5jIGIvbmV0L3NjaGVkL2FjdF9nYWN0LmNcbmluZGV4IGU5NDkyODBlYjgwMGQuLjU2NTg2MGNjY2JhNmQgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X2dhY3QuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9nYWN0LmNcbkBAIC04OSw2ICs4OSwxMSBAQCBzdGF0aWMgaW50IHRjZl9nYWN0X2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdHBfcGFybSA9IG5sYV9kYXRhKHRiW1RDQV9HQUNUX1BST0JdKTtcbiBcdFx0aWYgKHBfcGFybS1cdTAwM2VwdHlwZSBcdTAwM2U9IE1BWF9SQU5EKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRpZiAoIXRjZl9hY3Rpb25fdmFsaWQocF9wYXJtLVx1MDAzZXBhY3Rpb24pKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuK1x0XHRcdFx0ICAgICAgIFwiaW52YWxpZCBmYWxsYmFjayBjb250cm9sIGFjdGlvblwiKTtcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuIFx0XHRpZiAoVENfQUNUX0VYVF9DTVAocF9wYXJtLVx1MDAzZXBhY3Rpb24sIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiBcdFx0XHRcdCAgICAgICBcImdvdG8gY2hhaW4gbm90IGFsbG93ZWQgb24gZmFsbGJhY2tcIik7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wb2xpY2UuYyBiL25ldC9zY2hlZC9hY3RfcG9saWNlLmNcbmluZGV4IGIxNjQ2OGE5OGM1NWUuLmNlMDhmNjg0MGVmN2MgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BvbGljZS5jXG4rKysgYi9uZXQvc2NoZWQvYWN0X3BvbGljZS5jXG5AQCAtMTI4LDYgKzEyOCwxMiBAQCBzdGF0aWMgaW50IHRjZl9wb2xpY2VfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcbiBcbiBcdGlmICh0YltUQ0FfUE9MSUNFX1JFU1VMVF0pIHtcbiBcdFx0dGNmcF9yZXN1bHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfUE9MSUNFX1JFU1VMVF0pO1xuK1x0XHRpZiAoIXRjZl9hY3Rpb25fdmFsaWQodGNmcF9yZXN1bHQpKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuK1x0XHRcdFx0ICAgICAgIFwiaW52YWxpZCBmYWxsYmFjayBjb250cm9sIGFjdGlvblwiKTtcbitcdFx0XHRlcnIgPSAtRUlOVkFMO1xuK1x0XHRcdGdvdG8gZmFpbHVyZTtcbitcdFx0fVxuIFx0XHRpZiAoVENfQUNUX0VYVF9DTVAodGNmcF9yZXN1bHQsIFRDX0FDVF9HT1RPX0NIQUlOKSkge1xuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiBcdFx0XHRcdCAgICAgICBcImdvdG8gY2hhaW4gbm90IGFsbG93ZWQgb24gZmFsbGJhY2tcIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo0MS41MTU5NTcxNzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjM2MzIwOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzIGFuZCBDb25maWd1cmF0aW9uIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgYSBnb29kLCBzZW5zaWJsZSBoYXJkZW5pbmcgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGFkZGluZyBhIHJhbmdlIGNoZWNrIGZvciB1c2VyLXN1cHBsaWVkIGNvbnRyb2wgYWN0aW9ucyB3aXRoaW4gdGhlIGBuZXQvc2NoZWRgIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGBhY3RfZ2FjdC5jYCBhbmQgYGFjdF9wb2xpY2UuY2AuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGB0Y2ZfYWN0aW9uX3ZhbGlkYCBmdW5jdGlvbiBpbiBgaW5jbHVkZS9uZXQvYWN0X2FwaS5oYCBhbmQgaXRzIHVzYWdlIHdpdGhpbiBgdGNmX2dhY3RfaW5pdGAgYW5kIGB0Y2ZfcG9saWNlX2luaXRgIGlzIGEgY2xlYW4gd2F5IHRvIGltcGxlbWVudCB0aGlzIHZhbGlkYXRpb24uIFByZXZlbnRpbmcgaW52YWxpZCBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW1wcm92ZXMgdGhlIG92ZXJhbGwgcm9idXN0bmVzcyBvZiB0aGUgdHJhZmZpYyBjb250cm9sIGZ1bmN0aW9uYWxpdHkuIEl0J3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBpbXByb3Zpbmcgc2VjdXJpdHkgYW5kIHN0YWJpbGl0eS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYG5ldC9zY2hlZC9hY3RfZ2FjdC5jYCBjb3JyZXNwb25kcyB0byBgTkVUX0FDVF9HQUNUYCwgYW5kIGBuZXQvc2NoZWQvYWN0X3BvbGljZS5jYCBjb3JyZXNwb25kcyB0byBgTkVUX0FDVF9QT0xJQ0VgLiBOb3csIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBtaWdodCBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODY3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDA6NDYuMTUyMjgwNTk1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NjQzNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9BQ1RfR0FDVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz03MTU9Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MjUtXFxubmV0L3NjaGVkL0tjb25maWc6NzI2OmNvbmZpZyBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgYWN0aW9uc1xcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTczNj1jb25maWcgR0FDVF9QUk9CXFxubmV0L3NjaGVkL0tjb25maWctNzM3LVxcdGJvb2wgXFxcIlByb2JhYmlsaXR5IHN1cHBvcnRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzM4OlxcdGRlcGVuZHMgb24gTkVUX0FDVF9HQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzM5LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDA6NDYuMjE2OTI5ODYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzOTIwODE0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgR0FDVF9QUk9CIGFuZCBUQ0FfR0FDVF9QUk9CIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGF0IGBHQUNUX1BST0JgIGlzIGEgcmVxdWlyZWQgaW5wdXQgZm9yIGBUQ0FfR0FDVF9QUk9CYCB3aXRoaW4gYGFjdF9nYWN0LmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQsIGJ1dCBpdCdzIGFsd2F5cyB3aXNlIHRvIGJlIHRob3JvdWdoIHdpdGggdGhlc2UgdGhpbmdzLCBlc3BlY2lhbGx5IGluIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHNlY3Rpb25zIG9mIHRoZSBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MganVzdCBjb25maXJtIGhvdyBgR0FDVF9QUk9CYCBpcyBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiB0aGF0IG1vZHVsZS4gVGhlcmUgY291bGQgYmUgc3VidGxlIGRlcGVuZGVuY2llcyBvciBlZGdlIGNhc2VzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIG9yIHBlcmhhcHMgYW4gb3Bwb3J0dW5pdHkgZm9yIG9wdGltaXphdGlvbiBJIGhhdmVuJ3Qgc3BvdHRlZCB5ZXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgYWN0X2dhY3QuY2AgZmlsZSBhbmQgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhhdCBwaWVjZSBvZiB0aGUgcHV6emxlLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZydzIGxpbmVkIHVwIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAwOjU2LjYwOTAxNDE1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzY0ODAyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJUQ0FfR0FDVF9QUk9CXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2FjdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBnYWN0X3BvbGljeVtUQ0FfR0FDVF9NQVggKyAxXSA9IHtcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy00OS1cXHRbVENBX0dBQ1RfUEFSTVNdXFx0PSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IHRjX2dhY3QpIH0sXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6NTA6XFx0W1RDQV9HQUNUX1BST0JdXFx0XFx0PSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IHRjX2dhY3RfcCkgfSxcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy01MS19O1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9NTM9c3RhdGljIGludCB0Y2ZfZ2FjdF9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtODQtI2lmbmRlZiBDT05GSUdfR0FDVF9QUk9CXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6ODU6XFx0aWYgKHRiW1RDQV9HQUNUX1BST0JdICE9IE5VTEwpXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtODYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTg3LSNlbHNlXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6ODg6XFx0aWYgKHRiW1RDQV9HQUNUX1BST0JdKSB7XFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6ODk6XFx0XFx0cF9wYXJtID0gbmxhX2RhdGEodGJbVENBX0dBQ1RfUFJPQl0pO1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTkwLVxcdFxcdGlmIChwX3Bhcm0tXFx1MDAzZXB0eXBlIFxcdTAwM2U9IE1BWF9SQU5EKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9MTkwPXN0YXRpYyBpbnQgdGNmX2dhY3RfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMjEzLVxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjIxNDpcXHRcXHRpZiAobmxhX3B1dChza2IsIFRDQV9HQUNUX1BST0IsIHNpemVvZihwX29wdCksIFxcdTAwMjZwX29wdCkpXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMjE1LVxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9MjMxPXN0YXRpYyBzaXplX3QgdGNmX2dhY3RfZ2V0X2ZpbGxfc2l6ZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphY3QpXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yMzYtXFx0aWYgKHRvX2dhY3QoYWN0KS1cXHUwMDNldGNmZ19wdHlwZSlcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYzoyMzc6XFx0XFx0LyogVENBX0dBQ1RfUFJPQiAqL1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTIzOC1cXHRcXHRzeiArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHRjX2dhY3RfcCkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMDo1Ni42NzI2NjcxMzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg3MzQwMDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktjb25maWcgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBNZW50YWwgQXVkaXQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgbW9kdWxlIGRlcGVuZGVuY2llcywgYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvZGUgY2hhbmdlcyBpbiBgYWN0X2dhY3QuY2AgYXJlIGd1YXJkZWQgYmVoaW5kIHRoZSBgQ09ORklHX0dBQ1RfUFJPQmAgKmFuZCogYENPTkZJR19ORVRfQUNUX0dBQ1RgIG9wdGlvbnMuIE1ha2VzIHNlbnNlLCB0aGF0J3MgdGhlIHByb2JhYmlsaXN0aWMgZ2FjdCBmdW5jdGlvbmFsaXR5LiBBbmQsIGFzIGV4cGVjdGVkLCBgYWN0X3BvbGljZS5jYCBuZWVkcyBgQ09ORklHX05FVF9BQ1RfUE9MSUNFYC4gTm8gc3VycHJpc2VzIHRoZXJlLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0IGZvciB0aG9zZSBtb2R1bGVzLiBUaW1lIHRvIGRpZyBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHZlcmlmeSB0aGUgYE5FVF9BQ1RfUE9MSUNFYCBkZWZpbml0aW9uLiBKdXN0IG1ha2luZyBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgZGVwZW5kZW5jeSB0cmVlIGJlZm9yZSBJIG1ha2UgYW55IG1vZGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTowMS4xNjAwMDk0ODJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk5OTgxNjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQUNUX1BPTElDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz03MDI9Y29uZmlnIE5FVF9DTFNfQUNUXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MTQtXFxubmV0L3NjaGVkL0tjb25maWc6NzE1OmNvbmZpZyBORVRfQUNUX1BPTElDRVxcbm5ldC9zY2hlZC9LY29uZmlnLTcxNi1cXHR0cmlzdGF0ZSBcXFwiVHJhZmZpYyBQb2xpY2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MDEuNDU5OTk1ODczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzODA2ODc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoZSByZWxldmFudCBmaWVsZDpcblxuKipBc3Nlc3NpbmcgRGVwZW5kZW5jaWVzKipcblxuSG1tLCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgc29tZXRoaW5nIGFuZCBJJ3ZlIGNvbWUgYWNyb3NzIHRoaXMgYE5FVF9DTFNfQUNUYCB0ZXJtLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYWxtb3N0IGNlcnRhaW4gdGhhdCB3aGF0ZXZlciB0aGUgc3lzdGVtIG9yIHByb2Nlc3MgSSdtIHdvcmtpbmcgd2l0aCBpcywgdGhpcyBgTkVUX0NMU19BQ1RgIGNvbXBvbmVudCBvciBhY3RpdmF0aW9uIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZS4gVGhlIHdheSBpdCdzIHBocmFzZWQgaW1wbGllcyBhIHBvdGVudGlhbCBkZXBlbmRlbmNlIG9uIGl0IGJlaW5nIHByZXNlbnQgb3IgYWN0aXZlLiBUaGF0IGJlaW5nIHRoZSBjYXNlLCBJJ2Qgc2F5IHRoYXQgSSdsbCBwcm9iYWJseSBuZWVkIGBORVRfQ0xTX0FDVGAgZm9yICpib3RoKiBvZiB0aGUgZnVuY3Rpb25zIG9yIG1vZHVsZXMgdGhhdCBJJ20gY29uc2lkZXJpbmcuIFRoZXJlIGlzbid0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBuYXJyb3cgZG93biB3aGljaCBmdW5jdGlvbiwgc28gSSdtIGluZmVycmluZyBhIHVuaXZlcnNhbCBkZXBlbmRlbmN5LiBJIGNhbiBhbHdheXMgY2hlY2sgb24gdGhpcyBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjA1LjQ5ODA2ODAxMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA5MTAxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9DTFNfQUNUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTcwMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDI6Y29uZmlnIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzAzLVxcdGJvb2wgXFxcIkFjdGlvbnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjA1LjU2ODk4NTg3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODc2NDQzNDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIERlcGVuZGVuY2llczogTkVUX0FDVF9QT0xJQ0UgYW5kIE5FVF9BQ1RfR0FDVCoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuIExldCdzIHN0YXJ0IHdpdGggYSBjcnVjaWFsIHByZWxpbWluYXJ5IHN0ZXA6IEkgbmVlZCB0byBhc2NlcnRhaW4gdGhlIGRpcmVjdCBkZXBlbmRlbmNpZXMgb2YgYE5FVF9BQ1RfUE9MSUNFYCBhbmQgYE5FVF9BQ1RfR0FDVGAuIEtub3dpbmcgd2hhdCB0aGVzZSBmdW5jdGlvbmFsaXRpZXMgcmVseSBvbiBpcyBhYnNvbHV0ZWx5IGZ1bmRhbWVudGFsIGZvciBhbnkgbW9kaWZpY2F0aW9uLCBkZWJ1Z2dpbmcsIG9yIGV2ZW4ganVzdCBhIGdlbmVyYWwgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gSXQncyB0b28gcmlza3kgdG8gcHJvY2VlZCB3aXRob3V0IHRoYXQgc29saWQgZm91bmRhdGlvbi4gSeKAmW0gdGhpbmtpbmcsIHRoaXMgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiwgb25jZSBzZWN1cmVkLCB3aWxsIGd1aWRlIG15IG5leHQgc3RlcHMgLSBhdm9pZGluZyBhIHBvdGVudGlhbGx5IG1lc3N5IHNpdHVhdGlvbiB3aXRoIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTE1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MDkuNDQ1NDMyMTkyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM1NzczMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qTkVUX0NMU19BQ1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkluZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6MzQ5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNTAtXFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0VcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgUG9saWNpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzE3OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzI2PWNvbmZpZyBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgYWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXFxubmV0L3NjaGVkL0tjb25maWctNzQzLVxcdHRyaXN0YXRlIFxcXCJSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc0NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTMtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgU2FtcGxpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzU0OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTUtXFx0c2VsZWN0IFBTQU1QTEVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc2ND1jb25maWcgTkVUX0FDVF9OQVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzY2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXFxubmV0L3NjaGVkL0tjb25maWctNzc1LVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgRWRpdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NzY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4NC1cXHR0cmlzdGF0ZSBcXFwiU2ltcGxlIEV4YW1wbGUgKERlYnVnKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4Ni1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03OTc9Y29uZmlnIE5FVF9BQ1RfU0tCRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cXHR0cmlzdGF0ZSBcXFwiU0tCIEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzk5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXFx0dHJpc3RhdGUgXFxcIkNoZWNrc3VtIFVwZGF0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgxMDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXFxubmV0L3NjaGVkL0tjb25maWctODIwLVxcdHRyaXN0YXRlIFxcXCJNUExTIG1hbmlwdWxhdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MjE6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxcbm5ldC9zY2hlZC9LY29uZmlnLTgzMS1cXHR0cmlzdGF0ZSBcXFwiVmxhbiBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODMyOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODQxPWNvbmZpZyBORVRfQUNUX0JQRlxcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cXHR0cmlzdGF0ZSBcXFwiQlBGIGJhc2VkIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg1NTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ni1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnLTg2OC1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODgyPWNvbmZpZyBORVRfQUNUX1NLQk1PRFxcbm5ldC9zY2hlZC9LY29uZmlnLTg4My1cXHR0cmlzdGF0ZSBcXFwic2tiIGRhdGEgbW9kaWZpY2F0aW9uIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4ODQ6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg4NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04OTM9Y29uZmlnIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctODk0LVxcdHRyaXN0YXRlIFxcXCJJbnRlci1GRSBhY3Rpb24gYmFzZWQgb24gSUVURiBGb3JDRVMgSW50ZXJGRSBMRkJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODk1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04OTYtXFx0c2VsZWN0IE5FVF9JRkVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXFxubmV0L3NjaGVkL0tjb25maWctOTA3LVxcdHRyaXN0YXRlIFxcXCJJUCB0dW5uZWwgbWV0YWRhdGEgbWFuaXB1bGF0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkwODpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkxNz1jb25maWcgTkVUX0FDVF9DVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkxOC1cXHR0cmlzdGF0ZSBcXFwiY29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTE5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2ICghTkZfTkFUIHx8IE5GX05BVCkgXFx1MDAyNlxcdTAwMjYgTkZfRkxPV19UQUJMRVxcbm5ldC9zY2hlZC9LY29uZmlnLTkyMC1cXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTMwPWNvbmZpZyBORVRfQUNUX0dBVEVcXG5uZXQvc2NoZWQvS2NvbmZpZy05MzEtXFx0dHJpc3RhdGUgXFxcIkZyYW1lIGdhdGUgZW50cnkgbGlzdCBjb250cm9sIHRjIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MzI6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkzMy1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NTQ9Y29uZmlnIE5FVF9UQ19TS0JfRVhUXFxubmV0L3NjaGVkL0tjb25maWctOTU1LVxcdGJvb2wgXFxcIlRDIHJlY2lyY3VsYXRpb24gc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NTY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1Ny1cXHRzZWxlY3QgU0tCX0VYVEVOU0lPTlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MDkuNTQ5MDE0OTI5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMDA5MTg2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkRlY2lkaW5nIG9uIHRoZSBDb3JlIE5ldHdvcmsgQWN0aW9uIENvbXBvbmVudHMqKlxuXG5SaWdodCwgc28gd2UncmUgYnVpbGRpbmcgdGhpcyBvdXQsIGFuZCBpdCBsb29rcyBsaWtlIHdlJ2xsIGFic29sdXRlbHkgbmVlZCB0byBoYXZlIGBORVRfQ0xTX0FDVGAsIGBORVRfQUNUX1BPTElDRWAsIGBORVRfQUNUX0dBQ1RgLCBhbmQgdGhlIGdlbmVyYWxpemVkIGFjdGlvbiBwcm9iYWJpbGl0eSwgYEdBQ1RfUFJPQmAuIFRob3NlIHNlZW0gbGlrZSB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGZvciBjb250cm9sbGluZyBuZXR3b3JrIGJlaGF2aW9yLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyBgTkVUX0NMU19BQ1RgIGRpcmVjdGx5IGRlcGVuZGVudCBvbiBgTkVUX1NDSEVEYD8gSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IHJlbGF0aW9uc2hpcCBiZWZvcmUgbW92aW5nIGZvcndhcmQ7IGl0J3MgYSBjcml0aWNhbCBkZXBlbmRlbmN5IEkgY2FuJ3QgYWZmb3JkIHRvIG92ZXJsb29rIGF0IHRoaXMgc3RhZ2UuIEJldHRlciB0byBkb3VibGUtY2hlY2sgbm93IHRoYW4gaGF2ZSB0byB1bndpbmQgYSBidW5jaCBvZiB3b3JrIGxhdGVyLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA0NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjEzLjU0OTkzNTY2OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NTU2MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjEzLjc2NzQ5OTQ3MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTEzNzAyMTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhpcyBrZXJuZWwgbW9kdWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRyYWZmaWMgY29udHJvbCBhY3Rpb25zLiBSaWdodCwgYE5FVF9TQ0hFRGAgaXMgdGhlIHJpZ2h0IG1lbnVjb25maWcgc2V0dGluZywgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC5cblxuTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhlIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJJ20gZm9jdXNpbmcgb24gYHRjZl9nYWN0X2luaXRgIGluIGBuZXQvc2NoZWQvYWN0X2dhY3QuY2AgYW5kIGB0Y2ZfcG9saWNlX2luaXRgIGluIGBuZXQvc2NoZWQvYWN0X3BvbGljZS5jYCAtIHRob3NlIHNlZW0gbGlrZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgaWYgdGhvc2UgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm90LiBZdXAsIGZyb20gdGhlIHBhdGNoLCBJIGNhbiBzZWUgdGhleSBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFNpbmNlIHRoZXNlIGFyZSBgc3RhdGljYCwgaXQgbWVhbnMgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIHdvbid0IGJlIHN1aXRhYmxlIGZvciBteSBgRm9jdXNTeW1ib2xzYCBhbmFseXNpcy4gV2UgbmVlZCBub24tc3RhdGljIGVudHJ5IHBvaW50cy5cblxuT2theSwgbGV0J3MgYmFjayB1cCBhIHN0ZXAuIEkgcmVjYWxsIHRoZXNlIGFjdGlvbiBpbml0IGZ1bmN0aW9ucyBhcmUgdXN1YWxseSBjYWxsZWQgdGhyb3VnaCBgdGNmX2FjdGlvbl9pbml0XzFgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiB3aXRoaW4gYG5ldC9zY2hlZC9hY3RfYXBpLmNgLiBUaG9zZSBlbnRyeSBwb2ludHMgYXJlIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MTguODgxMjA1OTQ4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzA2NzY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfZ2FjdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2FjdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTI2PXN0YXRpYyBpbnQgZ2FjdF9uZXRfcmFuZChzdHJ1Y3QgdGNmX2dhY3QgKmdhY3QpXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMjcte1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jOjI4OlxcdHNtcF9ybWIoKTsgLyogY291cGxlZCB3aXRoIHNtcF93bWIoKSBpbiB0Y2ZfZ2FjdF9pbml0KCkgKi9cXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yOS1cXHRpZiAoZ2V0X3JhbmRvbV91MzJfYmVsb3coZ2FjdC1cXHUwMDNldGNmZ19wdmFsKSlcXG4tLVxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jPTM0PXN0YXRpYyBpbnQgZ2FjdF9kZXRlcm0oc3RydWN0IHRjZl9nYWN0ICpnYWN0KVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtMzctXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6Mzg6XFx0c21wX3JtYigpOyAvKiBjb3VwbGVkIHdpdGggc21wX3dtYigpIGluIHRjZl9nYWN0X2luaXQoKSAqL1xcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTM5LVxcdGlmIChwYWNrICUgZ2FjdC1cXHUwMDNldGNmZ19wdmFsKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGdhY3RfcG9saWN5W1RDQV9HQUNUX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmMtNTItXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM6NTM6c3RhdGljIGludCB0Y2ZfZ2FjdF9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbm5ldC9zY2hlZC9hY3RfZ2FjdC5jLTU0LVxcdFxcdFxcdCBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKiphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9nYWN0LmM9MjkyPXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfZ2FjdF9vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0yOTgtXFx0LmR1bXBcXHRcXHQ9XFx0dGNmX2dhY3RfZHVtcCxcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYzoyOTk6XFx0LmluaXRcXHRcXHQ9XFx0dGNmX2dhY3RfaW5pdCxcXG5uZXQvc2NoZWQvYWN0X2dhY3QuYy0zMDAtXFx0LmdldF9maWxsX3NpemVcXHQ9XFx0dGNmX2dhY3RfZ2V0X2ZpbGxfc2l6ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MTguOTY4Mjc3NTk1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjI1NjM2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKk15IFVuZGVyc3RhbmRpbmcgb2YgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSB3aG9sZSBwcm9jZXNzIG9mIHNldHRpbmcgdXAgdGhlc2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbnMgaXMgcHJldHR5IGZ1bmRhbWVudGFsLiBUaGUga2VybmVsIHRyYWNrcyB0aGVtIHVzaW5nIHRoZSBgdGNfYWN0aW9uX29wc2AgZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGF0J3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gb2YgZWFjaCBzcGVjaWZpYyBhY3Rpb24gaXMga2VwdC4gVGhlIGNvcmUgZW50cnkgcG9pbnRzLCB0aGUgc3RhcnRpbmcgZ3VuIGZvciBhY3Rpb24gaW5pdGlhbGl6YXRpb24sIGFyZSBgdGNmX2FjdGlvbl9pbml0XzFgIG9yIGB0Y2ZfYWN0aW9uX2luaXRgIHdpdGhpbiBgbmV0L3NjaGVkL2FjdF9hcGkuY2AuIFNvLCB3aGVuIEkgbmVlZCB0byBsb29rIGF0IGhvdyBhY3Rpb25zIGFyZSBhZGRlZCwgY29uZmlndXJlZCwgb3IgaGFuZGxlZCwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIOKAkyBgYWN0X2FwaS5jYCBhbmQgc3BlY2lmaWNhbGx5IHRob3NlIGluaXQgZnVuY3Rpb25zLiBJdCB0ZWxscyBtZSB3aGVyZSB0aGUgd2hvbGUgYmFsbCBvZiB3YXggZ2V0cyByb2xsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Mzc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MjIuNjMwODQ0Mjg0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzE0NDY4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfYWN0aW9uX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2FjdF9hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvYWN0X2FwaS5jPTEwMTc9aW50IHRjZl9yZWdpc3Rlcl9hY3Rpb24oc3RydWN0IHRjX2FjdGlvbl9vcHMgKmFjdCxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTAyNi1cXHQvKiBXZSBoYXZlIHRvIHJlZ2lzdGVyIHBlcm5ldCBvcHMgYmVmb3JlIG1ha2luZyB0aGUgYWN0aW9uIG9wcyB2aXNpYmxlLFxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTAyNzpcXHQgKiBvdGhlcndpc2UgdGNmX2FjdGlvbl9pbml0XzEoKSBjb3VsZCBnZXQgYSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWRcXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEwMjgtXFx0ICogbmV0bnMuXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jPTEzMzQ9c3RydWN0IHRjX2FjdGlvbl9vcHMgKnRjX2FjdGlvbl9sb2FkX29wcyhzdHJ1Y3QgbmxhdHRyICpubGEsIHUzMiBmbGFncyxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTM5Ni1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjEzOTc6c3RydWN0IHRjX2FjdGlvbiAqdGNmX2FjdGlvbl9pbml0XzEoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCxcXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IG5sYXR0ciAqZXN0LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYz0xNDU5PXN0YXRpYyBib29sIHRjX2FjdF9iaW5kKHUzMiBmbGFncylcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTQ2NS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjE0NjY6aW50IHRjZl9hY3Rpb25faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgbmxhdHRyICpubGEsXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xNDY3LVxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKmFjdGlvbnNbXSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwNy1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2M9IFRDQV9BQ1RfTUFYX1BSSU8gXFx1MDAyNlxcdTAwMjYgdGJbaV07IGkrKykge1xcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTUwODpcXHRcXHRhY3QgPSB0Y2ZfYWN0aW9uX2luaXRfMShuZXQsIHRwLCB0YltpXSwgZXN0LCBvcHNbaSAtIDFdLFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwOS1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2aW5pdF9yZXNbaSAtIDFdLCBmbGFncywgZXh0YWNrKTtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM9MjA5Nj1zdGF0aWMgaW50IHRjZl9hY3Rpb25fYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0yMTA1LVxcdGZvciAobG9vcCA9IDA7IGxvb3AgXFx1MDAzYyAxMDsgbG9vcCsrKSB7XFxubmV0L3NjaGVkL2FjdF9hcGkuYzoyMTA2OlxcdFxcdHJldCA9IHRjZl9hY3Rpb25faW5pdChuZXQsIE5VTEwsIG5sYSwgTlVMTCwgYWN0aW9ucywgaW5pdF9yZXMsXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0yMTA3LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhdHRyX3NpemUsIGZsYWdzLCAwLCBleHRhY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMToyMi42ODc5OTU3NzNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMTQyODM2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkFuYWx5emluZyBFbnRyeSBQb2ludHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIG9uIHRoZXNlIGVudHJ5IHBvaW50cy4gU3BlY2lmaWNhbGx5LCBgdGNmX2FjdGlvbl9pbml0XzFgIGFuZCBgdGNmX2FjdGlvbl9pbml0YC4uLiB0aGVzZSBhcmUgdGhlIG9uZXMgKm5vdCogZGVjbGFyZWQgYXMgc3RhdGljLCBzbyB0aGV5J3JlIGxpa2VseSB0aGUgcHVibGljIGludGVyZmFjZXMgdG8gdGhlIGZ1bmN0aW9uYWxpdHkuIEJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlaXIgZXhwb3J0IHN0YXR1cy4gQXJlIHRoZXkgYWN0dWFsbHkgKmV4cG9ydGVkKiBzeW1ib2xzIGF2YWlsYWJsZSBmb3IgZXh0ZXJuYWwgbGlua2luZywgb3IgYXJlIHRoZXkgaW50ZXJuYWwgdG8gYSBwYXJ0aWN1bGFyIG1vZHVsZT8gVGhpcyB3aWxsIGRldGVybWluZSBob3cgYWNjZXNzaWJsZSB0aGV5IGFyZSBmb3IgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBMZXQncyBzZWUgd2hhdCB0aGUgc3ltYm9sIHRhYmxlIHRlbGxzIHVzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyOTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTozNC4wMDIyODI4NTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjY4NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9hY3Rpb25faW5pdF8xXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2FjdF9hcGkuYz0xMDE3PWludCB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKHN0cnVjdCB0Y19hY3Rpb25fb3BzICphY3QsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEwMjYtXFx0LyogV2UgaGF2ZSB0byByZWdpc3RlciBwZXJuZXQgb3BzIGJlZm9yZSBtYWtpbmcgdGhlIGFjdGlvbiBvcHMgdmlzaWJsZSxcXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjEwMjc6XFx0ICogb3RoZXJ3aXNlIHRjZl9hY3Rpb25faW5pdF8xKCkgY291bGQgZ2V0IGEgcGFydGlhbGx5IGluaXRpYWxpemVkXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI4LVxcdCAqIG5ldG5zLlxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYz0xMzM0PXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTEzOTYtXFxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMzk3OnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk4LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICpubGEsIHN0cnVjdCBubGF0dHIgKmVzdCxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM9MTQ2Nj1pbnQgdGNmX2FjdGlvbl9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwNy1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2M9IFRDQV9BQ1RfTUFYX1BSSU8gXFx1MDAyNlxcdTAwMjYgdGJbaV07IGkrKykge1xcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTUwODpcXHRcXHRhY3QgPSB0Y2ZfYWN0aW9uX2luaXRfMShuZXQsIHRwLCB0YltpXSwgZXN0LCBvcHNbaSAtIDFdLFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTUwOS1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2aW5pdF9yZXNbaSAtIDFdLCBmbGFncywgZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6MzQuMDczNTU2OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM4NzY3MDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYHRjZl9hY3Rpb25faW5pdGAqKlxuXG5Pa2F5LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdGhhdCBgdGNmX2FjdGlvbl9pbml0XzFgIGlzbid0IGEgc3RhdGljIHZhcmlhYmxlLiBUaGlzIGltcGxpZXMgdGhhdCBpdHMgdmFsdWUgY2FuIGNoYW5nZSBvdmVyIHRpbWUsIGFuZCBpc24ndCBzb21ldGhpbmcgdGhhdCdzIGZpeGVkIGF0IGNvbXBpbGUgdGltZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IHJhaXNlcyBhIGZldyBpbW1lZGlhdGUgcXVlc3Rpb25zIGFib3V0IHRoZSBzY29wZSBhbmQgbGlmZWN5Y2xlIG9mIHRoYXQgdmFyaWFibGUuXG5cbk15IG5leHQgbW92ZSBpcyB0byB6ZXJvIGluIG9uIGB0Y2ZfYWN0aW9uX2luaXRgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgYmVpbmcgdXNlZCwgYW5kIHdoYXQgaXRzIHJlbGF0aW9uc2hpcCBpcyB0byBgdGNmX2FjdGlvbl9pbml0XzFgLiBJcyBgdGNmX2FjdGlvbl9pbml0YCBwb3RlbnRpYWxseSBhIGZ1bmN0aW9uIHRoYXQgcG9wdWxhdGVzIG9yIG1vZGlmaWVzIGB0Y2ZfYWN0aW9uX2luaXRfMWA/IElzIHRoZXJlIHNvbWUga2luZCBvZiBpbml0aWFsaXphdGlvbiBvciBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIHR3bz8gSSdtIHRoaW5raW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgY29kZSB3aGVyZSBgdGNmX2FjdGlvbl9pbml0YCBpcyBkZWZpbmVkIGFuZCB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYXJvdW5kIGB0Y2ZfYWN0aW9uX2luaXRgIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciwgYW5kIGltcGxpY2F0aW9ucywgb2YgYHRjZl9hY3Rpb25faW5pdF8xYC4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlZCB2YXJpYWJsZXMvZnVuY3Rpb25zIGFyZSBpbnRlcmFjdGluZywgYW5kIHdoYXQgdGhhdCBtaWdodCBiZSBhYmxlIHRvIHRlbGwgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTozNy44MTIzMjY4MjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzQ5ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9hY3Rpb25faW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvYWN0X2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9hY3RfYXBpLmM9MTAxNz1pbnQgdGNmX3JlZ2lzdGVyX2FjdGlvbihzdHJ1Y3QgdGNfYWN0aW9uX29wcyAqYWN0LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMDI2LVxcdC8qIFdlIGhhdmUgdG8gcmVnaXN0ZXIgcGVybmV0IG9wcyBiZWZvcmUgbWFraW5nIHRoZSBhY3Rpb24gb3BzIHZpc2libGUsXFxubmV0L3NjaGVkL2FjdF9hcGkuYzoxMDI3OlxcdCAqIG90aGVyd2lzZSB0Y2ZfYWN0aW9uX2luaXRfMSgpIGNvdWxkIGdldCBhIHBhcnRpYWxseSBpbml0aWFsaXplZFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTAyOC1cXHQgKiBuZXRucy5cXG4tLVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM9MTMzND1zdHJ1Y3QgdGNfYWN0aW9uX29wcyAqdGNfYWN0aW9uX2xvYWRfb3BzKHN0cnVjdCBubGF0dHIgKm5sYSwgdTMyIGZsYWdzLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xMzk2LVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTM5NzpzdHJ1Y3QgdGNfYWN0aW9uICp0Y2ZfYWN0aW9uX2luaXRfMShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLFxcbm5ldC9zY2hlZC9hY3RfYXBpLmMtMTM5OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jPTE0NTk9c3RhdGljIGJvb2wgdGNfYWN0X2JpbmQodTMyIGZsYWdzKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xNDY1LVxcbm5ldC9zY2hlZC9hY3RfYXBpLmM6MTQ2NjppbnQgdGNmX2FjdGlvbl9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTE0NjctXFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKmVzdCwgc3RydWN0IHRjX2FjdGlvbiAqYWN0aW9uc1tdLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xNTA3LVxcdGZvciAoaSA9IDE7IGkgXFx1MDAzYz0gVENBX0FDVF9NQVhfUFJJTyBcXHUwMDI2XFx1MDAyNiB0YltpXTsgaSsrKSB7XFxubmV0L3NjaGVkL2FjdF9hcGkuYzoxNTA4OlxcdFxcdGFjdCA9IHRjZl9hY3Rpb25faW5pdF8xKG5ldCwgdHAsIHRiW2ldLCBlc3QsIG9wc1tpIC0gMV0sXFxubmV0L3NjaGVkL2FjdF9hcGkuYy0xNTA5LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpbml0X3Jlc1tpIC0gMV0sIGZsYWdzLCBleHRhY2spO1xcbi0tXFxubmV0L3NjaGVkL2FjdF9hcGkuYz0yMDk2PXN0YXRpYyBpbnQgdGNmX2FjdGlvbl9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIxMDUtXFx0Zm9yIChsb29wID0gMDsgbG9vcCBcXHUwMDNjIDEwOyBsb29wKyspIHtcXG5uZXQvc2NoZWQvYWN0X2FwaS5jOjIxMDY6XFx0XFx0cmV0ID0gdGNmX2FjdGlvbl9pbml0KG5ldCwgTlVMTCwgbmxhLCBOVUxMLCBhY3Rpb25zLCBpbml0X3JlcyxcXG5uZXQvc2NoZWQvYWN0X2FwaS5jLTIxMDctXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmF0dHJfc2l6ZSwgZmxhZ3MsIDAsIGV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjM3Ljg2OTA4MDcyNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg1MDMxNTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgVENGIEFjdGlvbiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGB0Y2ZfYWN0aW9uX2luaXRgIGlzIHRoZSBvbmUgd2UncmUgaW50ZXJlc3RlZCBpbiwgYW5kIEkgcmVjYWxsIGl0J3MgZGVjbGFyZWQgaW4gYGluY2x1ZGUvbmV0L2FjdF9hcGkuaGAuIFJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoYXQgaGVhZGVyIGZpbGUgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgdGNmX2FjdGlvbl9pbml0YCBpdHNlbGYuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGJhc2UgaW50ZXJmYWNlIGZvciB0aGVzZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGhhbmRsZXJzLiBOZWVkIHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGFjdCBBUEkgc3RydWN0dXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5NTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTo0MS41NTQxMTQzOTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTcyNTQwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfYWN0aW9uX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvYWN0X2FwaS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2FjdF9hcGkuaD0yMTQ9aW50IHRjZl9hY3Rpb25fZXhlYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICoqYWN0aW9ucyxcXG5pbmNsdWRlL25ldC9hY3RfYXBpLmgtMjE1LVxcdFxcdCAgICBpbnQgbnJfYWN0aW9ucywgc3RydWN0IHRjZl9yZXN1bHQgKnJlcyk7XFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oOjIxNjppbnQgdGNmX2FjdGlvbl9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG5pbmNsdWRlL25ldC9hY3RfYXBpLmgtMjE3LVxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICplc3QsXFxuLS1cXG5pbmNsdWRlL25ldC9hY3RfYXBpLmg9MjIwPXN0cnVjdCB0Y19hY3Rpb25fb3BzICp0Y19hY3Rpb25fbG9hZF9vcHMoc3RydWN0IG5sYXR0ciAqbmxhLCB1MzIgZmxhZ3MsXFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oLTIyMS1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5pbmNsdWRlL25ldC9hY3RfYXBpLmg6MjIyOnN0cnVjdCB0Y19hY3Rpb24gKnRjZl9hY3Rpb25faW5pdF8xKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXFxuaW5jbHVkZS9uZXQvYWN0X2FwaS5oLTIyMy1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgbmxhdHRyICplc3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjQxLjY2NTg0NTk2MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjQwNTExMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gaG9taW5nIGluIG9uIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlLiBJdCBzZWVtcyBsaWtlIGJvdGggYHRjZl9hY3Rpb25faW5pdF8xYCBhbmQgYHRjZl9hY3Rpb25faW5pdGAgbG9vayBsaWtlIGV4Y2VsbGVudCBjYW5kaWRhdGVzIGZvciBteSBGb2N1c1N5bWJvbHMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aG9zZS5cblxuTm93LCBiZWZvcmUgSSBjb21taXQsIGxldCdzIHRha2UgYSBxdWljayBsb29rIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBpbXBvcnRhbnQgc2V0dGluZ3MgaW4gdGhlIGJyb2FkZXIgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIHNob3VsZCBjaGVjazogYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC5cblxuQWgsIHJpZ2h0LCBub3cgSSByZW1lbWJlci4gYE5FVF9BQ1RfUE9MSUNFYCBhbmQgYE5FVF9BQ1RfR0FDVGAgYXJlIGFjdHVhbGx5ICpyZXF1aXJlZCogZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEknbSB0YXJnZXRpbmcuIEkgY2FuJ3Qgb3Zlcmxvb2sgdGhvc2UuIE9rYXksIHNvIG5vdyB3aGF0IGFib3V0IGBORVRfU0NIRURgPyBUaGF0J3MgdGhlIG1lbnVjb25maWcgb3B0aW9uLCBpc24ndCBpdD8gTGV0J3MgY29uZmlybSB0aGF0LlxuXG5ZZXMsIGBORVRfU0NIRURgIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZC4gUGVyZmVjdC4gU28sIG15IGxpc3Qgbm93IGxvb2tzIGxpa2U6IGBORVRfU0NIRURgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9QT0xJQ0VgLCBgTkVUX0FDVF9HQUNUYCwgYW5kIGBHQUNUX1BST0JgLiBHb3QgaXQuXG5cbldhaXQgYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIGBORVRfU0NIRURgIGlzIHJlYWxseSBuZWVkZWQuIFVzdWFsbHksIHdoZW4geW91IGVuYWJsZSBgTkVUX0NMU19BQ1RgLCBgTkVUX1NDSEVEYCBmb2xsb3dzIGFzIGEgcmVxdWlyZW1lbnQuIFRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBiZSBwcmVjaXNlIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcywgYWZ0ZXIgYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ1NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMTowMTo0OS45MDYzNTk4MTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MDY3MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjQ5Ljk3MzQzMDk4MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTE0NTczMzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBBY3Rpb24gSW5pdGlhbGl6YXRpb24gaW4gdGhlIE5ldHdvcmtpbmcgU3Vic3lzdGVtKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbmV0d29ya2luZyBjb2RlLiBGaXJzdCB0aGluZywgSSBuZWVkIHRvIGNvbmZpcm0gYE5FVF9TQ0hFRGAgaXMgaW5kZWVkIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZCwgY2hlY2suIE5vdywgbXkgcHJpbWFyeSBmb2N1cyBpcyB1bmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBhY3Rpb25zIHdpdGhpbiB0aGlzIGZyYW1ld29yay4gTGV0J3Mgc2VlIGlmIGB0Y2ZfYWN0aW9uX2luaXRfMWAgaXMgdGhlIGJlc3QgZW50cnkgcG9pbnQgZm9yIHRoaXMuIFllcywgdGhhdCBsb29rcyBsaWtlIGl0OyBpdCdzIHRoZSByaWdodCBmdW5jdGlvbiwgYXMgaXQncyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGEgc2luZ2xlIGFjdGlvbiBhbmQgY2FsbHMgdGhlIHJlbGV2YW50IGAuaW5pdGAgY2FsbGJhY2sgb2YgdGhlIGFjdGlvbiBvcGVyYXRpb25zLlxuXG5UaGUgcGF0Y2ggbWVudGlvbnMgbW9kaWZpY2F0aW9ucyB0byBgdGNmX2dhY3RfaW5pdGAgYW5kIGB0Y2ZfcG9saWNlX2luaXRgLCB3aGljaCBwb2ludHMgbWUgdG93YXJkcyBmb2N1c2luZyBvbiBgdGNmX2FjdGlvbl9pbml0XzFgIGFzIGEga2V5IHN5bWJvbC4gQWxzbywgSSBzaG91bGRuJ3QgaWdub3JlIGB0Y2ZfYWN0aW9uX2luaXRgLCBzaW5jZSBpdCBkaXJlY3RseSBjYWxscyBgdGNmX2FjdGlvbl9pbml0XzFgLlxuXG5JIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IGxvb2sgYXQgYHRjZl9hY3Rpb25fdmFsaWRgIGluIGBpbmNsdWRlL25ldC9hY3RfYXBpLmhgLiBPaCwgaXQncyBpbmxpbmUsIHNvIGl0IHdvbid0IHNob3cgdXAgYXMgYSBzeW1ib2wuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuSSdtIGNoZWNraW5nIGZvciBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmdW5jdGlvbnMuIGB0Y2ZfZ2FjdF9pbml0YCBhbmQgYHRjZl9wb2xpY2VfaW5pdGAgYXJlIHN0YXRpYywgc28gdGhleSdyZSBub3QgZ29pbmcgdG8gYmUgZ29vZCBjYW5kaWRhdGVzIHRvIHRyYWNrLiBgdGNmX2FjdGlvbl9pbml0XzFgIGlzIGRlZmluaXRlbHkgdGhlIHByaW1lIGNhbmRpZGF0ZS5cblxuTm93LCBsZXQncyBtYWtlIGEgcXVpY2sgbm90ZSBvZiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC5cblxuRmluYWxseSwgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBgTkVUX0FDVF9QT0xJQ0VgIGFuZCBgTkVUX0FDVF9HQUNUYCBib3RoIGRlcGVuZCBvbiBgTkVUX0NMU19BQ1RgLiBgR0FDVF9QUk9CYCBmdXJ0aGVyIGRlcGVuZHMgb24gYE5FVF9BQ1RfR0FDVGAuIEFuZCBJJ20gcHJldHR5IHN1cmUgYE5FVF9DTFNfQUNUYCBpcyBjb25kaXRpb25hbCB1bmRlciBgTkVUX1NDSEVEYC4gTGV0J3MganVzdCBjb25maXJtIHRoYXQgbGFzdCBvbmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMzUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTE6MDE6NTcuODg4MDA3MjYzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzA3MTA5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZiBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9Nj1tZW51Y29uZmlnIE5FVF9TQ0hFRFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDMtXFxubmV0L3NjaGVkL0tjb25maWc6NDQ6aWYgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAxOjU3Ljk2MTA4MjY5MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzQwODcwNDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBjb2RlLCBhbmQgaXQncyBjbGVhciB0aGF0IGBORVRfQ0xTX0FDVGAgaXMgbmVzdGVkIHVuZGVyIGBORVRfU0NIRURgLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwaW5nIHRoaW5ncyBvcmdhbml6ZWQuIFNvLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSByZWxldmFudCBjb25maWdzIGFyZSBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfUE9MSUNFYCwgYE5FVF9BQ1RfR0FDVGAsIGFuZCBgR0FDVF9QUk9CYC4gU3RhbmRhcmQgc3R1ZmYsIHNldHRpbmcgdXAgdHJhZmZpYyBjb250cm9sIGFuZCBhbGwgdGhhdC5cblxuTm93LCBteSBmb2N1cyBzeW1ib2xzIGhlcmUgYXJlIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnM6IGB0Y2ZfYWN0aW9uX2luaXRfMWAgYW5kIGB0Y2ZfYWN0aW9uX2luaXRgLiBTZWVtcyBsaWtlIHRoYXQncyB0aGUga2V5IGVudHJ5IHBvaW50IHRvIHdoZXJlIHRoaW5ncyBhcmUgaGFwcGVuaW5nLlxuXG5SaWdodCwgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgdmFsaWRhdGlvbiBpc3N1ZXMgZm9yIGZhbGxiYWNrIGNvbnRyb2wgYWN0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgZ2VuZXJpYyBhY3Rpb24gKGdhY3QpIGFuZCBwb2xpY2UgYWN0aW9uIG1vZHVsZXMuIFRoZSBtYWpvciBjaGFuZ2UgaXMgZnVuY3Rpb25hbCAtIHRoaXMgaXMgYWJvdXQgcHJldmVudGluZyB1c2Vyc3BhY2UgZnJvbSBnZXR0aW5nIGhvbGQgb2YgaW50ZXJuYWwga2VybmVsIHZlcmRpY3RzLCB3aGljaCBpcyBnb29kLiBXZSBkZWZpbml0ZWx5IGRvbid0IHdhbnQgdGhhdCBraW5kIG9mIHNlY3VyaXR5IGlzc3VlIGNyZWVwaW5nIGluLiBUaGlzIGlzIGEgc29saWQgcGllY2Ugb2Ygd29yay5cblxuVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgYmVpbmcgcmVhY2hlZCB0aHJvdWdoIHRoZSB0YyBhY3Rpb24gaW5pdGlhbGl6YXRpb24gcGF0aC4gVGhhdCdzIGEgZ29vZCBzcG90IHRvIGNoZWNrIGZvciB0aGlzIGtpbmQgb2YgdGhpbmcuIExldCdzIGNhbGwgdGhpcyBgc2V0LXJlc3VsdHNgLiBcblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNjAsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDExOjAyOjA2LjcwMTk1NzAxN1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDk2NjAzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkVUX0FDVF9QT0xJQ0VcIixcbiAgICBcIk5FVF9BQ1RfR0FDVFwiLFxuICAgIFwiR0FDVF9QUk9CXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2FjdGlvbl9pbml0XzFcIixcbiAgICBcInRjZl9hY3Rpb25faW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgZmFsbGJhY2sgY29udHJvbCBhY3Rpb25zIGluIHRoZSBnZW5lcmljIGFjdGlvbiAoZ2FjdCkgYW5kIHBvbGljZSBhY3Rpb24gbW9kdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgdXNlciBzcGFjZSBmcm9tIHN0b3Jpbmcga2VybmVsLWludGVybmFsIHZlcmRpY3RzLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSB0YyBhY3Rpb24gaW5pdGlhbGl6YXRpb24gcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX1BPTElDRVwiLFxuICAgIFwiTkVUX0FDVF9HQUNUXCIsXG4gICAgXCJHQUNUX1BST0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYWN0aW9uX2luaXRfMVwiLFxuICAgIFwidGNmX2FjdGlvbl9pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBmYWxsYmFjayBjb250cm9sIGFjdGlvbnMgaW4gdGhlIGdlbmVyaWMgYWN0aW9uIChnYWN0KSBhbmQgcG9saWNlIGFjdGlvbiBtb2R1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyB1c2VyIHNwYWNlIGZyb20gc3RvcmluZyBrZXJuZWwtaW50ZXJuYWwgdmVyZGljdHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHRjIGFjdGlvbiBpbml0aWFsaXphdGlvbiBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowz9n9l[1] Phase: Succeeded StartedAt: 2026-08-06 11:02:19 +0000 UTC FinishedAt: 2026-08-06 11:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 11:02:19 +0000 UTC FinishedAt: 2026-08-06 11:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2] Phase: Succeeded StartedAt: 2026-08-06 11:02:19 +0000 UTC FinishedAt: 2026-08-06 14:47:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:02:19 +0000 UTC FinishedAt: 2026-08-06 14:47:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:02:19 +0000 UTC FinishedAt: 2026-08-06 11:02:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:02:19 +0000 UTC FinishedAt: 2026-08-06 11:02:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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-workflowz9n9l/series-workflowz9n9l-convert-artifact-527512000/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:02:29 +0000 UTC FinishedAt: 2026-08-06 11:20:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:02:29 +0000 UTC FinishedAt: 2026-08-06 11:20:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*65d7aab0-4b20-4ff6-9ca1-8cd370650ba1,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-workflowz9n9l/series-workflowz9n9l-convert-artifact-527512000/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": "2c5c3feb-9883-4f28-b5e6-4ccf26de9c58", "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-workflowz9n9l/series-workflowz9n9l-build-action-3286505862/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:02:29 +0000 UTC FinishedAt: 2026-08-06 11:20:29 +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:*65d7aab0-4b20-4ff6-9ca1-8cd370650ba1,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-workflowz9n9l/series-workflowz9n9l-convert-artifact-527512000/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": "2c5c3feb-9883-4f28-b5e6-4ccf26de9c58", "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-workflowz9n9l/series-workflowz9n9l-build-action-3286505862/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:20:39 +0000 UTC FinishedAt: 2026-08-06 11:20:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:20:39 +0000 UTC FinishedAt: 2026-08-06 11:20:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:20:39 +0000 UTC FinishedAt: 2026-08-06 11:20:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:20:39 +0000 UTC FinishedAt: 2026-08-06 11:20:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-workflowz9n9l/series-workflowz9n9l-convert-artifact-3178510439/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:20:49 +0000 UTC FinishedAt: 2026-08-06 11:22:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:20:49 +0000 UTC FinishedAt: 2026-08-06 11:22:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2c5c3feb-9883-4f28-b5e6-4ccf26de9c58,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-workflowz9n9l/series-workflowz9n9l-build-action-3286505862/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-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:22:29 +0000 UTC FinishedAt: 2026-08-06 11:22:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:22:29 +0000 UTC FinishedAt: 2026-08-06 11:22:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:22:29 +0000 UTC FinishedAt: 2026-08-06 11:40:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:22:29 +0000 UTC FinishedAt: 2026-08-06 11:40:28 +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:*65d7aab0-4b20-4ff6-9ca1-8cd370650ba1,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-workflowz9n9l/series-workflowz9n9l-convert-artifact-3178510439/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": "7886ca3a-861b-480a-816e-35192bfc4c80", "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-workflowz9n9l/series-workflowz9n9l-build-action-2755719147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:22:29 +0000 UTC FinishedAt: 2026-08-06 11:40:18 +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:*65d7aab0-4b20-4ff6-9ca1-8cd370650ba1,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-workflowz9n9l/series-workflowz9n9l-convert-artifact-3178510439/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": "7886ca3a-861b-480a-816e-35192bfc4c80", "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-workflowz9n9l/series-workflowz9n9l-build-action-2755719147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:40:28 +0000 UTC FinishedAt: 2026-08-06 11:40:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:40:28 +0000 UTC FinishedAt: 2026-08-06 11:40:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:40:28 +0000 UTC FinishedAt: 2026-08-06 11:42:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:40:28 +0000 UTC FinishedAt: 2026-08-06 11:42:22 +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:*7886ca3a-861b-480a-816e-35192bfc4c80,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-workflowz9n9l/series-workflowz9n9l-build-action-2755719147/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-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:31 +0000 UTC FinishedAt: 2026-08-06 14:47:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:31 +0000 UTC FinishedAt: 2026-08-06 14:47:33 +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":["tcf_action_init_1","tcf_action_init"],"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:*2c5c3feb-9883-4f28-b5e6-4ccf26de9c58,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7886ca3a-861b-480a-816e-35192bfc4c80,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-workflowz9n9l/series-workflowz9n9l-build-action-3286505862/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-workflowz9n9l/series-workflowz9n9l-build-action-2755719147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:31 +0000 UTC FinishedAt: 2026-08-06 11:42:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:31 +0000 UTC FinishedAt: 2026-08-06 11:42:35 +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":["tcf_action_init_1","tcf_action_init"],"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-workflowz9n9l/series-workflowz9n9l-convert-artifact-3167796928/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:31 +0000 UTC FinishedAt: 2026-08-06 11:42:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:31 +0000 UTC FinishedAt: 2026-08-06 11:42:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:31 +0000 UTC FinishedAt: 2026-08-06 11:42:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:41 +0000 UTC FinishedAt: 2026-08-06 14:47:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz9n9l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"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":["tcf_action_init_1","tcf_action_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_POLICE","NET_ACT_GACT","GACT_PROB"],"series_id":"ebe6cd8d-d122-4d7e-a239-4da690a99b69","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-06 11:42:41 +0000 UTC FinishedAt: 2026-08-06 14:47:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2c5c3feb-9883-4f28-b5e6-4ccf26de9c58,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7886ca3a-861b-480a-816e-35192bfc4c80,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-workflowz9n9l/series-workflowz9n9l-build-action-3286505862/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-workflowz9n9l/series-workflowz9n9l-build-action-2755719147/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-workflowz9n9l/series-workflowz9n9l-convert-artifact-3167796928/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,}