Name: series-workflowjk4tp Phase: Succeeded StartedAt: 2026-09-02 03:13:01 +0000 UTC FinishedAt: 2026-09-02 07:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[0] Phase: Succeeded StartedAt: 2026-09-02 03:13:01 +0000 UTC FinishedAt: 2026-09-02 03:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 03:13:01 +0000 UTC FinishedAt: 2026-09-02 03:32:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ead700ca770c82167af32622cf8b68c9f87c3c7c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_VADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "DAMON_STAT", "NUMA", "MEMCG", "TRANSPARENT_HUGEPAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ead700ca770c82167af32622cf8b68c9f87c3c7c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_VADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "DAMON_STAT", "NUMA", "MEMCG", "TRANSPARENT_HUGEPAGE" ], "series_id": "a03b7449-40a0-4dec-bdce-1eb698eb31e2" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_commit_ctx", "damon_set_attrs", "damon_set_schemes", "damon_set_regions", "damos_commit_quota_goals", "damon_sysfs_add_schemes", "damos_walk" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7REFNT05fU1RBVCYjMzQ7LAogICAgJiMzNDtOVU1BJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfYXR0cnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3JlZ2lvbnMmIzM0OywKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9zX3dhbGsmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgbG9naWNhbCBhcml0aG1ldGljLCBlcnJvciBoYW5kbGluZywgYW5kIGFkZHJlc3MgYWR2YW5jZW1lbnQgYnVncyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcik6XG4xLiBBZGRzIGVycm9yIGNoZWNraW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCBpbiBgbW0vZGFtb24vY29yZS5jYC5cbjIuIEFkZHMgYm91bmRhcnkgYW5kIHplcm8gY2hlY2tzIHRvIGF2b2lkIHVuZGVyZmxvdyBhbmQgZGl2aXNpb24tYnktemVybyBpbiBub2RlL2Nncm91cCBtZW1vcnkgbWV0cmljcyBjYWxjdWxhdGlvbnMgKGBkYW1vc19nZXRfbm9kZV9tZW1fYnBgLCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icGAsIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGApLlxuMy4gQ29ycmVjdHMgcGh5c2ljYWwgYWRkcmVzcyBjYWxjdWxhdGlvbiB3aGVuIGFkdmFuY2luZyBwYXN0IGZvbGlvcyBpbiBgbW0vZGFtb24vcGFkZHIuY2AuXG40LiBDb3JyZWN0cyBwYWdlIGluZGV4IG9mZnNldCBjYWxjdWxhdGlvbnMgd2hlbiBhZHZhbmNpbmcgb3ZlciBtdWx0aS1wYWdlIGZvbGlvcyBpbiBgbW0vZGFtb24vdmFkZHIuY2AuXG5cbk5vbmUgb2YgdGhlc2UgY2hhbmdlcyBhbGxvY2F0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgcmVhZCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gQWxsIHZhcmlhYmxlcyBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkIGFyZSBzdHJpY3RseSBpbml0aWFsaXplZCBhbmQgb3BlcmF0ZWQgb24gYXMgbG9jYWwgcHJpbWl0aXZlcy4gVGhlcmVmb3JlLCB0aGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZykgbG9naWMgYWNyb3NzIGNvcmUsIHBhZGRyLCBhbmQgdmFkZHIgY29tcG9uZW50cy4gSXQgZml4ZXMgaGFuZGxpbmcgb2Ygc3BsaXQgZmFpbHVyZXMgaW4gZGFtb3NfYXBwbHlfc2NoZW1lLCBwcmV2ZW50cyBkaXZpZGUtYnktemVybyAvIGJvdW5kYXJ5IGNhbGN1bGF0aW9uIGVycm9ycyBpbiBEQU1PUyBxdW90YSBtZXRyaWNzIChkYW1vc19nZXRfbm9kZV9tZW1fYnAsIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAsIGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKSwgYW5kIGZpeGVzIGZvbGlvIGl0ZXJhdGlvbiBhZGRyZXNzIGFkdmFuY2VzIGluIHBhZGRyIGFuZCB2YWRkciBzY2hlbWVzIHdoZW4gZGVhbGluZyB3aXRoIHN1YnBhZ2VzIG9mIGxhcmdlIGZvbGlvcy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIERBTU9TIHNjaGVtZSBhcHBsaWNhdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY3NjIyZjM5MWFkMzgzNWI5Yzk2ZWU5ZDU2MDRhNjM2ZjgwMWJkYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAzOjMwOjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggM2Y4OWNmZGY1ZjAyMi4uMGRmNzg1ZTcyNDM4ZiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMjYwNCw3ICYjNDM7MjYwNCw4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuIFx0XHRcdFx0XHRjLVx1MDAzZW1pbl9yZWdpb25fc3opO1xuIFx0XHRcdGlmICghc3opXG4gXHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuLVx0XHRcdGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeik7XG4mIzQzO1x0XHRcdGlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKVxuJiM0MztcdFx0XHRcdGdvdG8gdXBkYXRlX3N0YXQ7XG4gXHRcdH1cbiBcdFx0aWYgKGRhbW9zX2NvcmVfZmlsdGVyX291dChjLCB0LCByLCBzKSlcbiBcdFx0XHRyZXR1cm47XG5AQCAtMjgwNiw2ICYjNDM7MjgwNywxMyBAQCBzdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXG4gXHR9XG4gXG4gXHRzaV9tZW1pbmZvX25vZGUoXHUwMDI2aSwgZ29hbC1cdTAwM2VuaWQpO1xuJiM0MztcdGlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtIFx1MDAzYyBpLmZyZWVyYW0pIHtcbiYjNDM7XHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxuJiM0MztcdFx0XHRyZXR1cm4gMTAwMDA7XG4mIzQzO1x0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQICovXG4mIzQzO1x0XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcbiBcdFx0bnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIGkuZnJlZXJhbTtcbiBcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cbkBAIC0yODQ2LDYgJiM0MzsyODU0LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXG4gXHRtZW1fY2dyb3VwX3B1dChtZW1jZyk7XG4gXG4gXHRzaV9tZW1pbmZvX25vZGUoXHUwMDI2aSwgZ29hbC1cdTAwM2VuaWQpO1xuJiM0MztcdGlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtIFx1MDAzYyB1c2VkX3BhZ2VzKSB7XG4mIzQzO1x0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuJiM0MztcdFx0XHRyZXR1cm4gMTAwMDA7XG4mIzQzO1x0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuIFx0aWYgKGdvYWwtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUClcbiBcdFx0bnVtZXJhdG9yID0gdXNlZF9wYWdlcztcbiBcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCAqL1xuQEAgLTI5OTIsNyAmIzQzOzMwMDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKGJvb2wgYWN0aXZlX3JhdGlvKVxuIFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICYjNDM7IExSVV9BQ1RJVkVfRklMRSk7XG4gXHRpbmFjdGl2ZSA9IGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0lOQUNUSVZFX0FOT04pICYjNDM7XG4gXHRcdGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0lOQUNUSVZFX0ZJTEUpO1xuLVx0dG90YWwgPSBhY3RpdmUgJiM0MzsgaW5hY3RpdmU7XG4mIzQzO1x0dG90YWwgPSBtYXgoYWN0aXZlICYjNDM7IGluYWN0aXZlLCAxKTtcbiBcdGlmIChhY3RpdmVfcmF0aW8pXG4gXHRcdHJldHVybiBtdWx0X2ZyYWMoYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xuIFx0cmV0dXJuIG11bHRfZnJhYyhpbmFjdGl2ZSwgMTAwMDAsIHRvdGFsKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9wYWRkci5jIGIvbW0vZGFtb24vcGFkZHIuY1xuaW5kZXggNWM2YzNhNTk3ZmQwYi4uOWRkZDFlYzgyMDJiNyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3BhZGRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3BhZGRyLmNcbkBAIC0yNjQsNyAmIzQzOzI2NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX3BhZ2VvdXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdFx0ZWxzZVxuIFx0XHRcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2Zm9saW9fbGlzdCk7XG4gcHV0X2ZvbGlvOlxuLVx0XHRhZGRyICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKTtcbiYjNDM7XHRcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSAmIzQzOyBmb2xpb19zaXplKGZvbGlvKTtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiBcdH1cbiBcdGlmIChpbnN0YWxsX3lvdW5nX2ZpbHRlcilcbkBAIC0zMDIsNyAmIzQzOzMwMiw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZV9hY3RpdmF0ZShcbiBcdFx0XHRmb2xpb19kZWFjdGl2YXRlKGZvbGlvKTtcbiBcdFx0YXBwbGllZCAmIzQzOz0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xuIHB1dF9mb2xpbzpcbi1cdFx0YWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7XG4mIzQzO1x0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xuQEAgLTM1MCw3ICYjNDM7MzUwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFx0XHRcdFx0Zm9saW9faXNfZmlsZV9scnUoZm9saW8pKTtcbiBcdFx0bGlzdF9hZGQoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZmb2xpb19saXN0KTtcbiBwdXRfZm9saW86XG4tXHRcdGFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pO1xuJiM0MztcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0fVxuIFx0YXBwbGllZCA9IGRhbW9uX21pZ3JhdGVfcGFnZXMoXHUwMDI2Zm9saW9fbGlzdCwgcy1cdTAwM2V0YXJnZXRfbmlkKTtcbkBAIC0zNzksNyAmIzQzOzM3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX3N0YXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcbiBcdFx0aWYgKCFkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcbiBcdFx0XHQqc3pfZmlsdGVyX3Bhc3NlZCAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbykgLyBhZGRyX3VuaXQ7XG4tXHRcdGFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pO1xuJiM0MztcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0fVxuIFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggMDY0ODQwMGIyZDY1Yi4uYzhjMzJiMmFlMDQwMiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3ZhZGRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmNcbkBAIC02NjksNiAmIzQzOzY2OSw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGZvciAoOyBhZGRyIFx1MDAzYyBuZXh0OyBwdGUgJiM0Mzs9IG5yLCBhZGRyICYjNDM7PSBuciAqIFBBR0VfU0laRSkge1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeDtcbiYjNDM7XG4gXHRcdG5yID0gMTtcbiBcdFx0cHRlbnQgPSBwdGVwX2dldChwdGUpO1xuIFxuQEAgLTY4MSw3ICYjNDM7NjgzLDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVx1MDAzZXZtYSwgYWRkciwgZGVzdHMsXG4gXHRcdFx0XHRtaWdyYXRpb25fbGlzdHMpO1xuLVx0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcbiYjNDM7XHRcdHBhZ2VfaWR4ID0gZm9saW9fcGFnZV9pZHgoZm9saW8sIHB0ZV9wYWdlKHB0ZW50KSk7XG4mIzQzO1x0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4O1xuIFx0fVxuIFx0cHRlX3VubWFwX3VubG9jayhzdGFydF9wdGUsIHB0bCk7XG4gXHRyZXR1cm4gMDtcbkBAIC04MzEsNiAmIzQzOzgzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGZvciAoOyBhZGRyIFx1MDAzYyBuZXh0OyBwdGUgJiM0Mzs9IG5yLCBhZGRyICYjNDM7PSBuciAqIFBBR0VfU0laRSkge1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeDtcbiYjNDM7XG4gXHRcdG5yID0gMTtcbiBcdFx0cHRlbnQgPSBwdGVwX2dldChwdGUpO1xuIFxuQEAgLTg0NCw3ICYjNDM7ODQ5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXG4gXHRcdGlmICghZGFtb3NfdmFfZmlsdGVyX291dChzLCBmb2xpbywgdm1hLCBhZGRyLCBwdGUsIE5VTEwpKVxuIFx0XHRcdCpzel9maWx0ZXJfcGFzc2VkICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKTtcbi1cdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4mIzQzO1x0XHRwYWdlX2lkeCA9IGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBwdGVfcGFnZShwdGVudCkpO1xuJiM0MztcdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDtcbiBcdFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbiBcdH1cbiBcdHB0ZV91bm1hcF91bmxvY2soc3RhcnRfcHRlLCBwdGwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7REFNT05fU1RBVCYjMzQ7LAogICAgJiMzNDtOVU1BJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfYXR0cnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3JlZ2lvbnMmIzM0OywKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9zX3dhbGsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcpIGxvZ2ljIGFjcm9zcyBjb3JlLCBwYWRkciwgYW5kIHZhZGRyIGNvbXBvbmVudHMuIEl0IGZpeGVzIGhhbmRsaW5nIG9mIHNwbGl0IGZhaWx1cmVzIGluIGRhbW9zX2FwcGx5X3NjaGVtZSwgcHJldmVudHMgZGl2aWRlLWJ5LXplcm8gLyBib3VuZGFyeSBjYWxjdWxhdGlvbiBlcnJvcnMgaW4gREFNT1MgcXVvdGEgbWV0cmljcyAoZGFtb3NfZ2V0X25vZGVfbWVtX2JwLCBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwLCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icCksIGFuZCBmaXhlcyBmb2xpbyBpdGVyYXRpb24gYWRkcmVzcyBhZHZhbmNlcyBpbiBwYWRkciBhbmQgdmFkZHIgc2NoZW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyBvZiBsYXJnZSBmb2xpb3MuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBEQU1PUyBzY2hlbWUgYXBwbGljYXRpb24gbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNzYyMmYzOTFhZDM4MzViOWM5NmVlOWQ1NjA0YTYzNmY4MDFiZGE4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAwMzozMDo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCAzZjg5Y2ZkZjVmMDIyLi4wZGY3ODVlNzI0MzhmIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0yNjA0LDcgJiM0MzsyNjA0LDggQEAgc3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsCiAJCQkJCWMtJmd0O21pbl9yZWdpb25fc3opOwogCQkJaWYgKCFzeikKIAkJCQlnb3RvIHVwZGF0ZV9zdGF0OwotCQkJZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KTsKJiM0MzsJCQlpZiAoZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KSkKJiM0MzsJCQkJZ290byB1cGRhdGVfc3RhdDsKIAkJfQogCQlpZiAoZGFtb3NfY29yZV9maWx0ZXJfb3V0KGMsIHQsIHIsIHMpKQogCQkJcmV0dXJuOwpAQCAtMjgwNiw2ICYjNDM7MjgwNywxMyBAQCBzdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoCiAJfQogCiAJc2lfbWVtaW5mb19ub2RlKCZhbXA7aSwgZ29hbC0mZ3Q7bmlkKTsKJiM0MzsJaWYgKCFpLnRvdGFscmFtIHx8IGkudG90YWxyYW0gJmx0OyBpLmZyZWVyYW0pIHsKJiM0MzsJCWlmIChnb2FsLSZndDttZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCkKJiM0MzsJCQlyZXR1cm4gMTAwMDA7CiYjNDM7CQllbHNlCS8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi8KJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwogCWlmIChnb2FsLSZndDttZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCkKIAkJbnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIGkuZnJlZXJhbTsKIAllbHNlCS8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi8KQEAgLTI4NDYsNiAmIzQzOzI4NTQsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icCgKIAltZW1fY2dyb3VwX3B1dChtZW1jZyk7CiAKIAlzaV9tZW1pbmZvX25vZGUoJmFtcDtpLCBnb2FsLSZndDtuaWQpOwomIzQzOwlpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSAmbHQ7IHVzZWRfcGFnZXMpIHsKJiM0MzsJCWlmIChnb2FsLSZndDttZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKQomIzQzOwkJCXJldHVybiAxMDAwMDsKJiM0MzsJCWVsc2UJLyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CX0KIAlpZiAoZ29hbC0mZ3Q7bWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUCkKIAkJbnVtZXJhdG9yID0gdXNlZF9wYWdlczsKIAllbHNlCS8qIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCAqLwpAQCAtMjk5Miw3ICYjNDM7MzAwNiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnAoYm9vbCBhY3RpdmVfcmF0aW8pCiAJCWdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0FDVElWRV9GSUxFKTsKIAlpbmFjdGl2ZSA9IGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0lOQUNUSVZFX0FOT04pICYjNDM7CiAJCWdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0lOQUNUSVZFX0ZJTEUpOwotCXRvdGFsID0gYWN0aXZlICYjNDM7IGluYWN0aXZlOwomIzQzOwl0b3RhbCA9IG1heChhY3RpdmUgJiM0MzsgaW5hY3RpdmUsIDEpOwogCWlmIChhY3RpdmVfcmF0aW8pCiAJCXJldHVybiBtdWx0X2ZyYWMoYWN0aXZlLCAxMDAwMCwgdG90YWwpOwogCXJldHVybiBtdWx0X2ZyYWMoaW5hY3RpdmUsIDEwMDAwLCB0b3RhbCk7CmRpZmYgLS1naXQgYS9tbS9kYW1vbi9wYWRkci5jIGIvbW0vZGFtb24vcGFkZHIuYwppbmRleCA1YzZjM2E1OTdmZDBiLi45ZGRkMWVjODIwMmI3IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9wYWRkci5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3BhZGRyLmMKQEAgLTI2NCw3ICYjNDM7MjY0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfcGFnZW91dChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCQllbHNlCiAJCQlsaXN0X2FkZCgmYW1wO2ZvbGlvLSZndDtscnUsICZhbXA7Zm9saW9fbGlzdCk7CiBwdXRfZm9saW86Ci0JCWFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pOwomIzQzOwkJYWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pOwogCQlmb2xpb19wdXQoZm9saW8pOwogCX0KIAlpZiAoaW5zdGFsbF95b3VuZ19maWx0ZXIpCkBAIC0zMDIsNyAmIzQzOzMwMiw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZV9hY3RpdmF0ZSgKIAkJCWZvbGlvX2RlYWN0aXZhdGUoZm9saW8pOwogCQlhcHBsaWVkICYjNDM7PSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7CiBwdXRfZm9saW86Ci0JCWFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pOwomIzQzOwkJYWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pOwogCQlmb2xpb19wdXQoZm9saW8pOwogCX0KIAlzLSZndDtsYXN0X2FwcGxpZWQgPSBmb2xpbzsKQEAgLTM1MCw3ICYjNDM7MzUwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCQkJCWZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7CiAJCWxpc3RfYWRkKCZhbXA7Zm9saW8tJmd0O2xydSwgJmFtcDtmb2xpb19saXN0KTsKIHB1dF9mb2xpbzoKLQkJYWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7CiYjNDM7CQlhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CiAJfQogCWFwcGxpZWQgPSBkYW1vbl9taWdyYXRlX3BhZ2VzKCZhbXA7Zm9saW9fbGlzdCwgcy0mZ3Q7dGFyZ2V0X25pZCk7CkBAIC0zNzksNyAmIzQzOzM3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX3N0YXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwKIAogCQlpZiAoIWRhbW9zX3BhX2ZpbHRlcl9vdXQocywgZm9saW8pKQogCQkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pIC8gYWRkcl91bml0OwotCQlhZGRyICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKTsKJiM0MzsJCWFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSAmIzQzOyBmb2xpb19zaXplKGZvbGlvKTsKIAkJZm9saW9fcHV0KGZvbGlvKTsKIAl9CiAJcy0mZ3Q7bGFzdF9hcHBsaWVkID0gZm9saW87CmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuYwppbmRleCAwNjQ4NDAwYjJkNjViLi5jOGMzMmIyYWUwNDAyIDEwMDY0NAotLS0gYS9tbS9kYW1vbi92YWRkci5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmMKQEAgLTY2OSw2ICYjNDM7NjY5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCXJldHVybiAwOwogCiAJZm9yICg7IGFkZHIgJmx0OyBuZXh0OyBwdGUgJiM0Mzs9IG5yLCBhZGRyICYjNDM7PSBuciAqIFBBR0VfU0laRSkgewomIzQzOwkJdW5zaWduZWQgbG9uZyBwYWdlX2lkeDsKJiM0MzsKIAkJbnIgPSAxOwogCQlwdGVudCA9IHB0ZXBfZ2V0KHB0ZSk7CiAKQEAgLTY4MSw3ICYjNDM7NjgzLDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCQljb250aW51ZTsKIAkJZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstJmd0O3ZtYSwgYWRkciwgZGVzdHMsCiAJCQkJbWlncmF0aW9uX2xpc3RzKTsKLQkJbnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7CiYjNDM7CQlwYWdlX2lkeCA9IGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBwdGVfcGFnZShwdGVudCkpOwomIzQzOwkJbnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDsKIAl9CiAJcHRlX3VubWFwX3VubG9jayhzdGFydF9wdGUsIHB0bCk7CiAJcmV0dXJuIDA7CkBAIC04MzEsNiAmIzQzOzgzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQlyZXR1cm4gMDsKIAogCWZvciAoOyBhZGRyICZsdDsgbmV4dDsgcHRlICYjNDM7PSBuciwgYWRkciAmIzQzOz0gbnIgKiBQQUdFX1NJWkUpIHsKJiM0MzsJCXVuc2lnbmVkIGxvbmcgcGFnZV9pZHg7CiYjNDM7CiAJCW5yID0gMTsKIAkJcHRlbnQgPSBwdGVwX2dldChwdGUpOwogCkBAIC04NDQsNyAmIzQzOzg0OSw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCiAJCWlmICghZGFtb3NfdmFfZmlsdGVyX291dChzLCBmb2xpbywgdm1hLCBhZGRyLCBwdGUsIE5VTEwpKQogCQkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pOwotCQluciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTsKJiM0MzsJCXBhZ2VfaWR4ID0gZm9saW9fcGFnZV9pZHgoZm9saW8sIHB0ZV9wYWdlKHB0ZW50KSk7CiYjNDM7CQluciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4OwogCQlzLSZndDtsYXN0X2FwcGxpZWQgPSBmb2xpbzsKIAl9CiAJcHRlX3VubWFwX3VubG9jayhzdGFydF9wdGUsIHB0bCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gVGhlIGNoYW5nZXMgYXJlIGNvbmNlbnRyYXRlZCB3aXRoaW4gdGhlIGBtbS9kYW1vbi9gIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBjb3JlLmNgLCBgcGFkZHIuY2AsIGFuZCBgdmFkZHIuY2AuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IHN0ZXAgaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIERBTU9OLCB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvciwgaW4gdGhlIExpbnV4IGtlcm5lbCBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdXAtdG8tZGF0ZSBvbiBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLCBhc3NvY2lhdGVkIGZpbGVzLCBhbmQgc2VlIHdoYXQgY29kZSBpcyBjYWxsaW5nIERBTU9OIGZ1bmN0aW9ucy4gSSYjMzk7bGwgc2VhcmNoIGZvciByZWxhdGVkIEtjb25maWcgZW50cmllcyB0byBnZXQgdGhlIGNvbnRleHQgcmlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9Mz1tZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbm1tL2RhbW9uL0tjb25maWctNC1cbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cbm1tL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xNC1cbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctMzctXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxubW0vZGFtb24vS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy00Ni1cbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy04Ny1cbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTE1LVxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NDQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGNvcmUuY2AsIGBwYWRkci5jYCwgYW5kIGB2YWRkci5jYCBnZXQgYnVpbHQgd2l0aGluIHRoaXMgREFNT04gc3lzdGVtIGFuZCB3aGF0IHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSBsb29rcyBsaWtlLiBNeSBmaXJzdCBzdG9wIGhhcyB0byBiZSB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdGhlIE1ha2VmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGBtbS9kYW1vbi9LY29uZmlnYCBhbmQgYG1tL2RhbW9uL01ha2VmaWxlYC4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBLY29uZmlnIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoZXNlIGZpbGVzIOKAkyBhcmUgdGhlcmUgc3BlY2lmaWMgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBvciBmZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhlbSB0byBiZSBpbmNsdWRlZD8gVGhlbiBJJiMzOTtsbCBoaXQgdGhlIE1ha2VmaWxlIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHJ1bGVzIHRoZW1zZWx2ZXMsIGhvdyB0aGVzZSBzcGVjaWZpYyBzb3VyY2UgZmlsZXMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQuIEZ1cnRoZXJtb3JlLCBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBNYWtlZmlsZSYjMzk7cyBydWxlcyB0aGF0IGhhbmRsZSB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2VzLiBBcmUgdGhlc2UgZmlsZXMgZXhwb3NlZCB0aHJvdWdoIHN5c2ZzLCBkZWJ1Z2ZzLCBvciBwZXJoYXBzIGV2ZW4gc29tZXRoaW5nIGN1c3RvbT8gVW5kZXJzdGFuZGluZyB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UgaXMgY3JpdGljYWwgZm9yIGZpZ3VyaW5nIG91dCBob3cgdXNlcnMgd291bGQgaW50ZXJhY3Qgd2l0aCB0aGUgbW9uaXRvcmluZyBjYXBhYmlsaXRpZXMgb2YgdGhlc2UgZmlsZXMuIEVzc2VudGlhbGx5LCBJIG5lZWQgdGhlIGNvbXBsZXRlIHBpY3R1cmUg4oCTIGZyb20gYnVpbGQgY29uZmlndXJhdGlvbnMgdG8gZXh0ZXJuYWwgYWNjZXNzaWJpbGl0eSDigJMgdG8gZ3Jhc3AgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlaXIgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdG9iai15XHRcdFx0XHQ6PSBjb3JlLm9cbiAgIDQ6XHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cbiAgIDU6XHRvYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbiAgIDY6XHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXHQmIzQzOz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cbiAgIDc6XHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xuICAgODpcdG9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cbiAgIDk6XHRvYmotJChDT05GSUdfREFNT05fU1RBVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uIERlcHRocyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXQgcGxheS4gTGV0JiMzOTtzIG5vdCByZWx5IG9uIGludHVpdGlvbiBoZXJlIOKAkyB0aGF0JiMzOTtzIGEgcmVjaXBlIGZvciBoZWFkYWNoZXMgZG93biB0aGUgcm9hZCEgVGhlIGJlc3QgYXBwcm9hY2ggaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdG8gdGhlIGF1dGhvcml0YXRpdmUgZGVmaW5pdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgdHJ1dGggaXMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZnVsbCBwaWN0dXJlIGxvb2tzIGxpa2UuIE5vIHNob3J0Y3V0cywganVzdCBhIGNsZWFuIHZpZXcgb2YgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdFxuICAgMzpcdG1lbnUgXCYjMzQ7RGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1wmIzM0O1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBEQU1PTlxuICAgNjpcdFx0Ym9vbCBcJiMzNDtEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcJiMzNDtcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxuICAgOTpcdFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcbiAgMTA6XHRcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgU2VlIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L21tL2RhbW9uL2luZGV4Lmh0bWwgZm9yXG4gIDEzOlx0XHQgIG1vcmUgaW5mb3JtYXRpb24uXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxuICAxNjpcdFx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xuICAxNzpcdFx0ZGVwZW5kcyBvbiBEQU1PTlxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBUaGlzIGVuYWJsZXMgYWRkaXRpb25hbCBEQU1PTiBkZWJ1Z2dpbmctcHVycG9zZSBzYW5pdHkgY2hlY2tzIGluXG4gIDIwOlx0XHQgIERBTU9OIGNvZGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGZpbmRpbmcgYnVncywgYnV0IGltcG9zZVxuICAyMTpcdFx0ICBhZGRpdGlvbmFsIG92ZXJoZWFkLiAgVGhpcyBpcyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gYmUgZW5hYmxlZCBvblxuICAyMjpcdFx0ICBvbmx5IGRldmVsb3BtZW50IGFuZCB0ZXN0IHNldHVwcy5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgREFNT05fS1VOSVRfVEVTVFxuICAyNzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDI4Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBLVU5JVD15XG4gIDI5Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cbiAgMzI6XHRcbiAgMzM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDM0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICAzNTpcdFxuICAzNjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBEQU1PTl9WQUREUlxuICAzOTpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA0MTpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDQyOlx0XHRkZWZhdWx0IERBTU9OXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNDU6XHRcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBEQU1PTl9QQUREUlxuICA0ODpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNTA6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA1MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDU0Olx0XHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4gIDU3Olx0XHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA1OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgNjA6XHRcdGhlbHBcbiAgNjE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDY0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA3OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgODA6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzI2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFuZHNjYXBlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcg4oCTIG1vc3QgbGlrZWx5LCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1NL0RBTU9OIHN1YnN5c3RlbS4gSSBzZWUgdGhlIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGRpdmUgaW50byB0aGUgcmVzdCBvZiB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3Mgc29tZSBpbnRlcmVzdGluZyBkZXRhaWwgdGhlcmUgdGhhdCB3YXJyYW50cyBhIGRlZXBlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCBmZWF0dXJlcywgb3IgbWF5YmUgZXZlbiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB3aXRoaW4gREFNT04mIzM5O3MgS2NvbmZpZyBmaWxlLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQ7IGlkZW50aWZ5IHBvdGVudGlhbCBjdXN0b21pemF0aW9uIHBvaW50cyBmb3IgdGhpcyBzdWJzeXN0ZW0uIEdpdmVuIHRoaXMgaXMgYSBLY29uZmlnIGZpbGUsIGl0IGNvbnRhaW5zIHRoZSBidWlsZCBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGFuZCB3aGF0IGxvZ2ljIGdvdmVybnMgdGhlbSB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbmQgYmVoYXZpb3Igb2YgREFNT04uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb21wbGV4IGRlcGVuZGVuY3kgdHJlZSwgd2l0aCBwb3RlbnRpYWwgY3Jvc3MtYXJjaGl0ZWN0dXJhbCBjb25zaWRlcmF0aW9ucy4gSSBhbSBpbnRlcmVzdGVkIHRvIHNlZSB3aGF0IG9wdGlvbnMgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgYXJlYSBvZiBmb2N1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MTpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIEt1bml0IHRlc3Qgc3VpdGUuXG4gIDgyOlx0XG4gIDgzOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxuICA4NDpcdFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cbiAgODU6XHRcbiAgODY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgODc6XHRcbiAgODg6XHRjb25maWcgREFNT05fUkVDTEFJTVxuICA4OTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuICA5MDpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxuICA5MTpcdFx0aGVscFxuICA5MjpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgcmVjbGFtYXRpb24gc3Vic3lzdGVtLiAgSXQgZmluZHMgcGFnZXNcbiAgOTM6XHRcdCAgdGhhdCBub3QgYWNjZXNzZWQgZm9yIGEgbG9uZyB0aW1lIChjb2xkKSB1c2luZyBEQU1PTiBhbmQgcmVjbGFpbVxuICA5NDpcdFx0ICB0aG9zZS5cbiAgOTU6XHRcbiAgOTY6XHRcdCAgVGhpcyBpcyBzdWdnZXN0ZWQgdG8gYmUgdXNlZCBhcyBhIHByb2FjdGl2ZSBhbmQgbGlnaHR3ZWlnaHRcbiAgOTc6XHRcdCAgcmVjbGFtYXRpb24gdW5kZXIgbGlnaHQgbWVtb3J5IHByZXNzdXJlLCB3aGlsZSB0aGUgdHJhZGl0aW9uYWwgcGFnZVxuICA5ODpcdFx0ICBzY2FubmluZy1iYXNlZCByZWNsYW1hdGlvbiBpcyB1c2VkIGZvciBoZWF2eSBwcmVzc3VyZS5cbiAgOTk6XHRcbiAxMDA6XHRjb25maWcgREFNT05fTFJVX1NPUlRcbiAxMDE6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xuIDEwMjpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxuIDEwMzpcdFx0aGVscFxuIDEwNDpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgc3Vic3lzdGVtLiAgSXQgdHJpZXMgdG9cbiAxMDU6XHRcdCAgcHJvdGVjdCBmcmVxdWVudGx5IGFjY2Vzc2VkIChob3QpIHBhZ2VzIHdoaWxlIHJhcmVseSBhY2Nlc3NlZCAoY29sZClcbiAxMDY6XHRcdCAgcGFnZXMgcmVjbGFpbWVkIGZpcnN0IHVuZGVyIG1lbW9yeSBwcmVzc3VyZS5cbiAxMDc6XHRcbiAxMDg6XHRjb25maWcgREFNT05fU1RBVFxuIDEwOTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXCYjMzQ7XG4gMTEwOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gMTExOlx0XHRoZWxwXG4gMTEyOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0aXN0aWNzIHN1YnN5c3RlbS5cbiAxMTM6XHRcdCAgSXQgcnVucyBEQU1PTiBhbmQgZXhwb3NlIGFjY2VzcyBtb25pdG9yaW5nIHJlc3VsdHMgaW4gc2ltcGxlIHN0YXRcbiAxMTQ6XHRcdCAgbWV0cmljcy5cbiAxMTU6XHRcbiAxMTY6XHRjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcbiAxMTc6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuIDExODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9TVEFUXG4gMTE5Olx0XHRkZWZhdWx0IERBTU9OX1NUQVRcbiAxMjA6XHRcdGhlbHBcbiAxMjE6XHRcdCAgV2hldGhlciB0byBlbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0LiAgVXNlcnMgY2FuIGRpc2FibGUgaXQgaW5cbiAxMjI6XHRcdCAgYm9vdCBvciBydW50aW1lIHVzaW5nIGl0cyAmIzM5O2VuYWJsZWQmIzM5OyBwYXJhbWV0ZXIuXG4gMTIzOlx0XG4gMTI0Olx0ZW5kbWVudVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjM2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gZmluZGluZyB0aGUgcGFyZW50IEtjb25maWcgZm9yIERBTU9OLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkZpbmRpbmcgREFNT04mIzM5O3MgUGFyZW50IEtjb25maWcqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQgZm9yIERBTU9OLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgbW0vZGFtb24vS2NvbmZpZ2AgZmlsZSBpcyBhY3R1YWxseSAqaW5jbHVkZWQqLiBJdCYjMzk7cyBub3QgZW5vdWdoIHRvIGp1c3QgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGl0c2VsZjsgSSBuZWVkIHRvIHRyYWNlIGl0cyBpbmNsdXNpb24gcGF0aCB0byBzZWUgd2hlcmUgaXQgc2l0cyB3aXRoaW4gdGhlIGxhcmdlciBjb25maWd1cmF0aW9uIGhpZXJhcmNoeS4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIGRvIHNvbWUgc2VhcmNoaW5nIGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgdGhhdCBicmluZyBgbW0vZGFtb24vS2NvbmZpZ2AgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBUaW1lIHRvIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlLiptbS9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTQ4NT1jb25maWcgTEFaWV9NTVVfTU9ERV9LVU5JVF9URVNUXG4tLVxubW0vS2NvbmZpZy0xNDk2LVxubW0vS2NvbmZpZzoxNDk3OnNvdXJjZSBcJiMzNDttbS9kYW1vbi9LY29uZmlnXCYjMzQ7XG5tbS9LY29uZmlnLTE0OTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MzIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIFBhdGNoIEFuYWx5c2lzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBEQU1PTiBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlcmUgYXJlIG5vIHNpZ25pZmljYW50IGRlcGVuZGVuY3kgaXNzdWVzIGZvciB0aGUgYERBTU9OYCBzdWJzeXN0ZW0gaXRzZWxmIGluIGBtbS9LY29uZmlnYCwgYW5kIGl0IGFwcGVhcnMgSSYjMzk7bSByaWdodDogdGhlcmUgYXJlIG5vbmUgYmV5b25kIHRoZSBiYXNpYyBgTU1VYCwgYFNZU0ZTYCwgZXRjLiB3aGljaCBhcmUgc3RhbmRhcmQuIEdvb2QuCgpOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBjb2RlIGNoYW5nZXMuIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBpbXBhY3Qgb2YgZWFjaCBtb2RpZmljYXRpb24gYW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0LgoKSW4gYG1tL2RhbW9uL2NvcmUuY2AsIHRoZSBkaWZmIGluIGBkYW1vc19hcHBseV9zY2hlbWUoKWAgaXMgbm90aWNlYWJsZS4gVGhlIGFkZGVkIGNvbmRpdGlvbmFsIGluIHRoZSBgZGFtb25fc3BsaXRfcmVnaW9uX2F0KClgIGNhbGw6IGBpZiAoZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KSlgIGluZGljYXRlcyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gY29udHJvbCBmbG93IGJhc2VkIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhhdCBmdW5jdGlvbi4gVGhlIGBnb3RvIHVwZGF0ZV9zdGF0YCBjbGF1c2Ugc3VnZ2VzdHMgdGhlIHNwbGl0JiMzOTtzIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBpcyBub3cgZGlyZWN0bHkgYWZmZWN0aW5nIHN0YXRpc3RpYyB1cGRhdGVzLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyBhcHBlYXJzIHRoZSBmdW5jdGlvbiBgZGFtb3NfY29yZV9maWx0ZXJfb3V0YCBpcyB0aGUgcHJpbWFyeSBmaWx0ZXIgb2YgYGNvcmUuY2AuCgpUaGUgYWRkaXRpb25zIGluIGBkYW1vc19nZXRfbm9kZV9tZW1fYnAoKWAgYW5kIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKClgIHNlZW0gcmVsYXRlZCB0byBtb3JlIHJvYnVzdCBtZW1vcnkgc3RhdGlzdGljcyBjb2xsZWN0aW9uLiBDaGVja2luZyBpZiBgaS50b3RhbHJhbWAgaXMgdmFsaWQgKGAhaS50b3RhbHJhbWApIG9yIGlmIGB0b3RhbHJhbWAgaXMgc21hbGxlciB0aGFuIGBmcmVlcmFtYCBzaG91bGQgcHJldmVudCBkaXZpc2lvbi1ieS16ZXJvIGVycm9ycyBvciB1bnJlYXNvbmFibGUgY2FsY3VsYXRpb25zLiBUaGUgYWRkZWQgY2hlY2tzIGFwcGVhciB0byBiZSBmb3IgdGhlc2UgdW5saWtlbHkgY2FzZXMsIHJldHVybmluZyBhIGZpeGVkIHZhbHVlICgxMDAwMCBvciAwKSBpbiBjYXNlcyB3aGVyZSBtZW1vcnkgaW5mb3JtYXRpb24gaXNuJiMzOTt0IGF2YWlsYWJsZSBvciB3b3VsZCBnaXZlIGFuIG5vbnNlbnNpY2FsIHJlc3VsdC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgYDEwMDAwYCBjb3JyZXNwb25kcyB0byBhIHBlcmNlbnRhZ2UsIGZvciBpbnN0YW5jZSwgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUuCgpUaGUgY2hhbmdlIGluIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icCgpYCB3aGVyZSBgdG90YWwgPSBhY3RpdmUgJiM0MzsgaW5hY3RpdmVgIGlzIG5vdyBgdG90YWwgPSBtYXgoYWN0aXZlICYjNDM7IGluYWN0aXZlLCAxKWAgaXMgYSBzb2xpZCBzYWZldHkgbmV0LiBUaGlzIGd1YXJhbnRlZXMgYSBub24temVybyBkZW5vbWluYXRvciB3aGVuIGNhbGN1bGF0aW5nIHJhdGlvcywgd2hpY2ggaXMgYSBrZXkgaW1wcm92ZW1lbnQuIFRoaXMgbG9va3MgbGlrZSBhIG5lY2Vzc2FyeSBjaGVjayB0byBwcmV2ZW50IGRpdmlkZS1ieS16ZXJvIGVycm9ycy4KCk1vdmluZyB0byBgbW0vZGFtb24vcGFkZHIuY2AsIHRoZSBjaGFuZ2VzIGFyZSBhbGwgaW4gZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2l0aCB0aGUgc2FtZSBsaW5lIGFkZGVkOiBgYWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pO2AuIFRoaXMgYWRkaXRpb24gaXMgaW4gc2V2ZXJhbCBmdW5jdGlvbnMsIGJ1dCB0aGV5IGFsbCBhcHBlYXIgdG8gcGVyZm9ybSB0aGUgc2FtZSBvcGVyYXRpb24uCgpGaW5hbGx5LCBpbiBgbW0vZGFtb24vdmFkZHIuY2AsIHRoZSB1c2Ugb2YgYGZvbGlvX3BhZ2VfaWR4KClgIGFuZCBgZm9saW9fbnJfcGFnZXMoKWAgaXMgYmVpbmcgYWRvcHRlZCB0byBjYWxjdWxhdGUgdGhlIHBhZ2UgaW5kZXggYW5kIG51bWJlciBvZiBwYWdlcy4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlcyBpbnZvbHZlIHVzaW5nIGZvbGlvIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGZvciBwbWQgYW5kIHB0ZSBlbnRyaWVzLCBzdWdnZXN0cyB0aGUgcGF0Y2ggaXMgdXBncmFkaW5nIHRoZSBjb2RlIHRvIHVzZSB0aGUgbW9kZXJuIGZvbGlvIGludGVyZmFjZSBtb3JlIGNvbnNpc3RlbnRseS4KCk5vdywgbGV0JiMzOTtzIHNlZSBob3cgdGhlc2UgdXBkYXRlZCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHVzZXJzcGFjZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3BlcmF0aW9uIGluIHRoZSBgcGFkZHIuY2AsIGB2YWRkci5jYCwgYW5kIGBjb3JlLmNgIGFyZSByZWdpc3RlcmVkLCBhbmQgaG93IHRoZSBmdW5jdGlvbnMgYXJlIGludm9rZWQuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIG92ZXJhbGwgaW1wYWN0IG9uIERBTU9OJiMzOTtzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc19hcHBseV9zY2hlbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTI1NDk9c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNTYyLVxubW0vZGFtb24vY29yZS5jOjI1NjM6c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG5tbS9kYW1vbi9jb3JlLmMtMjU2NC1cdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNjM0PXN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjY2MC1cdFx0aWYgKGRhbW9zX3ZhbGlkX3RhcmdldChjLCByLCBzKSlcbm1tL2RhbW9uL2NvcmUuYzoyNjYxOlx0XHRcdGRhbW9zX2FwcGx5X3NjaGVtZShjLCB0LCByLCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0yNjYyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTc5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBBZGRyZXNzIFRyYW5zbGF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIGhvdyBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgYXJlIG1hbmFnZWQgd2l0aGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmRhbWVudGFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuIExldCYjMzk7cyBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBwYWRkci5jYCBhbmQgYHZhZGRyLmNgIHNvdXJjZSBmaWxlcy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHBoeXNpY2FsIGFkZHJlc3MgKFBBKSBhbmQgdmlydHVhbCBhZGRyZXNzIChWQSkgc3BhY2VzIGFyZSBkZWZpbmVkLCBhbmQgaG93IHRoZSBtYXBwaW5ncyBiZXR3ZWVuIHRoZW0gYXJlIGVzdGFibGlzaGVkIGFuZCBtYWludGFpbmVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCBmb3IgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LCBsaWtlIGhvdyB0aGUgcGFnZSB0YWJsZXMgYXJlIG9yZ2FuaXplZCwgYW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYWRkcmVzcyB0cmFuc2xhdGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1hY3JvcyB1c2VkIHRvIGFjY2VzcyBhbmQgbWFuaXB1bGF0ZSBwYWdlIHRhYmxlIGVudHJpZXMsIGFuZCB3aGF0IGxvY2tpbmcgbWVjaGFuaXNtcyBhcmUgZW1wbG95ZWQgZm9yIGNvbmN1cnJlbnQgYWNjZXNzLiBJIGFsc28gaG9wZSB0byBnYWluIGEgYmV0dGVyIGdyYXNwIG9mIG1lbW9yeSBtYW5hZ2VtZW50LCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIG9wZXJhdGlvbnMuIEkgZXhwZWN0IGEgZ29vZCBsb29rIGF0IGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IG1hcHBpbmdzLCBhcyB3ZWxsIGFzIHRoZSBwb3RlbnRpYWwgZm9yIGlzc3VlcyB3aXRoIGFkZHJlc3MgYWxpYXNpbmcgb3IgZnJhZ21lbnRhdGlvbi4gSG9wZWZ1bGx5LCBgcGFkZHIuY2AgcmV2ZWFscyBob3cgdGhlIHBoeXNpY2FsIG1lbW9yeSBpcyByZXByZXNlbnRlZCwgYW5kIGhvdyB0aGUga2VybmVsIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyBtZW1vcnkgY29udHJvbGxlci4gQW5kIHRoZSBgdmFkZHIuY2Agc2hvdWxkIHNob3cgaG93IHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMgYXJlIHN0cnVjdHVyZWQsIGFuZCBob3cgcHJvY2Vzc2VzIGFyZSBpc29sYXRlZCBmcm9tIGVhY2ggb3RoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBkYW1vbl9vcGVyYXRpb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0zMD1zdGF0aWMgREVGSU5FX01VVEVYKGRhbW9uX29wc19sb2NrKTtcbm1tL2RhbW9uL2NvcmUuYzozMTpzdGF0aWMgc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgZGFtb25fcmVnaXN0ZXJlZF9vcHNbTlJfREFNT05fT1BTXTtcbm1tL2RhbW9uL2NvcmUuYy0zMi1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzY9c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0zNy17XG5tbS9kYW1vbi9jb3JlLmM6Mzg6XHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBlbXB0eV9vcHMgPSB7fTtcbm1tL2RhbW9uL2NvcmUuYy0zOS1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxubW0vZGFtb24vY29yZS5jLTczLXtcbi0tXG5tbS9kYW1vbi9wYWRkci5jPTQzNz1zdGF0aWMgaW50IF9faW5pdCBkYW1vbl9wYV9pbml0Y2FsbCh2b2lkKVxubW0vZGFtb24vcGFkZHIuYy00Mzgte1xubW0vZGFtb24vcGFkZHIuYzo0Mzk6XHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7XG5tbS9kYW1vbi9wYWRkci5jLTQ0MC1cdFx0LmlkID0gREFNT05fT1BTX1BBRERSLFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD00MTg9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9vcHNfcmVnaXN0cmF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDIwLVx0c3RydWN0IGRhbW9uX2N0eCAqYyA9IGRhbW9uX25ld19jdHgoKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo0MjE6XHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7LmlkID0gREFNT05fT1BTX1ZBRERSfSwgYmFrO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQyMi1cdGJvb2wgbmVlZF9jbGVhbnVwID0gZmFsc2U7XG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQ0Ni1cdFx0ZGFtb25fcmVnaXN0ZXJlZF9vcHNbREFNT05fT1BTX1ZBRERSXSA9XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NDQ3Olx0XHRcdChzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyl7fTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00NDgtXHR9XG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQ2My1cdFx0XHRkYW1vbl9yZWdpc3RlcmVkX29wc1tEQU1PTl9PUFNfVkFERFJdID1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo0NjQ6XHRcdFx0XHQoc3RydWN0IGRhbW9uX29wZXJhdGlvbnMpe307XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDY1LVx0fVxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9OTQzPXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3ZhX2luaXRjYWxsKHZvaWQpXG5tbS9kYW1vbi92YWRkci5jLTk0NC17XG5tbS9kYW1vbi92YWRkci5jOjk0NTpcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wcyA9IHtcbm1tL2RhbW9uL3ZhZGRyLmMtOTQ2LVx0XHQuaWQgPSBEQU1PTl9PUFNfVkFERFIsXG4tLVxubW0vZGFtb24vdmFkZHIuYy05NTYtXHQvKiBvcHMgZm9yIGZpeGVkIHZpcnR1YWwgYWRkcmVzcyByYW5nZXMgKi9cbm1tL2RhbW9uL3ZhZGRyLmM6OTU3Olx0c3RydWN0IGRhbW9uX29wZXJhdGlvbnMgb3BzX2Z2YWRkciA9IG9wcztcbm1tL2RhbW9uL3ZhZGRyLmMtOTU4LVx0aW50IGVycjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCBzdWl0YWJsZSBmb3IgYSBmaWVsZCBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBZGRyZXNzIFRyYW5zbGF0aW9uIE9wZXJhdGlvbnMqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIGhvdyBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzIHNwYWNlcyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhpcyBzeXN0ZW0uIEkmIzM5O2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AuIE15IGZvY3VzIGlzbiYjMzk7dCBuZWNlc3NhcmlseSBvbiB0aGUgaGlnaC1sZXZlbCBhcmNoaXRlY3R1cmUgYXQgdGhpcyBzdGFnZSwgSSBhbHJlYWR5IGhhdmUgYSBmaXJtIGdyYXNwIG9mIHRoYXQuIEluc3RlYWQsIEkmIzM5O20gemVyb2luZyBpbiBvbiB0aGUgKmltcGxlbWVudGF0aW9uIGRldGFpbHMqLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY2FsbGJhY2tzIGZvciB0aGUgYWRkcmVzcyB0cmFuc2xhdGlvbiBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGFuZCB1c2VkLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25zIGhlcmU6IHRoZSBjb3JlIHJvdXRpbmVzIHJlc3BvbnNpYmxlIGZvciBtYXBwaW5nIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHBoeXNpY2FsIGFkZHJlc3NlcyBhbmQgdmljZS12ZXJzYS4gSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBpbnRyaWNhY2llcyBvZiBwYWdlIHRhYmxlIHdhbGtzLCB0aGUgaGFuZGxpbmcgb2YgZGlmZmVyZW50IG1lbW9yeSByZWdpb25zLCBhbmQgYW55IG9wdGltaXphdGlvbnMgdGhleSYjMzk7dmUgaW1wbGVtZW50ZWQuIFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIG1hbmlwdWxhdGVkPyBBcmUgdGhleSB1c2luZyBhbnkgY2xldmVyIHRyaWNrcyBmb3IgcGVyZm9ybWFuY2Ugb3IgbWVtb3J5IGVmZmljaWVuY3k/IFdoYXQgZXJyb3IgY29uZGl0aW9ucyBhcmUgYmVpbmcgaGFuZGxlZD8gQW5kIGhvdyB0aGV5IGFyZSBhbGwgbGlua2VkIHRvZ2V0aGVyLiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgZXhlY3V0aW9uIHBhdGhzLCB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkIGFuZCBkZWFsbG9jYXRlZCBhcyBwYXJ0IG9mIHRoZSB0cmFuc2xhdGlvbiBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL3BhZGRyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQzMDpcdFx0ZGVmYXVsdDpcbiA0MzE6XHRcdFx0YnJlYWs7XG4gNDMyOlx0XHR9XG4gNDMzOlx0XG4gNDM0Olx0XHRyZXR1cm4gREFNT1NfTUFYX1NDT1JFO1xuIDQzNTpcdH1cbiA0MzY6XHRcbiA0Mzc6XHRzdGF0aWMgaW50IF9faW5pdCBkYW1vbl9wYV9pbml0Y2FsbCh2b2lkKVxuIDQzODpcdHtcbiA0Mzk6XHRcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wcyA9IHtcbiA0NDA6XHRcdFx0LmlkID0gREFNT05fT1BTX1BBRERSLFxuIDQ0MTpcdFx0XHQuaW5pdCA9IE5VTEwsXG4gNDQyOlx0XHRcdC51cGRhdGUgPSBOVUxMLFxuIDQ0MzpcdFx0XHQucHJlcGFyZV9hY2Nlc3NfY2hlY2tzID0gZGFtb25fcGFfcHJlcGFyZV9hY2Nlc3NfY2hlY2tzLFxuIDQ0NDpcdFx0XHQuY2hlY2tfYWNjZXNzZXMgPSBkYW1vbl9wYV9jaGVja19hY2Nlc3NlcyxcbiA0NDU6XHRcdFx0LmFwcGx5X3Byb2JlcyA9IGRhbW9uX3BhX2FwcGx5X3Byb2JlcyxcbiA0NDY6XHRcdFx0LnRhcmdldF92YWxpZCA9IE5VTEwsXG4gNDQ3Olx0XHRcdC5hcHBseV9zY2hlbWUgPSBkYW1vbl9wYV9hcHBseV9zY2hlbWUsXG4gNDQ4Olx0XHRcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fcGFfc2NoZW1lX3Njb3JlLFxuIDQ0OTpcdFx0fTtcbiA0NTA6XHRcbiA0NTE6XHRcdHJldHVybiBkYW1vbl9yZWdpc3Rlcl9vcHMoXHUwMDI2b3BzKTtcbiA0NTI6XHR9XG4gNDUzOlx0XG4gNDU0Olx0c3Vic3lzX2luaXRjYWxsKGRhbW9uX3BhX2luaXRjYWxsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4MzMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IGRlZXAgaW4ga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50LgoKKipEaXZpbmcgaW50byBEQU1PTiYjMzk7cyBQaHlzaWNhbCBBZGRyZXNzIEFwcGxpY2F0aW9uKioKClJpZ2h0LCBsZXQgbWUgcHVsbCB1cCB0aGUgY29kZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGhvdyBEQU1PTiwgc3BlY2lmaWNhbGx5IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFwcGxpY2F0aW9uIHNjaGVtZSAoYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWApLCBhY3R1YWxseSB3b3Jrcy4gVGhhdCYjMzk7cyBnb2luZyB0byBiZSBpbiBgbW0vZGFtb24vcGFkZHIuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgd2hlcmUgREFNT04gdGFrZXMgdGhvc2UgY29sbGVjdGVkIG1vbml0b3JpbmcgcmVzdWx0cyBhbmQsIHByZXN1bWFibHksIGludGVyYWN0cyB3aXRoIHRoZSBhY3R1YWwgcGh5c2ljYWwgbWVtb3J5IG1hcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaWRlbnRpZmllcyB0aGUgcGh5c2ljYWwgcGFnZXMgdG8gYmUgbWFuYWdlZCBhbmQgd2hhdCBhY3Rpb25zIGl0JiMzOTtzIHBlcmZvcm1pbmcgb24gdGhlbS4gSSB3YW50IHRvIHNlZSBpZiB0aGUgaW1wbGVtZW50YXRpb24gbG9naWMgbWVldHMgdGhlIGRlc2lnbiwgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgb3B0aW1pemF0aW9uIGlzc3VlcyBvciBjb25jdXJyZW5jeSBjb25jZXJucy4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBoYW5kbGUgbWVtb3J5IG1hcHBpbmcgdXBkYXRlcywgcGFnZSBmYXVsdCBhbmQgb3RoZXIgaW1wb3J0YW50IG9wZXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vcGFkZHIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzkwOlx0XHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gMzkxOlx0XHRcdHN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuIDM5MjpcdHtcbiAzOTM6XHRcdHVuc2lnbmVkIGxvbmcgYXVuaXQgPSBjdHgtXHUwMDNlYWRkcl91bml0O1xuIDM5NDpcdFxuIDM5NTpcdFx0c3dpdGNoIChzY2hlbWUtXHUwMDNlYWN0aW9uKSB7XG4gMzk2Olx0XHRjYXNlIERBTU9TX1BBR0VPVVQ6XG4gMzk3Olx0XHRcdHJldHVybiBkYW1vbl9wYV9wYWdlb3V0KHIsIGF1bml0LCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIDM5ODpcdFx0Y2FzZSBEQU1PU19MUlVfUFJJTzpcbiAzOTk6XHRcdFx0cmV0dXJuIGRhbW9uX3BhX2FjdGl2YXRlX3BhZ2VzKHIsIGF1bml0LCBzY2hlbWUsXG4gNDAwOlx0XHRcdFx0XHRzel9maWx0ZXJfcGFzc2VkKTtcbiA0MDE6XHRcdGNhc2UgREFNT1NfTFJVX0RFUFJJTzpcbiA0MDI6XHRcdFx0cmV0dXJuIGRhbW9uX3BhX2RlYWN0aXZhdGVfcGFnZXMociwgYXVuaXQsIHNjaGVtZSxcbiA0MDM6XHRcdFx0XHRcdHN6X2ZpbHRlcl9wYXNzZWQpO1xuIDQwNDpcdFx0Y2FzZSBEQU1PU19NSUdSQVRFX0hPVDpcbiA0MDU6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxuIDQwNjpcdFx0XHRyZXR1cm4gZGFtb25fcGFfbWlncmF0ZShyLCBhdW5pdCwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcbiA0MDc6XHRcdGNhc2UgREFNT1NfU1RBVDpcbiA0MDg6XHRcdFx0cmV0dXJuIGRhbW9uX3BhX3N0YXQociwgYXVuaXQsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gNDA5Olx0XHRkZWZhdWx0OlxuIDQxMDpcdFx0XHQvKiBEQU1PUyBhY3Rpb25zIHRoYXQgbm90IHlldCBzdXBwb3J0ZWQgYnkgJiMzOTtwYWRkciYjMzk7LiAqL1xuIDQxMTpcdFx0XHRicmVhaztcbiA0MTI6XHRcdH1cbiA0MTM6XHRcdHJldHVybiAwO1xuIDQxNDpcdH1cbiA0MTU6XHRcbiA0MTY6XHRzdGF0aWMgaW50IGRhbW9uX3BhX3NjaGVtZV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjb250ZXh0LFxuIDQxNzpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnNjaGVtZSlcbiA0MTg6XHR7XG4gNDE5Olx0XHRzd2l0Y2ggKHNjaGVtZS1cdTAwM2VhY3Rpb24pIHtcbiA0MjA6XHRcdGNhc2UgREFNT1NfUEFHRU9VVDpcbiA0MjE6XHRcdFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA0MjI6XHRcdGNhc2UgREFNT1NfTFJVX1BSSU86XG4gNDIzOlx0XHRcdHJldHVybiBkYW1vbl9ob3Rfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA0MjQ6XHRcdGNhc2UgREFNT1NfTFJVX0RFUFJJTzpcbiA0MjU6XHRcdFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA0MjY6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XG4gNDI3Olx0XHRcdHJldHVybiBkYW1vbl9ob3Rfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA0Mjg6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxuIDQyOTpcdFx0XHRyZXR1cm4gZGFtb25fY29sZF9zY29yZShjb250ZXh0LCByLCBzY2hlbWUpO1xuIDQzMDpcdFx0ZGVmYXVsdDpcbiA0MzE6XHRcdFx0YnJlYWs7XG4gNDMyOlx0XHR9XG4gNDMzOlx0XG4gNDM0Olx0XHRyZXR1cm4gREFNT1NfTUFYX1NDT1JFO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgyNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBWaXJ0dWFsIEFkZHJlc3MgTGFuZHNjYXBlKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBtbS9kYW1vbi92YWRkci5jYC4gVGhpcyBzdWdnZXN0cyBJJiMzOTttIGFib3V0IHRvIHNjcnV0aW5pemUgdGhlIHZpcnR1YWwgYWRkcmVzcy1yZWxhdGVkIGNvZGUgd2l0aGluIERBTU9OIOKAkyB0aGUgRGF0YSBBY2Nlc3MgTU9OaXRvci4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGxpa2VseSBsb29raW5nIGZvciBzb21ldGhpbmcgc3BlY2lmaWMsIG9yIHBlcmhhcHMgYWltaW5nIGZvciBhIGdlbmVyYWwgdW5kZXJzdGFuZGluZyBvZiBob3cgREFNT04gaW50ZXJhY3RzIHdpdGggdmlydHVhbCBtZW1vcnkgc3BhY2VzLiBJIGNvdWxkIGJlIGludmVzdGlnYXRpbmcgaG93IGl0IGlkZW50aWZpZXMsIHRyYWNrcywgYW5kIHBvdGVudGlhbGx5IG1hbmlwdWxhdGVzIHZpcnR1YWwgYWRkcmVzc2VzIGZvciBpdHMgZGF0YSBtb25pdG9yaW5nIGFuZCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcy4gSSYjMzk7bSBwcm9iYWJseSBpbnRlcmVzdGVkIGluIGRldGFpbHMgYWJvdXQgaXRzIGhhbmRsaW5nIG9mIGFkZHJlc3MgdHJhbnNsYXRpb24sIHBhZ2UgZmF1bHRzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBwYWdlIHRhYmxlIHN0cnVjdHVyZXMuIFBlcmhhcHMgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIHBhdGggYSB2aXJ0dWFsIGFkZHJlc3MgdGFrZXMgdGhyb3VnaCBEQU1PTiYjMzk7cyBtb25pdG9yaW5nIHByb2Nlc3MsIGZyb20gaW5pdGlhbCBhY2Nlc3MgdG8gYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIHRyaWdnZXJlZC4gSSBleHBlY3QgdG8gc2VlIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyBoYW5kbGluZyB0aGluZ3MgbGlrZSBhZGRyZXNzIHJhbmdlcywgcmVnaW9ucywgYW5kIG1heWJlIGV2ZW4gY2FjaGUgbGluZXMsIGFsbCBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50LiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIERBTU9OJiMzOTtzIGFwcHJvYWNoIGlzIGVmZmljaWVudCwgYWNjdXJhdGUsIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgZXhjZXNzaXZlIG92ZXJoZWFkLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9mIERBTU9OJiMzOTtzIHZpcnR1YWwgYWRkcmVzcyBtYW5pcHVsYXRpb24gbGl2ZXMsIHNvIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQga2V5IHRvIGl0cyBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkwMDpcdFx0XHRicmVhaztcbiA5MDE6XHRcdGNhc2UgREFNT1NfSFVHRVBBR0U6XG4gOTAyOlx0XHRcdG1hZHZfYWN0aW9uID0gTUFEVl9IVUdFUEFHRTtcbiA5MDM6XHRcdFx0YnJlYWs7XG4gOTA0Olx0XHRjYXNlIERBTU9TX05PSFVHRVBBR0U6XG4gOTA1Olx0XHRcdG1hZHZfYWN0aW9uID0gTUFEVl9OT0hVR0VQQUdFO1xuIDkwNjpcdFx0XHRicmVhaztcbiA5MDc6XHRcdGNhc2UgREFNT1NfQ09MTEFQU0U6XG4gOTA4Olx0XHRcdG1hZHZfYWN0aW9uID0gTUFEVl9DT0xMQVBTRTtcbiA5MDk6XHRcdFx0YnJlYWs7XG4gOTEwOlx0XHRjYXNlIERBTU9TX01JR1JBVEVfSE9UOlxuIDkxMTpcdFx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XG4gOTEyOlx0XHRcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gOTEzOlx0XHRjYXNlIERBTU9TX1NUQVQ6XG4gOTE0Olx0XHRcdHJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gOTE1Olx0XHRkZWZhdWx0OlxuIDkxNjpcdFx0XHQvKlxuIDkxNzpcdFx0XHQgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICYjMzk7dmFkZHImIzM5Oy5cbiA5MTg6XHRcdFx0ICovXG4gOTE5Olx0XHRcdHJldHVybiAwO1xuIDkyMDpcdFx0fVxuIDkyMTpcdFxuIDkyMjpcdFx0cmV0dXJuIGRhbW9zX21hZHZpc2UodCwgciwgbWFkdl9hY3Rpb24pO1xuIDkyMzpcdH1cbiA5MjQ6XHRcbiA5MjU6XHRzdGF0aWMgaW50IGRhbW9uX3ZhX3NjaGVtZV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjb250ZXh0LFxuIDkyNjpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnNjaGVtZSlcbiA5Mjc6XHR7XG4gOTI4Olx0XG4gOTI5Olx0XHRzd2l0Y2ggKHNjaGVtZS1cdTAwM2VhY3Rpb24pIHtcbiA5MzA6XHRcdGNhc2UgREFNT1NfUEFHRU9VVDpcbiA5MzE6XHRcdFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA5MzI6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XG4gOTMzOlx0XHRcdHJldHVybiBkYW1vbl9ob3Rfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA5MzQ6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxuIDkzNTpcdFx0XHRyZXR1cm4gZGFtb25fY29sZF9zY29yZShjb250ZXh0LCByLCBzY2hlbWUpO1xuIDkzNjpcdFx0ZGVmYXVsdDpcbiA5Mzc6XHRcdFx0YnJlYWs7XG4gOTM4Olx0XHR9XG4gOTM5Olx0XG4gOTQwOlx0XHRyZXR1cm4gREFNT1NfTUFYX1NDT1JFO1xuIDk0MTpcdH1cbiA5NDI6XHRcbiA5NDM6XHRzdGF0aWMgaW50IF9faW5pdCBkYW1vbl92YV9pbml0Y2FsbCh2b2lkKVxuIDk0NDpcdHtcbiA5NDU6XHRcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wcyA9IHtcbiA5NDY6XHRcdFx0LmlkID0gREFNT05fT1BTX1ZBRERSLFxuIDk0NzpcdFx0XHQuaW5pdCA9IGRhbW9uX3ZhX2luaXQsXG4gOTQ4Olx0XHRcdC51cGRhdGUgPSBkYW1vbl92YV91cGRhdGUsXG4gOTQ5Olx0XHRcdC5wcmVwYXJlX2FjY2Vzc19jaGVja3MgPSBkYW1vbl92YV9wcmVwYXJlX2FjY2Vzc19jaGVja3MsXG4gOTUwOlx0XHRcdC5jaGVja19hY2Nlc3NlcyA9IGRhbW9uX3ZhX2NoZWNrX2FjY2Vzc2VzLFxuIDk1MTpcdFx0XHQudGFyZ2V0X3ZhbGlkID0gZGFtb25fdmFfdGFyZ2V0X3ZhbGlkLFxuIDk1MjpcdFx0XHQuY2xlYW51cF90YXJnZXQgPSBkYW1vbl92YV9jbGVhbnVwX3RhcmdldCxcbiA5NTM6XHRcdFx0LmFwcGx5X3NjaGVtZSA9IGRhbW9uX3ZhX2FwcGx5X3NjaGVtZSxcbiA5NTQ6XHRcdFx0LmdldF9zY2hlbWVfc2NvcmUgPSBkYW1vbl92YV9zY2hlbWVfc2NvcmUsXG4gOTU1Olx0XHR9O1xuIDk1NjpcdFx0Lyogb3BzIGZvciBmaXhlZCB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2VzICovXG4gOTU3Olx0XHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHNfZnZhZGRyID0gb3BzO1xuIDk1ODpcdFx0aW50IGVycjtcbiA5NTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQwNTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdW5kZXJzdGFuZGluZyBob3cgREFNT1Mgc2NoZW1lcyBhcmUgaW5pdGlhdGVkIGZyb20gdGhlIHVzZXIgc3BhY2UgdmlhIHN5c2ZzLCBhcyBpZiBpdCYjMzk7cyBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIFVzZXItU3BhY2UgSW50ZXJhY3Rpb24gd2l0aCBEQU1PTiBTY2hlbWVzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gaG93IHVzZXJzcGFjZSBwcm9ncmFtcyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBEQU1PTiBzY2hlbWVzLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgbGlmZWN5Y2xlIG9mIGEgREFNT1Mgc2NoZW1lIOKAkyBmcm9tIGl0cyBjb25maWd1cmF0aW9uLCBhbGwgdGhlIHdheSB0byBpdHMgaW5pdGlhdGlvbiBhbmQgc3Vic2VxdWVudCBydW5uaW5nIHN0YXRlLiBUaGUga2V5IGhlcmUgaXMgdG8gc2VlIHdoYXQgc3lzZnMgZW50cmllcyBhcmUgaW52b2x2ZWQuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyBhbmQgZmlndXJlIG91dCB3aGljaCBzeXNmcyBhdHRyaWJ1dGVzIGFyZSB3cml0dGVuIHRvLCBhbmQgd2hhdCB0cmlnZ2VycyB0aGUgYWN0dWFsIGxhdW5jaCBvciBzdGFydCBvZiB0aGUgREFNT1Mgc2NoZW1lLiBXaGVyZSBhcmUgdGhlIHBhcmFtZXRlcnMgcGFzc2VkPyBIb3cgYXJlIHRoZSBtb25pdG9yaW5nIHRhcmdldHMgZGVmaW5lZCwgYW5kIGFyZSB0aG9zZSBkeW5hbWljPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNwZWNpZmljIHN5c2ZzIGZpbGVzIHJlbGF0ZWQgdG8gc2NoZW1lIGNyZWF0aW9uLCBlbmFibGluZywgYW5kIHBvdGVudGlhbGx5IGZvciBjb250cm9sbGluZyB2YXJpb3VzIG9wZXJhdGlvbmFsIGFzcGVjdHMuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHNvdXJjZSBjb2RlIHRvIHRyYWNlIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3N5c2ZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTA5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA6REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTEtXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxNjpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTctXHRcdHVuc2lnbmVkIGxvbmcgbWluLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE5LXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjIwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGttYWxsb2Nfb2JqKCpyYW5nZSk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0yMS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz0zMT1zdGF0aWMgc3NpemVfdCBtaW5fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTMzLXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjM0Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MzU6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTM2LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTQwPXN0YXRpYyBzc2l6ZV90IG1pbl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTQyLXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjQzOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NDQ6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTQ1LVx0dW5zaWduZWQgbG9uZyBtaW47XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9NTY9c3RhdGljIHNzaXplX3QgbWF4X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy01OC17XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo1OTpcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqcmFuZ2UgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjYwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy02MS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy02Ny17XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo2ODpcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqcmFuZ2UgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjY5Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy03MC1cdHVuc2lnbmVkIGxvbmcgbWF4O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODE6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODIte1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODM6XHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKSk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04NC19XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04NS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjg2OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfdWxfcmFuZ2VfbWluX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODctXHRcdF9fQVRUUl9SV19NT0RFKG1pbiwgMDYwMCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04OC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjg5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfdWxfcmFuZ2VfbWF4X2F0dHIgPVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTAtXHRcdF9fQVRUUl9SV19NT0RFKG1heCwgMDYwMCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05MS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjkyOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hdHRyc1tdID0ge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTM6XHRcdTAwMjZkYW1vbl9zeXNmc191bF9yYW5nZV9taW5fYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTQ6XHRcdTAwMjZkYW1vbl9zeXNmc191bF9yYW5nZV9tYXhfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTUtXHROVUxMLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTYtfTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk3OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfdWxfcmFuZ2UpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTgtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo5OTpjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlID0ge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTAwOlx0LnJlbGVhc2UgPSBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTAxLVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTAyOlx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfZ3JvdXBzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTAzLX07XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTA1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA2OnN0YXRpYyBib29sIGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTA3LVx0XHRjaGFyICptZW1jZ19wYXRoX2J1ZiwgY2hhciAqcGF0aClcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMTc6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZClcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExOC17XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTM0LVx0XHRcdGNvbnRpbnVlO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTM1Olx0XHRpZiAoZGFtb25fc3lzZnNfbWVtY2dfcGF0aF9lcShtZW1jZywgcGF0aCwgbWVtY2dfcGF0aCkpIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEzNi1cdFx0XHQqaWQgPSBtZW1fY2dyb3VwX2lkKG1lbWNnKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC04LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6OTpleHRlcm4gc3RydWN0IG11dGV4IGRhbW9uX3N5c2ZzX2xvY2s7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjExOnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTgtXHRcdHVuc2lnbmVkIGxvbmcgbWluLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTktXHRcdHVuc2lnbmVkIGxvbmcgbWF4KTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjIwOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iaik7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yMS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjIyOmV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjMtXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyODpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yOS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozMDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKipzY2hlbWVzX2Fycjtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMxLVx0aW50IG5yO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMzLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcyk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM3OmV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZXNfa3R5cGU7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zOC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM5OmludCBkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0MDpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDEtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Mjp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfdXBkYXRlX3N0YXRzKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDM6XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDQtXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQ2OnZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQ3LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MTppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTI6XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTQ6aW50IGRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01NS1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD01Nz12b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTg6XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTktXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTYwOnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjEtXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnJlZ2lvbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2Mi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTYzOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnN5c2ZzX3JlZ2lvbiA9IGttYWxsb2Nfb2JqKCpzeXNmc19yZWdpb24pO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2NC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTc2PXN0YXRpYyBpbnQgZGFtb3Nfc3lzZnNfcmVnaW9uX2FkZF9kaXJzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NzpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzgtXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjAyPXN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3JlZ2lvbl9ybV9kaXJzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIwMzpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbilcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDQte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMDk9c3RhdGljIHNzaXplX3Qgc3RhcnRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIxMjpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTM6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIxNC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjE4PXN0YXRpYyBzc2l6ZV90IGVuZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyMC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIxOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIyMjpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIzLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMjc9c3RhdGljIHNzaXplX3QgbnJfYWNjZXNzZXNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI5LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMzA6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjMxOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMzItXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIzNj1zdGF0aWMgc3NpemVfdCBhZ2Vfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMzgte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzOTpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDA6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI0MS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjQ1PXN0YXRpYyBzc2l6ZV90IHN6X2ZpbHRlcl9wYXNzZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjQ3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDg6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjQ5Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTAtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI1My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTQ6c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI1NS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjU2Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI1NzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjU4LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjYyOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9zdGFydF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjMtXHRcdF9fQVRUUl9ST19NT0RFKHN0YXJ0LCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9lbmRfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY2LVx0XHRfX0FUVFJfUk9fTU9ERShlbmQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX25yX2FjY2Vzc2VzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2OS1cdFx0X19BVFRSX1JPX01PREUobnJfYWNjZXNzZXMsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3MC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzE6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FnZV9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzItXHRcdF9fQVRUUl9ST19NT0RFKGFnZSwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjczLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3NDpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3pfZmlsdGVyX3Bhc3NlZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzUtXHRcdF9fQVRUUl9ST19NT0RFKHN6X2ZpbHRlcl9wYXNzZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzc6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzg6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzk6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2VuZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjgwOlx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9ucl9hY2Nlc3Nlc19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjgxOlx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hZ2VfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MjpcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3pfZmlsdGVyX3Bhc3NlZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjgzLVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODQtfTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODU6QVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fa3R5cGUgPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg4Olx0LnJlbGVhc2UgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjg5LVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5MDpcdC5kZWZhdWx0X2dyb3VwcyA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fZ3JvdXBzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5MS19O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjk3OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk4LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzAzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNDpzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDU6ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDYte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNzpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqcmVnaW9ucyA9IGttYWxsb2Nfb2JqKCpyZWdpb25zKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTMxOT1zdGF0aWMgc3NpemVfdCB0b3RhbF9ieXRlc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMjEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyMjpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqcmVnaW9ucyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyMzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMyNC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzI3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyODpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19ybV9kaXJzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyOTpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzMxOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnIsICpuZXh0O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0MjpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM0My17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQ0Olx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucywga29iaikpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM0NS19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQ2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0NzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3RvdGFsX2J5dGVzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM0OC1cdFx0X19BVFRSX1JPX01PREUodG90YWxfYnl0ZXMsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM0OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTA6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX2F0dHJzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzUxOlx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfdG90YWxfYnl0ZXNfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1Mi1cdE5VTEwsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzUzLX07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU0OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTY6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfa3R5cGUgPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU3Olx0LnJlbGVhc2UgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1OC1cdC5zeXNmc19vcHMgPSBcdTAwMjZrb2JqX3N5c2ZzX29wcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTk6XHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19ncm91cHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzYwLX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNjY6c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNjctXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNzctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzc4OnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKmRhbW9uX3N5c2ZzX3N0YXRzX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzc5LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozODA6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODEtfVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zODM9c3RhdGljIHNzaXplX3QgbnJfdHJpZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NjpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozODc6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTM5Mj1zdGF0aWMgc3NpemVfdCBzel90cmllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM5NC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzk1Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM5NjpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM5Ny1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDAxPXN0YXRpYyBzc2l6ZV90IG5yX2FwcGxpZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDAzLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MDQ6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA1Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDA2LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00MTA9c3RhdGljIHNzaXplX3Qgc3pfYXBwbGllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MTIte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxMzpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MTQ6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MTUtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQxOT1zdGF0aWMgc3NpemVfdCBzel9vcHNfZmlsdGVyX3Bhc3NlZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MjEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQyMjpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MjM6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MjQtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQyOD1zdGF0aWMgc3NpemVfdCBxdF9leGNlZWRzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzMC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDMxOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMjpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzMy1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDM3PXN0YXRpYyBzc2l6ZV90IG5yX3NuYXBzaG90c19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00Mzkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NDE6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDItXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQ0Nj1zdGF0aWMgc3NpemVfdCBtYXhfbnJfc25hcHNob3RzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ0OC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDQ5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1MDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ1MS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDU1PXN0YXRpYyBzc2l6ZV90IG1heF9ucl9zbmFwc2hvdHNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ1Ny17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDU4Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1OTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ2MC1cdHVuc2lnbmVkIGxvbmcgbWF4X25yX3NuYXBzaG90cywgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZtYXhfbnJfc25hcHNob3RzKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDY3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ2ODpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zdGF0c19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ2OS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDcwOlx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaikpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3MS19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDcyLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3MzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3RyaWVkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3NC1cdFx0X19BVFRSX1JPX01PREUobnJfdHJpZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NzY6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19zel90cmllZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzctXHRcdF9fQVRUUl9ST19NT0RFKHN6X3RyaWVkLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDc5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbnJfYXBwbGllZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00ODAtXHRcdF9fQVRUUl9ST19NT0RFKG5yX2FwcGxpZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4MS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19zel9hcHBsaWVkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4My1cdFx0X19BVFRSX1JPX01PREUoc3pfYXBwbGllZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg0LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ4NTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X29wc19maWx0ZXJfcGFzc2VkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ni1cdFx0X19BVFRSX1JPX01PREUoc3pfb3BzX2ZpbHRlcl9wYXNzZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19xdF9leGNlZWRzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4OS1cdFx0X19BVFRSX1JPX01PREUocXRfZXhjZWVkcywgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDkwLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3NuYXBzaG90c19hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTItXHRcdF9fQVRUUl9ST19NT0RFKG5yX3NuYXBzaG90cywgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDkzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5NDpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX21heF9ucl9zbmFwc2hvdHNfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDk1LVx0XHRfX0FUVFJfUldfTU9ERShtYXhfbnJfc25hcHNob3RzLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk3OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zdGF0c19hdHRyc1tdID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5ODpcdFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX25yX3RyaWVkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0OTk6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19zel90cmllZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAwOlx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfbnJfYXBwbGllZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAxOlx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfc3pfYXBwbGllZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAyOlx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfc3pfb3BzX2ZpbHRlcl9wYXNzZWRfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwMzpcdFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3F0X2V4Y2VlZHNfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwNDpcdFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX25yX3NuYXBzaG90c19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTA1Olx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfbWF4X25yX3NuYXBzaG90c19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA2LVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDctfTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDg6QVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc19zdGF0cyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMDpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zdGF0c19rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTE6XHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3N0YXRzX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTEyLVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMzpcdC5kZWZhdWx0X2dyb3VwcyA9IGRhbW9uX3N5c2ZzX3N0YXRzX2dyb3Vwcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MTQtfTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUyOC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0MC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDE6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0Mi1cdFx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGxheWVyKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0My17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ0Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlcjtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NDUtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ2Olx0ZmlsdGVyID0ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0Ny1cdGlmIChmaWx0ZXIpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTU5Mz1zdGF0aWMgc3NpemVfdCB0eXBlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU5NS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTk2Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU5NzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTk4LVx0aW50IGk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTYyNz1zdGF0aWMgc3NpemVfdCB0eXBlX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02Mjkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzMDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MzE6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYzMi1cdHNzaXplX3QgcmV0ID0gLUVJTlZBTDtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjUyPXN0YXRpYyBzc2l6ZV90IG1hdGNoaW5nX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY1NC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjU1Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY1NjpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjU3LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NjE9c3RhdGljIHNzaXplX3QgbWF0Y2hpbmdfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2My17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjY0Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjY2LVx0Ym9vbCBtYXRjaGluZztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Njc2PXN0YXRpYyBzc2l6ZV90IGFsbG93X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY3OC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njc5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY4MDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjgxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02ODU9c3RhdGljIHNzaXplX3QgYWxsb3dfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY4Ny17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg4Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY4OTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjkwLVx0Ym9vbCBhbGxvdztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzAwPXN0YXRpYyBzc2l6ZV90IG1lbWNnX3BhdGhfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzAyLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDM6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzA0Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDUtXHRpbnQgbGVuO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcwNi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDc6XHRpZiAoIW11dGV4X3RyeWxvY2soXHUwMDI2ZGFtb25fc3lzZnNfbG9jaykpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA4LVx0XHRyZXR1cm4gLUVCVVNZO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MTAtXHRcdFx0ZmlsdGVyLVx1MDAzZW1lbWNnX3BhdGggPyBmaWx0ZXItXHUwMDNlbWVtY2dfcGF0aCA6IFwmIzM0O1wmIzM0Oyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzExOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRhbW9uX3N5c2ZzX2xvY2spO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxMi1cdHJldHVybiBsZW47XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTcxNT1zdGF0aWMgc3NpemVfdCBtZW1jZ19wYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MTcte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxODpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MTk6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyMC1cdGNoYXIgKnBhdGggPSBrbWFsbG9jX2FycmF5KHNpemVfYWRkKGNvdW50LCAxKSwgc2l6ZW9mKCpwYXRoKSxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzI2LVx0c3Ryc2NweShwYXRoLCBidWYsIGNvdW50ICYjNDM7IDEpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcyNzpcdGlmICghbXV0ZXhfdHJ5bG9jayhcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSkge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyOC1cdFx0a2ZyZWUocGF0aCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTczMi1cdGZpbHRlci1cdTAwM2VtZW1jZ19wYXRoID0gcGF0aDtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MzM6XHRtdXRleF91bmxvY2soXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzM0LVx0cmV0dXJuIGNvdW50O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03Mzc9c3RhdGljIHNzaXplX3QgYWRkcl9zdGFydF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03Mzkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc0MDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NDE6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc0Mi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzQ2PXN0YXRpYyBzc2l6ZV90IGFkZHJfc3RhcnRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc0OC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQ5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc1MDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzUxLVx0aW50IGVyciA9IGtzdHJ0b3VsKGJ1ZiwgMCwgXHUwMDI2ZmlsdGVyLVx1MDAzZWFkZHJfcmFuZ2Uuc3RhcnQpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03NTY9c3RhdGljIHNzaXplX3QgYWRkcl9lbmRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzU4LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NTk6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzYwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NjEtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTc2NT1zdGF0aWMgc3NpemVfdCBhZGRyX2VuZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzY3LXtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE2NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEZhaWx1cmUgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0IGhhbmRsZXMgZmFpbHVyZXMgaW4gYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAgd2l0aGluIHRoZSBgZGFtb3NfYXBwbHlfc2NoZW1lYCBmdW5jdGlvbi4gSSBzZWUgdGhlIGtleSBjaGFuZ2UgaXMgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyNjAwLiBUaGUgb3JpZ2luYWwgY29kZSB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgLCBidXQgbm93IHRoZXJlJiMzOTtzIGFuIGBpZmAgc3RhdGVtZW50IGNoZWNraW5nIGl0cyByZXR1cm4gdmFsdWUuIEEgbm9uLXplcm8gcmV0dXJuIHZhbHVlLCBpbmRpY2F0aW5nIGZhaWx1cmUsIHdpbGwgbm93IHRyaWdnZXIgYSBgZ290byB1cGRhdGVfc3RhdGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2guIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZmFpbHVyZSBwYXRoLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGZhaWx1cmUgc2NlbmFyaW9zIG9mIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGFuZCBob3cgYXJlIHRoZXkgYmVpbmcgYWRkcmVzc2VkPyBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIHN0YXRpc3RpY3MgdXBkYXRlcyBhbmQgb3ZlcmFsbCBzY2hlbWUgYXBwbGljYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBtb2RpZmljYXRpb25zIHRoYXQgdGhpcyBpcyBsaW5rZWQgdG8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjU5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNTkwOlx0XHRcdH1cbjI1OTE6XHRcdFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHRpdGVyLCBjKSB7XG4yNTkyOlx0XHRcdFx0aWYgKHRpdGVyID09IHQpXG4yNTkzOlx0XHRcdFx0XHRicmVhaztcbjI1OTQ6XHRcdFx0XHR0aWR4JiM0MzsmIzQzOztcbjI1OTU6XHRcdFx0fVxuMjU5NjpcdFx0XHRucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX212c3VtKHIsIGMpO1xuMjU5NzpcdFx0XHRkb190cmFjZSA9IHRydWU7XG4yNTk4Olx0XHR9XG4yNTk5Olx0XG4yNjAwOlx0XHRpZiAoYy1cdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XG4yNjAxOlx0XHRcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFx1MDAyNlx1MDAyNlxuMjYwMjpcdFx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOyBzeiBcdTAwM2UgcXVvdGEtXHUwMDNlZXN6KSB7XG4yNjAzOlx0XHRcdFx0c3ogPSBBTElHTl9ET1dOKHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3osXG4yNjA0Olx0XHRcdFx0XHRcdGMtXHUwMDNlbWluX3JlZ2lvbl9zeik7XG4yNjA1Olx0XHRcdFx0aWYgKCFzeilcbjI2MDY6XHRcdFx0XHRcdGdvdG8gdXBkYXRlX3N0YXQ7XG4yNjA3Olx0XHRcdFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXG4yNjA4Olx0XHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuMjYwOTpcdFx0XHR9XG4yNjEwOlx0XHRcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXG4yNjExOlx0XHRcdFx0cmV0dXJuO1xuMjYxMjpcdFx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2YmVnaW4pO1xuMjYxMzpcdFx0XHR0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHkoY2lkeCwgc2lkeCwgdGlkeCwgciwgbnJfYWNjZXNzZXMsXG4yNjE0Olx0XHRcdFx0XHRkYW1vbl9ucl9yZWdpb25zKHQpLCBkb190cmFjZSk7XG4yNjE1Olx0XHRcdHN6X2FwcGxpZWQgPSBjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcbjI2MTY6XHRcdFx0XHRcdFx1MDAyNnN6X29wc19maWx0ZXJfcGFzc2VkKTtcbjI2MTc6XHRcdFx0ZGFtb3Nfd2Fsa19jYWxsX3dhbGsoYywgdCwgciwgcywgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xuMjYxODpcdFx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2ZW5kKTtcbjI2MTk6XHRcdFx0cXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucyAmIzQzOz0gdGltZXNwZWM2NF90b19ucyhcdTAwMjZlbmQpIC1cbjI2MjA6XHRcdFx0XHR0aW1lc3BlYzY0X3RvX25zKFx1MDAyNmJlZ2luKTtcbjI2MjE6XHRcdFx0ZGFtb3NfY2hhcmdlX3F1b3RhKHF1b3RhLCBzeiwgc3pfYXBwbGllZCk7XG4yNjIyOlx0XHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKSB7XG4yNjIzOlx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gdDtcbjI2MjQ6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG4yNjI1Olx0XHRcdH1cbjI2MjY6XHRcdH1cbjI2Mjc6XHRcdGlmIChzLVx1MDAzZWFjdGlvbiAhPSBEQU1PU19TVEFUKVxuMjYyODpcdFx0XHRyLVx1MDAzZWFnZSA9IDA7XG4yNjI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjgxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIFJlY2VudCBEQU1PTiBDb3JlIE1vZGlmaWNhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgYmFjayBpbnRvIHRoZSByZWNlbnQgY2hhbmdlcyB3aXRoaW4gdGhlIERBTU9OIGNvcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcsIHNvIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiBgbW0vZGFtb24vY29yZS5jYCB0aGF0IHdlcmUgdG91Y2hlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCByZWZyZXNoIG15IG1lbW9yeSBvbiBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBhbmQgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYC4gS25vd2luZyB0aGUgY29udGV4dCBhbmQgaW50ZW50IG9mIHRoZSBtb2RpZmljYXRpb25zIHRoZXJlIGlzIGNydWNpYWwuCgpUaGVuLCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBsb2dpYyBzdXJyb3VuZGluZyB0aG9zZSBmdW5jdGlvbnMgaW4gdGhlIGJyb2FkZXIgY29udGV4dCwgSSB0aGluayBJJiMzOTtsbCByZS1yZWFkIHRoZSBjb2RlIGFyb3VuZCBsaW5lcyAyODAwIHRvIDMwMjAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIEhvcGVmdWxseSwgdGhhdCB3aWxsIHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBhbmQgaG93IHRoZSBwaWVjZXMgZml0IHRvZ2V0aGVyLiBJIHdhbnQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgaXMgY29tcGxldGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyODAwOlx0XHRfX2tlcm5lbF91bG9uZ190IG51bWVyYXRvcjtcbjI4MDE6XHRcbjI4MDI6XHRcdGlmIChpbnZhbGlkX21lbV9ub2RlKGdvYWwtXHUwMDNlbmlkKSkge1xuMjgwMzpcdFx0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcbjI4MDQ6XHRcdFx0XHRyZXR1cm4gMDtcbjI4MDU6XHRcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqL1xuMjgwNjpcdFx0XHRcdHJldHVybiAxMDAwMDtcbjI4MDc6XHRcdH1cbjI4MDg6XHRcbjI4MDk6XHRcdHNpX21lbWluZm9fbm9kZShcdTAwMjZpLCBnb2FsLVx1MDAzZW5pZCk7XG4yODEwOlx0XHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcdTAwM2MgaS5mcmVlcmFtKSB7XG4yODExOlx0XHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxuMjgxMjpcdFx0XHRcdHJldHVybiAxMDAwMDtcbjI4MTM6XHRcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqL1xuMjgxNDpcdFx0XHRcdHJldHVybiAwO1xuMjgxNTpcdFx0fVxuMjgxNjpcdFxuMjgxNzpcdFx0aWYgKGdvYWwtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlApXG4yODE4Olx0XHRcdG51bWVyYXRvciA9IGkudG90YWxyYW0gLSBpLmZyZWVyYW07XG4yODE5Olx0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQICovXG4yODIwOlx0XHRcdG51bWVyYXRvciA9IGkuZnJlZXJhbTtcbjI4MjE6XHRcdHJldHVybiBtdWx0X2ZyYWMobnVtZXJhdG9yLCAxMDAwMCwgaS50b3RhbHJhbSk7XG4yODIyOlx0fVxuMjgyMzpcdFxuMjgyNDpcdHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXG4yODI1Olx0XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxuMjgyNjpcdHtcbjI4Mjc6XHRcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcbjI4Mjg6XHRcdHN0cnVjdCBscnV2ZWMgKmxydXZlYztcbjI4Mjk6XHRcdHVuc2lnbmVkIGxvbmcgdXNlZF9wYWdlcywgbnVtZXJhdG9yO1xuMjgzMDpcdFx0c3RydWN0IHN5c2luZm8gaTtcbjI4MzE6XHRcbjI4MzI6XHRcdGlmIChpbnZhbGlkX21lbV9ub2RlKGdvYWwtXHUwMDNlbmlkKSkge1xuMjgzMzpcdFx0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuMjgzNDpcdFx0XHRcdHJldHVybiAwO1xuMjgzNTpcdFx0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cbjI4MzY6XHRcdFx0XHRyZXR1cm4gMTAwMDA7XG4yODM3Olx0XHR9XG4yODM4Olx0XG4yODM5Olx0XHRtZW1jZyA9IG1lbV9jZ3JvdXBfZ2V0X2Zyb21faWQoZ29hbC1cdTAwM2VtZW1jZ19pZCk7XG4yODQwOlx0XHRpZiAoIW1lbWNnKSB7XG4yODQxOlx0XHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXG4yODQyOlx0XHRcdFx0cmV0dXJuIDA7XG4yODQzOlx0XHRcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCAqL1xuMjg0NDpcdFx0XHRcdHJldHVybiAxMDAwMDtcbjI4NDU6XHRcdH1cbjI4NDY6XHRcbjI4NDc6XHRcdG1lbV9jZ3JvdXBfZmx1c2hfc3RhdHMobWVtY2cpO1xuMjg0ODpcdFx0bHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIE5PREVfREFUQShnb2FsLVx1MDAzZW5pZCkpO1xuMjg0OTpcdFx0dXNlZF9wYWdlcyA9IGxydXZlY19wYWdlX3N0YXRlKGxydXZlYywgTlJfQUNUSVZFX0FOT04pO1xuMjg1MDpcdFx0dXNlZF9wYWdlcyAmIzQzOz0gbHJ1dmVjX3BhZ2Vfc3RhdGUobHJ1dmVjLCBOUl9JTkFDVElWRV9BTk9OKTtcbjI4NTE6XHRcdHVzZWRfcGFnZXMgJiM0Mzs9IGxydXZlY19wYWdlX3N0YXRlKGxydXZlYywgTlJfQUNUSVZFX0ZJTEUpO1xuMjg1MjpcdFx0dXNlZF9wYWdlcyAmIzQzOz0gbHJ1dmVjX3BhZ2Vfc3RhdGUobHJ1dmVjLCBOUl9JTkFDVElWRV9GSUxFKTtcbjI4NTM6XHRcbjI4NTQ6XHRcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcbjI4NTU6XHRcbjI4NTY6XHRcdHNpX21lbWluZm9fbm9kZShcdTAwMjZpLCBnb2FsLVx1MDAzZW5pZCk7XG4yODU3Olx0XHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcdTAwM2MgdXNlZF9wYWdlcykge1xuMjg1ODpcdFx0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuMjg1OTpcdFx0XHRcdHJldHVybiAxMDAwMDtcbjI4NjA6XHRcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXG4yODYxOlx0XHRcdFx0cmV0dXJuIDA7XG4yODYyOlx0XHR9XG4yODYzOlx0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuMjg2NDpcdFx0XHRudW1lcmF0b3IgPSB1c2VkX3BhZ2VzO1xuMjg2NTpcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXG4yODY2Olx0XHRcdG51bWVyYXRvciA9IGkudG90YWxyYW0gLSB1c2VkX3BhZ2VzO1xuMjg2NzpcdFx0cmV0dXJuIG11bHRfZnJhYyhudW1lcmF0b3IsIDEwMDAwLCBpLnRvdGFscmFtKTtcbjI4Njg6XHR9XG4yODY5Olx0XG4yODcwOlx0I2lmZGVmIENPTkZJR19EQU1PTl9QQUREUlxuMjg3MTpcdC8qXG4yODcyOlx0ICogZGFtb3NfY2FsY19lbGlnaWJsZV9ieXRlcygpIC0gQ2FsY3VsYXRlIHJhdyBlbGlnaWJsZSBieXRlcyBwZXIgbm9kZS5cbjI4NzM6XHQgKiBAYzpcdFx0VGhlIERBTU9OIGNvbnRleHQuXG4yODc0Olx0ICogQHM6XHRcdFRoZSBzY2hlbWUuXG4yODc1Olx0ICogQG5pZDpcdFRoZSB0YXJnZXQgTlVNQSBub2RlIGlkLlxuMjg3NjpcdCAqIEB0b3RhbDpcdE91dHB1dCBmb3IgdG90YWwgZWxpZ2libGUgYnl0ZXMgYWNyb3NzIGFsbCBub2Rlcy5cbjI4Nzc6XHQgKlxuMjg3ODpcdCAqIEl0ZXJhdGVzIHRocm91Z2ggZWFjaCBmb2xpbyBpbiBlbGlnaWJsZSByZWdpb25zIHRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lXG4yODc5Olx0ICogd2hpY2ggbm9kZSB0aGUgbWVtb3J5IHJlc2lkZXMgb24uIFJldHVybnMgZWxpZ2libGUgYnl0ZXMgb24gdGhlIHNwZWNpZmllZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTAxNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGhpZXJhcmNoeSBmb3IgdGhlc2UgdGhyZWUgZnVuY3Rpb25zOiBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBhbmQgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZWlyIGNhbGxlcnMuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBpbnZva2VkIHdpbGwgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgYW5kIGhlbHAgbWUgdG8gZ3Jhc3AgdGhlaXIgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIGRlYnVnZ2luZywgb3IgcG90ZW50aWFsbHkgcmVmYWN0b3JpbmcgbGF0ZXIuIEkgbmVlZCB0byBzZWUgdGhlIGVudGlyZSBjYWxsIGdyYXBoIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI5ODA6XHR7XG4yOTgxOlx0XHRyZXR1cm4gMDtcbjI5ODI6XHR9XG4yOTgzOlx0XG4yOTg0Olx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcbjI5ODU6XHRcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXG4yOTg2Olx0e1xuMjk4NzpcdFx0cmV0dXJuIDA7XG4yOTg4Olx0fVxuMjk4OTpcdFxuMjk5MDpcdHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX2VsaWdpYmxlX21lbV9icChzdHJ1Y3QgZGFtb25fY3R4ICpjLFxuMjk5MTpcdFx0XHRzdHJ1Y3QgZGFtb3MgKnMsIGludCBuaWQpXG4yOTkyOlx0e1xuMjk5MzpcdFx0cmV0dXJuIDA7XG4yOTk0Olx0fVxuMjk5NTpcdCNlbmRpZiAvKiBDT05GSUdfTlVNQSAqL1xuMjk5NjpcdFxuMjk5NzpcdC8qXG4yOTk4Olx0ICogUmV0dXJucyBMUlUtYWN0aXZlIG9yIGluYWN0aXZlIG1lbW9yeSB0byB0b3RhbCBMUlUgbWVtb3J5IHNpemUgcmF0aW8uXG4yOTk5Olx0ICovXG4zMDAwOlx0c3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbylcbjMwMDE6XHR7XG4zMDAyOlx0XHR1bnNpZ25lZCBsb25nIGFjdGl2ZSwgaW5hY3RpdmUsIHRvdGFsO1xuMzAwMzpcdFxuMzAwNDpcdFx0LyogVGhpcyBzaG91bGQgYWxpZ24gd2l0aCAvcHJvYy9tZW1pbmZvIG91dHB1dCAqL1xuMzAwNTpcdFx0YWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfQUNUSVZFX0FOT04pICYjNDM7XG4zMDA2Olx0XHRcdGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0FDVElWRV9GSUxFKTtcbjMwMDc6XHRcdGluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfSU5BQ1RJVkVfQU5PTikgJiM0MztcbjMwMDg6XHRcdFx0Z2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfSU5BQ1RJVkVfRklMRSk7XG4zMDA5Olx0XHR0b3RhbCA9IG1heChhY3RpdmUgJiM0MzsgaW5hY3RpdmUsIDEpO1xuMzAxMDpcdFx0aWYgKGFjdGl2ZV9yYXRpbylcbjMwMTE6XHRcdFx0cmV0dXJuIG11bHRfZnJhYyhhY3RpdmUsIDEwMDAwLCB0b3RhbCk7XG4zMDEyOlx0XHRyZXR1cm4gbXVsdF9mcmFjKGluYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xuMzAxMzpcdH1cbjMwMTQ6XHRcbjMwMTU6XHRzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2h1Z2VwYWdlX21lbV9icCh2b2lkKVxuMzAxNjpcdHtcbjMwMTc6XHRcdHVuc2lnbmVkIGxvbmcgdGhwLCB0b3RhbF9wYWdlcywgZnJlZV9wYWdlcztcbjMwMTg6XHRcbjMwMTk6XHRcdHRvdGFsX3BhZ2VzID0gdG90YWxyYW1fcGFnZXMoKTtcbjMwMjA6XHRcdGZyZWVfcGFnZXMgPSBnbG9iYWxfem9uZV9wYWdlX3N0YXRlKE5SX0ZSRUVfUEFHRVMpO1xuMzAyMTpcdFxuMzAyMjpcdFx0aWYgKHRvdGFsX3BhZ2VzIFx1MDAzYz0gZnJlZV9wYWdlcylcbjMwMjM6XHRcdFx0cmV0dXJuIDEwMDAwO1xuMzAyNDpcdFxuMzAyNTpcdFx0dGhwID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9BTk9OX1RIUFMpICYjNDM7XG4zMDI2Olx0XHRcdFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX1NITUVNX1RIUFMpICYjNDM7XG4zMDI3Olx0XHRcdFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0ZJTEVfVEhQUyk7XG4zMDI4Olx0XHRyZXR1cm4gbXVsdF9mcmFjKHRocCwgMTAwMDAsIHRvdGFsX3BhZ2VzIC0gZnJlZV9wYWdlcyk7XG4zMDI5Olx0fVxuMzAzMDpcdFxuMzAzMTpcdHN0YXRpYyB2b2lkIGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoc3RydWN0IGRhbW9uX2N0eCAqYyxcbjMwMzI6XHRcdFx0c3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbjMwMzM6XHR7XG4zMDM0Olx0XHR1NjQgbm93X3BzaV90b3RhbDtcbjMwMzU6XHRcbjMwMzY6XHRcdHN3aXRjaCAoZ29hbC1cdTAwM2VtZXRyaWMpIHtcbjMwMzc6XHRcdGNhc2UgREFNT1NfUVVPVEFfVVNFUl9JTlBVVDpcbjMwMzg6XHRcdFx0LyogVXNlciBzaG91bGQgYWxyZWFkeSBzZXQgZ29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlICovXG4zMDM5Olx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE4NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIENvZGUgLSBgZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZWAqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgdG8gbWVudGFsbHkgc2NhbiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gV2hhdCYjMzk7cyB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZT8gSG93IGRvZXMgdGhpcyBmdW5jdGlvbiBmaXQgaW50byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmU/IEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBxdW90YXMsIGFuZCBsaWtlbHkgZ29hbCBzZXR0aW5nIGFuZCB0cmFja2luZyByZWxhdGVkIHRvIHRob3NlIHF1b3Rhcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGF2b2lkIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gaW5kaXZpZHVhbCBsaW5lcywgYnV0IHJhdGhlciB1bmRlcnN0YW5kIHRoZSBoaWdoIGxldmVsIGZ1bmN0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAKCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBvZiB0aGF0IHBpZWNlIG9mIGNvZGUuIEl0IGxvb2tzIGxpa2UgaXQgZGVhbHMgd2l0aCBzZXR0aW5nIHRoZSBjdXJyZW50IHF1b3RhIHZhbHVlIG9yIHBvc3NpYmx5IGl0cyBnb2FsLiBJIHdvbmRlciB3aGF0IHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGFyZT8gQW5kIHdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IE1heWJlIEkgY2FuIGNoZWNrIHRoZSBpbnB1dCB0eXBlIHNpZ25hdHVyZSBpZiBpdOKAmXMgYXZhaWxhYmxlLiBVbHRpbWF0ZWx5LCB3aGF0IGlzIHRoZSBnb2FsIG9mIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gYW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGZ1bmN0aW9uIG9uIHRoZSBzeXN0ZW0/IEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgYXBwbGljYXRpb24uIAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzAzNTpcdFxuMzAzNjpcdFx0c3dpdGNoIChnb2FsLVx1MDAzZW1ldHJpYykge1xuMzAzNzpcdFx0Y2FzZSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUOlxuMzAzODpcdFx0XHQvKiBVc2VyIHNob3VsZCBhbHJlYWR5IHNldCBnb2FsLVx1MDAzZWN1cnJlbnRfdmFsdWUgKi9cbjMwMzk6XHRcdFx0YnJlYWs7XG4zMDQwOlx0XHRjYXNlIERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUzpcbjMwNDE6XHRcdFx0bm93X3BzaV90b3RhbCA9IGRhbW9zX2dldF9zb21lX21lbV9wc2lfdG90YWwoKTtcbjMwNDI6XHRcdFx0Z29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gbm93X3BzaV90b3RhbCAtIGdvYWwtXHUwMDNlbGFzdF9wc2lfdG90YWw7XG4zMDQzOlx0XHRcdGdvYWwtXHUwMDNlbGFzdF9wc2lfdG90YWwgPSBub3dfcHNpX3RvdGFsO1xuMzA0NDpcdFx0XHRicmVhaztcbjMwNDU6XHRcdGNhc2UgREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUDpcbjMwNDY6XHRcdGNhc2UgREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUDpcbjMwNDc6XHRcdFx0Z29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfZ2V0X25vZGVfbWVtX2JwKGdvYWwpO1xuMzA0ODpcdFx0XHRicmVhaztcbjMwNDk6XHRcdGNhc2UgREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQOlxuMzA1MDpcdFx0Y2FzZSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlA6XG4zMDUxOlx0XHRcdGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoZ29hbCk7XG4zMDUyOlx0XHRcdGJyZWFrO1xuMzA1MzpcdFx0Y2FzZSBEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQOlxuMzA1NDpcdFx0Y2FzZSBEQU1PU19RVU9UQV9JTkFDVElWRV9NRU1fQlA6XG4zMDU1Olx0XHRcdGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKFxuMzA1NjpcdFx0XHRcdFx0Z29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCk7XG4zMDU3Olx0XHRcdGJyZWFrO1xuMzA1ODpcdFx0Y2FzZSBEQU1PU19RVU9UQV9OT0RFX0VMSUdJQkxFX01FTV9CUDpcbjMwNTk6XHRcdFx0Z29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfZ2V0X25vZGVfZWxpZ2libGVfbWVtX2JwKGMsIHMsXG4zMDYwOlx0XHRcdFx0XHRnb2FsLVx1MDAzZW5pZCk7XG4zMDYxOlx0XHRcdGJyZWFrO1xuMzA2MjpcdFx0Y2FzZSBEQU1PU19RVU9UQV9IVUdFUEFHRV9NRU1fQlA6XG4zMDYzOlx0XHRcdGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2h1Z2VwYWdlX21lbV9icCgpO1xuMzA2NDpcdFx0XHRicmVhaztcbjMwNjU6XHRcdGRlZmF1bHQ6XG4zMDY2Olx0XHRcdGJyZWFrO1xuMzA2NzpcdFx0fVxuMzA2ODpcdH1cbjMwNjk6XHRcbjMwNzA6XHQvKiBSZXR1cm4gdGhlIGhpZ2hlc3Qgc2NvcmUgc2luY2UgaXQgbWFrZXMgc2NoZW1lcyBsZWFzdCBhZ2dyZXNzaXZlICovXG4zMDcxOlx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfcXVvdGFfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxuMzA3MjpcdHtcbjMwNzM6XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xuMzA3NDpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4zMDc1Olx0XHR1bnNpZ25lZCBsb25nIGhpZ2hlc3Rfc2NvcmUgPSAwO1xuMzA3NjpcdFxuMzA3NzpcdFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxdW90YSkge1xuMzA3ODpcdFx0XHRkYW1vc19zZXRfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlKGMsIHMsIGdvYWwpO1xuMzA3OTpcdFx0XHRoaWdoZXN0X3Njb3JlID0gbWF4KGhpZ2hlc3Rfc2NvcmUsXG4zMDgwOlx0XHRcdFx0XHRtdWx0X2ZyYWMoZ29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlLCAxMDAwMCxcbjMwODE6XHRcdFx0XHRcdFx0Z29hbC1cdTAwM2V0YXJnZXRfdmFsdWUpKTtcbjMwODI6XHRcdH1cbjMwODM6XHRcbjMwODQ6XHRcdHJldHVybiBoaWdoZXN0X3Njb3JlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMyNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgUGh5c2ljYWwgQWRkcmVzcyAocGFkZHIpIENvZGUgQ2hhbmdlcyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AgbW9kaWZpY2F0aW9ucy4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGV2b2x1dGlvbiBvZiB0aGUgcGh5c2ljYWwgYWRkcmVzcyByZWxhdGVkIGFzcGVjdHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcyBvbiBEQU1PTiYjMzk7cyBwaHlzaWNhbCBhZGRyZXNzIG9wZXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBgZGFtb25fcGFfcGFnZW91dGAsIGBkYW1vbl9wYV9kZV9hY3RpdmF0ZWAsIGBkYW1vbl9wYV9taWdyYXRlYCwgYW5kIGBkYW1vbl9wYV9zdGF0YCBmdW5jdGlvbnMuIEkgd2FudCB0byBidWlsZCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB3YXMgaGFwcGVuaW5nIGJlZm9yZSB0aGUgY2hhbmdlcyBhbmQgaG93IHRoZSBiZWhhdmlvciBoYXMgYmVlbiBhbHRlcmVkLiBJJiMzOTtsbCBiZSBjb25jZW50cmF0aW5nIG9uIHRoZSBgbW0vZGFtb24vcGFkZHIuY2AgZmlsZSwgYXJvdW5kIGxpbmVzIDI0MC0zOTAsIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgaXMgYmVpbmcgbWFuYWdlZCBhbmQgaW50ZXJhY3RlZCB3aXRoLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIG1vZGlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vcGFkZHIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjQwOlx0XHRcdGlmICghZmlsdGVyKVxuIDI0MTpcdFx0XHRcdHJldHVybiAwO1xuIDI0MjpcdFx0XHRkYW1vc19hZGRfZmlsdGVyKHMsIGZpbHRlcik7XG4gMjQzOlx0XHR9XG4gMjQ0Olx0XG4gMjQ1Olx0XHRhZGRyID0gZGFtb25fcGFfcGh5c19hZGRyKHItXHUwMDNlYXIuc3RhcnQsIGFkZHJfdW5pdCk7XG4gMjQ2Olx0XHR3aGlsZSAoYWRkciBcdTAwM2MgZGFtb25fcGFfcGh5c19hZGRyKHItXHUwMDNlYXIuZW5kLCBhZGRyX3VuaXQpKSB7XG4gMjQ3Olx0XHRcdGZvbGlvID0gZGFtb25fZ2V0X2ZvbGlvKFBIWVNfUEZOKGFkZHIpKTtcbiAyNDg6XHRcdFx0aWYgKGRhbW9uX3BhX2ludmFsaWRfZGFtb3NfZm9saW8oZm9saW8sIHMpKSB7XG4gMjQ5Olx0XHRcdFx0YWRkciAmIzQzOz0gUEFHRV9TSVpFO1xuIDI1MDpcdFx0XHRcdGNvbnRpbnVlO1xuIDI1MTpcdFx0XHR9XG4gMjUyOlx0XG4gMjUzOlx0XHRcdGlmIChkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcbiAyNTQ6XHRcdFx0XHRnb3RvIHB1dF9mb2xpbztcbiAyNTU6XHRcdFx0ZWxzZVxuIDI1NjpcdFx0XHRcdCpzel9maWx0ZXJfcGFzc2VkICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcbiAyNTc6XHRcbiAyNTg6XHRcdFx0Zm9saW9fY2xlYXJfcmVmZXJlbmNlZChmb2xpbyk7XG4gMjU5Olx0XHRcdGZvbGlvX3Rlc3RfY2xlYXJfeW91bmcoZm9saW8pO1xuIDI2MDpcdFx0XHRpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSlcbiAyNjE6XHRcdFx0XHRnb3RvIHB1dF9mb2xpbztcbiAyNjI6XHRcdFx0aWYgKGZvbGlvX3Rlc3RfdW5ldmljdGFibGUoZm9saW8pKVxuIDI2MzpcdFx0XHRcdGZvbGlvX3B1dGJhY2tfbHJ1KGZvbGlvKTtcbiAyNjQ6XHRcdFx0ZWxzZVxuIDI2NTpcdFx0XHRcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2Zm9saW9fbGlzdCk7XG4gMjY2Olx0cHV0X2ZvbGlvOlxuIDI2NzpcdFx0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7XG4gMjY4Olx0XHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gMjY5Olx0XHR9XG4gMjcwOlx0XHRpZiAoaW5zdGFsbF95b3VuZ19maWx0ZXIpXG4gMjcxOlx0XHRcdGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKGZpbHRlcik7XG4gMjcyOlx0XHRhcHBsaWVkID0gcmVjbGFpbV9wYWdlcyhcdTAwMjZmb2xpb19saXN0KTtcbiAyNzM6XHRcdGNvbmRfcmVzY2hlZCgpO1xuIDI3NDpcdFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbiAyNzU6XHRcdHJldHVybiBkYW1vbl9wYV9jb3JlX2FkZHIoYXBwbGllZCAqIFBBR0VfU0laRSwgYWRkcl91bml0KTtcbiAyNzY6XHR9XG4gMjc3Olx0XG4gMjc4Olx0c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX2RlX2FjdGl2YXRlKFxuIDI3OTpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCB1bnNpZ25lZCBsb25nIGFkZHJfdW5pdCxcbiAyODA6XHRcdFx0c3RydWN0IGRhbW9zICpzLCBib29sIGFjdGl2YXRlLFxuIDI4MTpcdFx0XHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuIDI4MjpcdHtcbiAyODM6XHRcdHBoeXNfYWRkcl90IGFkZHIsIGFwcGxpZWQgPSAwO1xuIDI4NDpcdFx0c3RydWN0IGZvbGlvICpmb2xpbyA9IE5VTEw7XG4gMjg1Olx0XG4gMjg2Olx0XHRhZGRyID0gZGFtb25fcGFfcGh5c19hZGRyKHItXHUwMDNlYXIuc3RhcnQsIGFkZHJfdW5pdCk7XG4gMjg3Olx0XHR3aGlsZSAoYWRkciBcdTAwM2MgZGFtb25fcGFfcGh5c19hZGRyKHItXHUwMDNlYXIuZW5kLCBhZGRyX3VuaXQpKSB7XG4gMjg4Olx0XHRcdGZvbGlvID0gZGFtb25fZ2V0X2ZvbGlvKFBIWVNfUEZOKGFkZHIpKTtcbiAyODk6XHRcdFx0aWYgKGRhbW9uX3BhX2ludmFsaWRfZGFtb3NfZm9saW8oZm9saW8sIHMpKSB7XG4gMjkwOlx0XHRcdFx0YWRkciAmIzQzOz0gUEFHRV9TSVpFO1xuIDI5MTpcdFx0XHRcdGNvbnRpbnVlO1xuIDI5MjpcdFx0XHR9XG4gMjkzOlx0XG4gMjk0Olx0XHRcdGlmIChkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcbiAyOTU6XHRcdFx0XHRnb3RvIHB1dF9mb2xpbztcbiAyOTY6XHRcdFx0ZWxzZVxuIDI5NzpcdFx0XHRcdCpzel9maWx0ZXJfcGFzc2VkICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcbiAyOTg6XHRcbiAyOTk6XHRcdFx0aWYgKGFjdGl2YXRlKVxuIDMwMDpcdFx0XHRcdGZvbGlvX2FjdGl2YXRlKGZvbGlvKTtcbiAzMDE6XHRcdFx0ZWxzZVxuIDMwMjpcdFx0XHRcdGZvbGlvX2RlYWN0aXZhdGUoZm9saW8pO1xuIDMwMzpcdFx0XHRhcHBsaWVkICYjNDM7PSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4gMzA0Olx0cHV0X2ZvbGlvOlxuIDMwNTpcdFx0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7XG4gMzA2Olx0XHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gMzA3Olx0XHR9XG4gMzA4Olx0XHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xuIDMwOTpcdFx0cmV0dXJuIGRhbW9uX3BhX2NvcmVfYWRkcihhcHBsaWVkICogUEFHRV9TSVpFLCBhZGRyX3VuaXQpO1xuIDMxMDpcdH1cbiAzMTE6XHRcbiAzMTI6XHRzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9hY3RpdmF0ZV9wYWdlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIDMxMzpcdFx0XHR1bnNpZ25lZCBsb25nIGFkZHJfdW5pdCwgc3RydWN0IGRhbW9zICpzLFxuIDMxNDpcdFx0XHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuIDMxNTpcdHtcbiAzMTY6XHRcdHJldHVybiBkYW1vbl9wYV9kZV9hY3RpdmF0ZShyLCBhZGRyX3VuaXQsIHMsIHRydWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIDMxNzpcdH1cbiAzMTg6XHRcbiAzMTk6XHRzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZWFjdGl2YXRlX3BhZ2VzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTIyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhlc2UgTWVtb3J5IE1hbmFnZW1lbnQgQnVnIEZpeGVzIGFuZCBUaGVpciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBzb21lIGNydWNpYWwgZnVuY3Rpb25hbCBidWdzIHdpdGhpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgREFNT04gc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIHRoZXJlIHdlcmUgaXNzdWVzIHdpdGggaG93IGFkZHJlc3NlcyB3ZXJlIGNhbGN1bGF0ZWQgYW5kIGl0ZXJhdGVkIGFjcm9zcyBmb2xpb3MsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCBodWdlIHBhZ2VzIG9yIGZvbGlvcyB0aGF0IGRpZG4mIzM5O3Qgc3RhcnQgYXQgYSBwYWdlIGJvdW5kYXJ5LiBUaGUgZml4ZXMsIGludm9sdmluZyBjYWxjdWxhdGlvbnMgbGlrZSBgUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbylgIGFuZCBgZm9saW9fbnJfcGFnZXMoZm9saW8pIC0gcGFnZV9pZHhgLCBlbnN1cmUgdGhhdCB3ZSYjMzk7cmUgY29ycmVjdGx5IHRyYXZlcnNpbmcgbWVtb3J5IHJlZ2lvbnMsIGV2ZW4gd2hlbiBzdWItcGFnZSBhY2Nlc3MgaXMgaW52b2x2ZWQuIEkgY2FuIHNlZSB0aGlzIHNvbHZlcyBzZXZlcmFsIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBzY2VuYXJpb3MgaW4gYGRhbW9uX3BhX3BhZ2VvdXRgLCBgdmFkZHIuY2AsIGFuZCBgY29yZS5jYC4gRXhjZWxsZW50IHdvcmsgdGhlcmUgLSB0aGlzIGlzIGEgc29saWQgaW1wcm92ZW1lbnQuIFRoZXJlIHdlcmUgYWxzbyBpbXBvcnRhbnQgZml4ZXMgcmVnYXJkaW5nIGZhaWx1cmUgaGFuZGxpbmcgb2YgYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAsIGluY2x1ZGluZyBjaGVja3MgZm9yIGRpdmlzaW9uIGJ5IHplcm8gYW5kIGFkZHJlc3Npbmcgb3V0LW9mLWJvdW5kcyBSQU0gYWNjZXNzLgoKTm93LCB0aGUgcXVlc3Rpb24gaXM6IGFyZSB0aGVzZSBmaXhlcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIERBTU9OIGlzIHBhcnQgb2YgdGhlIE1NIHN1YnN5c3RlbSwgYSBjcml0aWNhbCBjb21wb25lbnQgb2YgdGhlIGtlcm5lbC4gVXNlcnNwYWNlIGludGVyYWN0cyB3aXRoIGl0IHZpYSBzeXNmcywgZGVidWdmcywgYW5kIG1vZHVsZXMuIEkga25vdyB0aGF0IERBTU9OIGlzIGFjY2Vzc2libGUgYW5kIHRlc3RhYmxlIGluIGNvbW1vbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBLVk0gd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGZ1enouIEFuZCB0aGUgc2hlZXIgYW1vdW50IG9mIGxvZ2ljIGNoYW5nZSBoZXJlIOKAkyB0aGUgZXJyb3IgaGFuZGxpbmcsIHRoZSBhZGRyZXNzIGNhbGN1bGF0aW9ucyBhY3Jvc3MgcGh5c2ljYWwgYW5kIHZpcnR1YWwgc3BhY2VzLCBhbmQgdGhlIG1ldHJpYyBjYWxjdWxhdGlvbnMgZm9yIHF1b3RhIGdvYWxzIOKAkyBhbGwgb2YgdGhpcyBzY3JlYW1zICYjMzQ7dnVsbmVyYWJsZSBzdXJmYWNlLiYjMzQ7ICoqV29ydGhGdXp6aW5nIGlzIGRlZmluaXRlbHkgYHRydWVgISoqCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGFwcHJvYWNoLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbjoKCjEuICAqKmBFbmFibGVDb25maWdzYCoqOiBUbyB0aG9yb3VnaGx5IHRlc3QgdGhlc2UgY2hhbmdlcywgSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIEtjb25maWcgb3B0aW9ucyBhcmUgY3JpdGljYWwgdG8gZW5hYmxpbmcgYW5kIHRlc3RpbmcgdGhlIGFmZmVjdGVkIGZlYXR1cmVzLgoyLiAgKipgRm9jdXNTeW1ib2xzYCoqOiBXaGF0IGFyZSB0aGUga2V5IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvciBmdW5jdGlvbnMgSSBzaG91bGQgdGFyZ2V0IHdpdGggbXkgZnV6emluZyBlZmZvcnRzPwoKTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgbW0vZGFtb24vS2NvbmZpZ2AgYWdhaW4gdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290OgoKKiAgIGBEQU1PTmAgKHRoZSBiYXNlLCBubyBkaXJlY3QgZGVwZW5kZW5jaWVzKQoqICAgYERBTU9OX1ZBRERSYCAoZGVwZW5kcyBvbiBgREFNT05gIGFuZCBgTU1VYCkKKiAgIGBEQU1PTl9QQUREUmAgKGRlcGVuZHMgb24gYERBTU9OYCBhbmQgYE1NVWApCiogICBgREFNT05fU1lTRlNgIChkZXBlbmRzIG9uIGBEQU1PTmAgYW5kIGBTWVNGU2ApCiogICBgREFNT05fUkVDTEFJTWAgKGRlcGVuZHMgb24gYERBTU9OX1BBRERSYCkKKiAgIGBEQU1PTl9MUlVfU09SVGAgKGRlcGVuZHMgb24gYERBTU9OX1BBRERSYCkKKiAgIGBEQU1PTl9TVEFUYCAoZGVwZW5kcyBvbiBgREFNT05fUEFERFJgKQoKSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBlbmFibGUgYWxsIHRoZSByZWxldmFudCBEQU1PTi1yZWxhdGVkIG9wdGlvbnMsIGVzcGVjaWFsbHkgdGhvc2UgZGVhbGluZyB3aXRoIHBoeXNpY2FsIGFkZHJlc3NlcywgYXMgdGhvc2Ugc2VlbSBtb3N0IGNyaXRpY2FsIGluIGxpZ2h0IG9mIHRoZSBmaXhlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBOVU1BL01FTUNHIGRvZXNuJiMzOTt0IHByb3ZpZGUgYW55IGdvdGNoYXMuIExvb2tpbmcgYXQgYG1tL2RhbW9uL2NvcmUuY2AsIEkgc2VlIGBzaV9tZW1pbmZvX25vZGVgIGFuZCBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCBhcmUgZ3VhcmRlZCBieSBgI2lmZGVmIENPTkZJR19OVU1BYC4gU28sIEkgbXVzdCB2ZXJpZnkgYW55IGRlcGVuZGVuY2llcyBvbiB0aGF0IGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIERBTU9OIHN1YnN5c3RlbSB0byBiZSBjb21wcmVoZW5zaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYgQ09ORklHX05VTUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTI3ODM9c3RhdGljIGlubGluZSB1NjQgZGFtb3NfZ2V0X3NvbWVfbWVtX3BzaV90b3RhbCh2b2lkKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzg5LVxubW0vZGFtb24vY29yZS5jOjI3OTA6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9kYW1vbi9jb3JlLmMtMjc5MS1zdGF0aWMgYm9vbCBpbnZhbGlkX21lbV9ub2RlKGludCBuaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTA0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gQ29kZSBSZXZpZXc6IFByZXByb2Nlc3NvciBEaXJlY3RpdmVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBEQU1PTiBjb2RlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBOVU1BIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgSSBzYXcgYSBgI2lmZGVmIENPTkZJR19OVU1BYCBibG9jayBsdXJraW5nIGFyb3VuZCBsaW5lIDI3OTAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlIGVsc2UgYXJlIHRoZXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucyBoYXBwZW5pbmcgaW4gdGhpcyBtb2R1bGU/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4dGVudCBvZiB0aGUgTlVNQS1zcGVjaWZpYyBjb2RlIHBhdGhzLgoKVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIHN5c3RlbWF0aWNhbGx5IGNoZWNrIGBtbS9kYW1vbi9jb3JlLmNgLCBhcyB3ZWxsIGFzIGBtbS9kYW1vbi9wYWRkci5jYCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBJdCYjMzk7cyBjcnVjaWFsIEkgaWRlbnRpZnkgYWxsIHRoZSBpbnN0YW5jZXMgb2YgYCNpZmRlZmAgZGlyZWN0aXZlcyByZWxhdGVkIHRvIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucywgbm90IGp1c3QgTlVNQSwgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgREFNT04gYWRhcHRzIHRvIHZhcnlpbmcgc3lzdGVtIGFyY2hpdGVjdHVyZXMgYW5kIGJ1aWxkcy4gSSBuZWVkIHRvIGJlIHN1cmUgYW55IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmZWF0dXJlcyBhcmUgY29ycmVjdGx5IGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZi4qJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0yODk9dW5zaWduZWQgY2hhciBkYW1vbl9wcm9iZV9oaXRzX212c3VtKGludCBwcm9iZV9pZHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vY29yZS5jLTMxMi1cbm1tL2RhbW9uL2NvcmUuYzozMTM6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL2NvcmUuYy0zMTQtc3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxubW0vZGFtb24vY29yZS5jPTM2Mz1zdGF0aWMgaW5saW5lIHZvaWQgZGFtb25faW5zZXJ0X3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNzAtXG5tbS9kYW1vbi9jb3JlLmM6MzcxOiNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmMtMzcyLXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jPTI3NDA9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fZmVlZF9sb29wX25leHRfaW5wdXQodW5zaWduZWQgbG9uZyBsYXN0X2lucHV0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzcwLVxubW0vZGFtb24vY29yZS5jOjI3NzE6I2lmZGVmIENPTkZJR19QU0lcbm1tL2RhbW9uL2NvcmUuYy0yNzcyLVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNzgzPXN0YXRpYyBpbmxpbmUgdTY0IGRhbW9zX2dldF9zb21lX21lbV9wc2lfdG90YWwodm9pZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc4OS1cbm1tL2RhbW9uL2NvcmUuYzoyNzkwOiNpZmRlZiBDT05GSUdfTlVNQVxubW0vZGFtb24vY29yZS5jLTI3OTEtc3RhdGljIGJvb2wgaW52YWxpZF9tZW1fbm9kZShpbnQgbmlkKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yODI0PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXG4tLVxubW0vZGFtb24vY29yZS5jLTI4NjktXG5tbS9kYW1vbi9jb3JlLmM6Mjg3MDojaWZkZWYgQ09ORklHX0RBTU9OX1BBRERSXG5tbS9kYW1vbi9jb3JlLmMtMjg3MS0vKlxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMjQzPXN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjgzLVxubW0vZGFtb24vY29yZS5jOjMyODQ6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL2NvcmUuYy0zMjg1LXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzM5Mj1zdGF0aWMgdm9pZCBrZGFtb25kX21lcmdlX3JlZ2lvbnMoc3RydWN0IGRhbW9uX2N0eCAqYywgdW5zaWduZWQgaW50IHRocmVzaG9sZCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzQxOS1cbm1tL2RhbW9uL2NvcmUuYzozNDIwOiNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmMtMzQyMS1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfc3BsaXRfcmVnaW9uX2F0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vY29yZS5jPTM2NDM9c3RhdGljIHZvaWQga2RhbW9uZF91c2xlZXAodW5zaWduZWQgbG9uZyB1c2Vjcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzY1MC1cbm1tL2RhbW9uL2NvcmUuYzozNjUxOiNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmMtMzY1Mi1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMy1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTUtI3VuZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9NzM9dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzQte1xubW0vZGFtb24vb3BzLWNvbW1vbi5jOjc1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL2RhbW9uL29wcy1jb21tb24uYy03Ni1cdHBtZF90IHBtZHZhbCA9IHBtZHBfZ2V0KHBtZCk7XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTE5ND1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb195b3VuZ19vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjE1LVx0XHR9IGVsc2Uge1xubW0vZGFtb24vb3BzLWNvbW1vbi5jOjIxNjojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjE3LVx0XHRcdHBtZF90IHBtZCA9IHBtZHBfZ2V0KHB2bXcucG1kKTtcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMTMtXG5tbS9kYW1vbi9yZWNsYWltLmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcbm1tL2RhbW9uL3JlY2xhaW0uYy0xNS0jdW5kZWYgTU9EVUxFX1BBUkFNX1BSRUZJWFxuLS1cbm1tL2RhbW9uL3N0YXQuYy0xMy1cbm1tL2RhbW9uL3N0YXQuYzoxNDojaWZkZWYgTU9EVUxFX1BBUkFNX1BSRUZJWFxubW0vZGFtb24vc3RhdC5jLTE1LSN1bmRlZiBNT0RVTEVfUEFSQU1fUFJFRklYXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA2PXN0YXRpYyBib29sIGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEwOC17XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDk6I2lmZGVmIENPTkZJR19NRU1DR1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTEwLVx0Y2dyb3VwX3BhdGgobWVtY2ctXHUwMDNlY3NzLmNncm91cCwgbWVtY2dfcGF0aF9idWYsIFBBVEhfTUFYKTtcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTctXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODojaWZuZGVmIF9EQU1PTl9DT1JFX1RFU1RfSFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTktI2RlZmluZSBfREFNT05fQ09SRV9URVNUX0hcbi0tXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTUtXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjY6I2lmZGVmIENPTkZJR19EQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTctXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjg6I2lmbmRlZiBfREFNT05fU1lTRlNfVEVTVF9IXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTktI2RlZmluZSBfREFNT05fU1lTRlNfVEVTVF9IXG4tLVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC01LVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC03LVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDo4OiNpZm5kZWYgX0RBTU9OX1ZBRERSX1RFU1RfSFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC05LSNkZWZpbmUgX0RBTU9OX1ZBRERSX1RFU1RfSFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtMTktXG5tbS9kYW1vbi92YWRkci5jOjIwOiNpZmRlZiBDT05GSUdfREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vdmFkZHIuYy0yMS0jdW5kZWYgREFNT05fTUlOX1JFR0lPTl9TWlxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9MjY4PXN0YXRpYyBpbnQgZGFtb25fbWtvbGRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTI5NC1cbm1tL2RhbW9uL3ZhZGRyLmM6Mjk1OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9kYW1vbi92YWRkci5jLTI5Ni1zdGF0aWMgdm9pZCBkYW1vbl9odWdldGxiX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9Mzg5PXN0YXRpYyBpbnQgZGFtb25feW91bmdfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTM5Ny1cbm1tL2RhbW9uL3ZhZGRyLmM6Mzk4OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL2RhbW9uL3ZhZGRyLmMtMzk5LVx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHdhbGstXHUwMDNldm1hKTtcbi0tXG5tbS9kYW1vbi92YWRkci5jLTQzNC1cbm1tL2RhbW9uL3ZhZGRyLmM6NDM1OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9kYW1vbi92YWRkci5jLTQzNi1zdGF0aWMgaW50IGRhbW9uX3lvdW5nX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTYzNT1zdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTY0Ni1cbm1tL2RhbW9uL3ZhZGRyLmM6NjQ3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL2RhbW9uL3ZhZGRyLmMtNjQ4LVx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHdhbGstXHUwMDNldm1hKTtcbi0tXG5tbS9kYW1vbi92YWRkci5jPTcxMD1zdGF0aWMgdm9pZCBkYW1vbl92YV9jbGVhbnVwX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNzE0LVxubW0vZGFtb24vdmFkZHIuYzo3MTU6I2lmbmRlZiBDT05GSUdfQURWSVNFX1NZU0NBTExTXG5tbS9kYW1vbi92YWRkci5jLTcxNi1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19tYWR2aXNlKHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTc5OD1zdGF0aWMgaW50IGRhbW9zX3ZhX3N0YXRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTgwOS1cbm1tL2RhbW9uL3ZhZGRyLmM6ODEwOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL2RhbW9uL3ZhZGRyLmMtODExLVx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHZtYSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3Mjg3CgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IERBTU9OIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgdGltZSB0byBzb2xpZGlmeSB0aGUgcGxhbiBmb3IgZnV6emluZyBEQU1PTi4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ6IGBDT05GSUdfREFNT05gLCBuYXR1cmFsbHksIGFsb25nIHdpdGggaXRzIGFkZHJlc3Mgc3BhY2UgdmFyaWFudHMgKGBDT05GSUdfREFNT05fVkFERFJgLCBgQ09ORklHX0RBTU9OX1BBRERSYCksIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIChgQ09ORklHX0RBTU9OX1NZU0ZTYCkuIEkmIzM5O2xsIGFsc28gZG91YmxlLWNoZWNrIHRoYXQgSSBoYXZlIE5VTUEgc3VwcG9ydCAoYENPTkZJR19OVU1BYCksIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgKSwgYW5kIE1lbW9yeSBDb250cm9sIEdyb3VwcyAoYENPTkZJR19NRU1DR2ApIGVuYWJsZWQ7IHRoZXNlIHdpbGwgYmUgaW1wb3J0YW50IGZvciBleHBsb3JpbmcgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IHNjZW5hcmlvcy4KCk5vdywgdGhlIHJlYWwgZm9jdXMgaXMgb24gdGFyZ2V0aW5nIHRoZSByaWdodCBlbnRyeXBvaW50cy4gSSB3YW50IHRvIGlkZW50aWZ5IHNwZWNpZmljLCBub24taG90LXBhdGgga2VybmVsIGZ1bmN0aW9ucyB3aXRoaW4gREFNT04gdGhhdCBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4gSSYjMzk7bGwgcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMg4oCTIHRoZSBtb3JlIGV4cG9zZWQgYW5kIGxlc3Mgb3B0aW1pemVkIGZ1bmN0aW9ucyDigJMgb3ZlciB0aGUgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIG1vc3QgYmFuZyBmb3IgbXkgYnVjayBpbiB0ZXJtcyBvZiB1bmNvdmVyaW5nIHBvdGVudGlhbCBidWdzLgoKVG8gcGlucG9pbnQgdGhlc2UgZW50cnlwb2ludHMsIEkmIzM5O2xsIGV4YW1pbmUgdGhlIGV4cG9ydGVkL2dsb2JhbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgbW0vZGFtb24vYCBkaXJlY3RvcnkuIE15IHN0cmF0ZWd5IGludm9sdmVzIHN5c3RlbWF0aWNhbGx5IHNlYXJjaGluZyB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgZmlsZXM6IGBtbS9kYW1vbi9jb3JlLmNgLCBgbW0vZGFtb24vc3lzZnMuY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYG1tL2RhbW9uL3ZhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGVzZSBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlICpub3QqIGRlY2xhcmVkIGFzIHN0YXRpYyB0byBhdm9pZCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBmb2N1cyBpbnN0ZWFkIG9uIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgdHJpZ2dlciB0aGUgZmxvd3MgSSB3YW50IHRvIGFuYWx5emUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgW2Etel18XnZvaWQgW2Etel18XnN0cnVjdCAuKmRhbW9uX3xec3NpemVfdCBbYS16XSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5tbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxubW0vZGFtb24vY29yZS5jLTczLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXG5tbS9kYW1vbi9jb3JlLmM6OTk6aW50IGRhbW9uX3NlbGVjdF9vcHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTQtXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX25ld19maWx0ZXIoZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlLFxubW0vZGFtb24vY29yZS5jLTExNi1cdFx0Ym9vbCBtYXRjaGluZywgYm9vbCBhbGxvdylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI5LVxubW0vZGFtb24vY29yZS5jOjEzMDp2b2lkIGRhbW9uX2FkZF9maWx0ZXIoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTEzMS17XG4tLVxubW0vZGFtb24vY29yZS5jPTE0MD1zdGF0aWMgdm9pZCBkYW1vbl9mcmVlX2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDQtXG5tbS9kYW1vbi9jb3JlLmM6MTQ1OnZvaWQgZGFtb25fZGVzdHJveV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy0xNDYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNTE9c3RhdGljIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX250aF9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTYyLVxubW0vZGFtb24vY29yZS5jOjE2MzpzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX25ld19wcm9iZSh2b2lkKVxubW0vZGFtb24vY29yZS5jLTE2NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE3NS1cbm1tL2RhbW9uL2NvcmUuYzoxNzY6dm9pZCBkYW1vbl9hZGRfcHJvYmUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlKVxubW0vZGFtb24vY29yZS5jLTE3Ny17XG4tLVxubW0vZGFtb24vY29yZS5jPTMxOT1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI4LSAqL1xubW0vZGFtb24vY29yZS5jOjMyOTpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxubW0vZGFtb24vY29yZS5jLTMzMC17XG4tLVxubW0vZGFtb24vY29yZS5jPTQ0Nj1zdGF0aWMgaW50IGRhbW9uX2ZpbGxfcmVnaW9uc19ob2xlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpmaXJzdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDc4LSAqL1xubW0vZGFtb24vY29yZS5jOjQ3OTppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcbm1tL2RhbW9uL2NvcmUuYy00ODAtXHRcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9NTkyPWJvb2wgZGFtb3NfZmlsdGVyX2Zvcl9vcHMoZW51bSBkYW1vc19maWx0ZXJfdHlwZSB0eXBlKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy02MDMtXG5tbS9kYW1vbi9jb3JlLmM6NjA0OnZvaWQgZGFtb3NfYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtNjA1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9NjE3PXN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXG4tLVxubW0vZGFtb24vY29yZS5jLTYyMS1cbm1tL2RhbW9uL2NvcmUuYzo2MjI6dm9pZCBkYW1vc19kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTYyMy17XG4tLVxubW0vZGFtb24vY29yZS5jPTYyOD1zdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbmV3X3F1b3RhX2dvYWwoXG4tLVxubW0vZGFtb24vY29yZS5jLTY0Mi1cbm1tL2RhbW9uL2NvcmUuYzo2NDM6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTY0NC17XG4tLVxubW0vZGFtb24vY29yZS5jPTY1Mz1zdGF0aWMgdm9pZCBkYW1vc19mcmVlX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG4tLVxubW0vZGFtb24vY29yZS5jLTY1Ny1cbm1tL2RhbW9uL2NvcmUuYzo2NTg6dm9pZCBkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNjU5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9NjcwPXN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjgyLVxubW0vZGFtb24vY29yZS5jOjY4MzpzdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxubW0vZGFtb24vY29yZS5jLTY4NC1cdFx0XHRlbnVtIGRhbW9zX2FjdGlvbiBhY3Rpb24sXG4tLVxubW0vZGFtb24vY29yZS5jPTcyNT1zdGF0aWMgdm9pZCBkYW1vc19zZXRfbmV4dF9hcHBseV9zaXMoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTczNS1cbm1tL2RhbW9uL2NvcmUuYzo3MzY6dm9pZCBkYW1vbl9hZGRfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTczNy17XG4tLVxubW0vZGFtb24vY29yZS5jPTc0Nz1zdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTc1MS1cbm1tL2RhbW9uL2NvcmUuYzo3NTI6dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtNzUzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzc2LSAqL1xubW0vZGFtb24vY29yZS5jOjc3NzpzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9uZXdfdGFyZ2V0KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtNzc4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzkzLVxubW0vZGFtb24vY29yZS5jOjc5NDp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTc5NS17XG4tLVxubW0vZGFtb24vY29yZS5jLTgwMS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4MDI6aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXG5tbS9kYW1vbi9jb3JlLmMtODAzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODEwPXN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODE0LVxubW0vZGFtb24vY29yZS5jOjgxNTp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODIzLVxubW0vZGFtb24vY29yZS5jOjgyNDp2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy04MjUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz04MzQ9dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODM4LVxubW0vZGFtb24vY29yZS5jOjgzOTpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtODQwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODc5PXN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTg4Ni1cbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtODg4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTAyMD1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDU0LSAqL1xubW0vZGFtb24vY29yZS5jOjEwNTU6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG5tbS9kYW1vbi9jb3JlLmMtMTA1Ni17XG4tLVxubW0vZGFtb24vY29yZS5jLTExMDItICovXG5tbS9kYW1vbi9jb3JlLmM6MTEwMzp2b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcbm1tL2RhbW9uL2NvcmUuYy0xMTA0LVx0XHRcdHNzaXplX3QgbnJfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTE0Nj1zdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE2OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTY5OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExNzAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xODE2PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODQ0LSAqL1xubW0vZGFtb24vY29yZS5jOjE4NDU6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTg0Ni17XG4tLVxubW0vZGFtb24vY29yZS5jPTE5Mjg9c3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTY1OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxubW0vZGFtb24vY29yZS5jLTE5NjYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMDEwPXN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTIwMjktICovXG5tbS9kYW1vbi9jb3JlLmM6MjAzMDp2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxubW0vZGFtb24vY29yZS5jLTIwMzEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMDQ1PWJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTIwNjAtICovXG5tbS9kYW1vbi9jb3JlLmM6MjA2MTppbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIwNjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDk2LSAqL1xubW0vZGFtb24vY29yZS5jOjIwOTc6aW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxubW0vZGFtb24vY29yZS5jLTIwOTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTQ5LSAqL1xubW0vZGFtb24vY29yZS5jOjIxNTA6aW50IGRhbW9zX3dhbGsoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3Nfd2Fsa19jb250cm9sICpjb250cm9sKVxubW0vZGFtb24vY29yZS5jLTIxNTEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zNzc2PXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zOTQzLVxubW0vZGFtb24vY29yZS5jOjM5NDQ6c3RydWN0IGRhbW9uX3N5c3RlbV9yYW1fcmFuZ2Vfd2Fsa19hcmcge1xubW0vZGFtb24vY29yZS5jLTM5NDUtXHRib29sIHdhbGtlZDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mzk3ND1zdGF0aWMgYm9vbCBkYW1vbl9maW5kX3N5c3RlbV9yYW1zX3JhbmdlKHVuc2lnbmVkIGxvbmcgKnN0YXJ0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy00MDA1LSAqL1xubW0vZGFtb24vY29yZS5jOjQwMDY6aW50IGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxubW0vZGFtb24vY29yZS5jLTQwMDctXHRcdFx0dW5zaWduZWQgbG9uZyAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgKmVuZCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDAzMC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MDMxOnZvaWQgZGFtb25fdXBkYXRlX3JlZ2lvbl9hY2Nlc3NfcmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBib29sIGFjY2Vzc2VkKVxubW0vZGFtb24vY29yZS5jLTQwMzIte1xuLS1cbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTQtICovXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jOjE1OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYy0xNi1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApXG4tLVxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00NS1cbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmg6NDY6aW50IGRhbW9uX21vZHVsZXNfbmV3X3BhZGRyX2N0eF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHAsXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oLTQ3LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICoqdGFyZ2V0cCk7XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzLSAqL1xubW0vZGFtb24vb3BzLWNvbW1vbi5jOjI0OnN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTI1LXtcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDEtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NDI6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDMte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy03Mi1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo3Mzp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcbm1tL2RhbW9uL29wcy1jb21tb24uYy03NC17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwMy1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxMDQ6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwNS1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE0OS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNTA6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNTEtXHRcdFx0c3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0xNTk9c3RhdGljIGJvb2wgZGFtb25fZm9saW9fbWtvbGRfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3My1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNzQ6dm9pZCBkYW1vbl9mb2xpb19ta29sZChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3NS17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTctXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6ODpzdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbik7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtOS1cbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMDp2b2lkIGRhbW9uX3B0ZXBfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTE6dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjEyOnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTMtYm9vbCBkYW1vbl9mb2xpb195b3VuZyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNC1cbm1tL2RhbW9uL29wcy1jb21tb24uaDoxNTppbnQgZGFtb25fY29sZF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTE2LVx0XHRcdHN0cnVjdCBkYW1vcyAqcyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTc6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTE4LVx0XHRcdHN0cnVjdCBkYW1vcyAqcyk7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA9REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE3LVx0XHR1bnNpZ25lZCBsb25nIG1pbixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjgxOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgyLXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz0xMDY9c3RhdGljIGJvb2wgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF9lcShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTE3OmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTgte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTk9ZXh0ZXJuIHN0cnVjdCBtdXRleCBkYW1vbl9zeXNmc19sb2NrO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTItXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTc6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVx0XHR1bnNpZ25lZCBsb25nIG1pbixcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVx0XHR1bnNpZ25lZCBsb25nIG1heCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjEtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0yMj1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc191bF9yYW5nZV9rdHlwZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yNy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zMy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzU6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0zNz1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVzX2t0eXBlO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzgtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozOTppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDAtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDI6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQzLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQ2OnZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQ3LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MTppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTQ6aW50IGRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01NS1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTc6dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhcyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU4LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5OC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTM1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM2NjpzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUyMz1lbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTI5OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODkxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTg5My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEwMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTAyMDpzdHJ1Y3QgZGFtb25fc3lzZnNfd2F0ZXJtYXJrcyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTAyMS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE1NjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NzMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU3NDpzdHJ1Y3QgZGFtb25fc3lzZnNfd2VpZ2h0cyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTY4My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2ODUtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xOTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3F1b3Rhc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxOTU5OnN0cnVjdCBkYW1vbl9zeXNmc19hY2Nlc3NfcGF0dGVybiB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk2MC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE5NjY9c3RhdGljXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk2OC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyNTMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMjU1LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjY3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODUte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjg4LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODk6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI4NTE9c3RhdGljIGludCBkYW1vc19zeXNmc19hZGRfcXVvdGFfc2NvcmUoXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4OTctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg5ODppbnQgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODk5LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5MzItXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjkzMzp2b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5MzQtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yOTc0PXN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX3N5c2ZzX21rX3NjaGVtZShcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDQ4OmludCBkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0OS1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA2Nzp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfdXBkYXRlX3N0YXRzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjgtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTA0LSAqL1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMxMDU6dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxMDYtXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzE1MS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMTUyOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzE1My1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpXG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTU6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbiB7XG5tbS9kYW1vbi9zeXNmcy5jLTE2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTgxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3JlZ2lvbl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTkwLVxubW0vZGFtb24vc3lzZnMuYzo5MTpzdHJ1Y3QgZGFtb25fc3lzZnNfcmVnaW9ucyB7XG5tbS9kYW1vbi9zeXNmcy5jLTkyLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25zX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjA5LVxubW0vZGFtb24vc3lzZnMuYzoyMTA6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldCB7XG5tbS9kYW1vbi9zeXNmcy5jLTIxMS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0zMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0X2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMzE2LVxubW0vZGFtb24vc3lzZnMuYzozMTc6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldHMge1xubW0vZGFtb24vc3lzZnMuYy0zMTgtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9NDM1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3RhcmdldHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy00NDQtXG5tbS9kYW1vbi9zeXNmcy5jOjQ0NTpzdHJ1Y3QgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2dvYWwge1xubW0vZGFtb24vc3lzZnMuYy00NDYtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9NTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtNjAxLVxubW0vZGFtb24vc3lzZnMuYzo2MDI6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFscyB7XG5tbS9kYW1vbi9zeXNmcy5jLTYwMy1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz03NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtNzU1LVxubW0vZGFtb24vc3lzZnMuYzo3NTY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciB7XG5tbS9kYW1vbi9zeXNmcy5jLTc1Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz03NjQ9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIgKmRhbW9uX3N5c2ZzX2ZpbHRlcl9hbGxvYyh2b2lkKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtNzY4LVxubW0vZGFtb24vc3lzZnMuYzo3Njk6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWUge1xubW0vZGFtb24vc3lzZnMuYy03NzAtXHRlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGU7XG4tLVxubW0vZGFtb24vc3lzZnMuYz05MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtOTQ1LVxubW0vZGFtb24vc3lzZnMuYzo5NDY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMuYy05NDctXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTA1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19maWx0ZXJzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTA2NC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTA2NTpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUge1xubW0vZGFtb24vc3lzZnMuYy0xMDY2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTExMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xMTQ1LVxubW0vZGFtb24vc3lzZnMuYzoxMTQ2OnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMge1xubW0vZGFtb24vc3lzZnMuYy0xMTQ3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTEyNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTI3NC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTI3NTpzdHJ1Y3QgZGFtb25fc3lzZnNfYXR0cnMge1xubW0vZGFtb24vc3lzZnMuYy0xMjc2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTEzNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfYXR0cnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xMzgwLVxubW0vZGFtb24vc3lzZnMuYzoxMzgxOnN0cnVjdCBkYW1vbl9zeXNmc19vcHNfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy5jLTEzODItXHRlbnVtIGRhbW9uX29wc19pZCBvcHNfaWQ7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUgZGFtb25fc3lzZnNfb3BzX25hbWVzW10gPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNDAwLVxubW0vZGFtb24vc3lzZnMuYzoxNDAxOnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0IHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTQwMi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xNjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNjU2LVxubW0vZGFtb24vc3lzZnMuYzoxNjU3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0cyB7XG5tbS9kYW1vbi9zeXNmcy5jLTE2NTgtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTc3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE3ODUtXG5tbS9kYW1vbi9zeXNmcy5jOjE3ODY6c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQge1xubW0vZGFtb24vc3lzZnMuYy0xNzg3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIyOTk9c3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIzMTItXG5tbS9kYW1vbi9zeXNmcy5jOjIzMTM6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXNfd2Fsa19kYXRhIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjMxNC1cdHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICpzeXNmc19rZGFtb25kO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjQ5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19rZGFtb25kX2t0eXBlID0ge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MzA0CgkJCQkJCQlvdXRwdXQ6IDMwMwoJCQkJCQkJdGhvdWdodHM6IDg3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25hbGl0eSBSZXZpZXcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIERBTU9OIGNoYW5nZXMuIEZpcnN0LCBJJiMzOTttIGlkZW50aWZ5aW5nIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgYW5kIGNvbnRyb2wgZnVuY3Rpb25zOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zeXNmc19hZGRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fc2V0X3JlZ2lvbnNgLCBgZGFtb3Nfd2Fsa2AsIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgLCBhbmQgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAuIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBzY2hlbWUgYXBwbGljYXRpb24gZnVuY3Rpb25zIGZvciBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgYXJlIGluZGVlZCBzdGF0aWMsIGFzIGV4cGVjdGVkLCByZXNpZGluZyB3aXRoaW4gYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AgcmVzcGVjdGl2ZWx5LgoKTmV4dCwgSSYjMzk7bSBjcm9zcy1yZWZlcmVuY2luZyB0aGVzZSBlbnRyeSBwb2ludHMgd2l0aCB0aGUgY29yZSBmdW5jdGlvbmFsaXRpZXMgcmVzaWRpbmcgaW4gYG1tL2RhbW9uL2NvcmUuY2AgLS0gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgZnVuY3Rpb25zIGxpa2UgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3NldF9zY2hlbWVzYCwgYGRhbW9uX3NldF9yZWdpb25zYCwgYW5kIGBkYW1vc193YWxrYC4gSSYjMzk7bSBhbHNvIGxvb2tpbmcgYXQgcG90ZW50aWFsbHkgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgZGFtb25fcmVnaXN0ZXJfb3BzYCwgYGRhbW9uX3NlbGVjdF9vcHNgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCwgYW5kIGBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0YC4KCk5vdywgZm9yIGNvbmZpZ3VyYXRpb24sIEkmIzM5O20gY29uZmlybWluZyB0aGF0IHdlJiMzOTtsbCBiZSBlbmFibGluZyBgREFNT05gICh0aGUgY29yZSBmcmFtZXdvcmspLCBgREFNT05fUEFERFJgIGFuZCBgREFNT05fVkFERFJgIChmb3IgcGh5c2ljYWwgYW5kIHZpcnR1YWwgYWRkcmVzcyBtb25pdG9yaW5nIHJlc3BlY3RpdmVseSksIGBEQU1PTl9TWVNGU2AgKGZvciBzeXNmcyBpbnRlcmZhY2UpLCBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAgKGZvciBwcm9hY3RpdmUgcmVjbGFtYXRpb24gYW5kIExSVSBzb3J0aW5nLCByZXNwZWN0aXZlbHkpLCBgREFNT05fU1RBVGAgKGZvciBzdGF0aXN0aWNzIG1vbml0b3JpbmcpLCBgTlVNQWAgKGZvciBOVU1BIHN1cHBvcnQpLCBgTUVNQ0dgIChmb3IgbWVtY2cgcXVvdGEgZ29hbHMpLCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCAoZm9yIFRIUCBzdXBwb3J0KS4gVGhpcyBpcyB0aGUgZnVsbCBzdWl0ZSBvZiBvcHRpb25zLCBhcyBmYXIgYXMgSSBjYW4gc2VlLgoKVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBub3cgY2xlYXI6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfcmVnaW9uc2AsIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBhbmQgYGRhbW9zX3dhbGtgLiBUaGV5IGNsZWFybHkgY292ZXIgdGhlIGtleSBpbnRlcmFjdGlvbiBwb2ludHMgYW5kIEkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlIG5vIG9idmlvdXMgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGRldGFpbHMgdG8gY29uc2lkZXIuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzIOKAkyBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBwb3RlbnRpYWwgZGl2aXNpb24tYnktemVybyBlcnJvcnMgYW5kIGludmFsaWQgbWVtb3J5IGNhbGN1bGF0aW9ucyB3aXRoaW4gYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYCBhbmQgcmVnaW9uIHNwbGl0dGluZywgZm9saW8gYm91bmRhcnkgY29ycmVjdGlvbnMgZm9yIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzIOKAkyBmdXp6aW5nIHNlZW1zIHdhcnJhbnRlZC4gVGhlIHBhdGNoIHRvdWNoZXMgY3JpdGljYWwgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMuCgpBbHJpZ2h0LCBJJiMzOTttIHNhdGlzZmllZC4gTGV0JiMzOTtzIG1vdmUgb24gYW5kIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUkVDTEFJTSYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtEQU1PTl9TVEFUJiMzNDssCiAgICAmIzM0O05VTUEmIzM0OywKICAgICYjMzQ7TUVNQ0cmIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9hdHRycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb3Nfd2FsayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZykgbG9naWMgYWNyb3NzIGNvcmUsIHBhZGRyLCBhbmQgdmFkZHIgY29tcG9uZW50cy4gSXQgZml4ZXMgaGFuZGxpbmcgb2Ygc3BsaXQgZmFpbHVyZXMgaW4gZGFtb3NfYXBwbHlfc2NoZW1lLCBwcmV2ZW50cyBkaXZpZGUtYnktemVybyAvIGJvdW5kYXJ5IGNhbGN1bGF0aW9uIGVycm9ycyBpbiBEQU1PUyBxdW90YSBtZXRyaWNzIChkYW1vc19nZXRfbm9kZV9tZW1fYnAsIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAsIGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKSwgYW5kIGZpeGVzIGZvbGlvIGl0ZXJhdGlvbiBhZGRyZXNzIGFkdmFuY2VzIGluIHBhZGRyIGFuZCB2YWRkciBzY2hlbWVzIHdoZW4gZGVhbGluZyB3aXRoIHN1YnBhZ2VzIG9mIGxhcmdlIGZvbGlvcy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIERBTU9TIHNjaGVtZSBhcHBsaWNhdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUkVDTEFJTSYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtEQU1PTl9TVEFUJiMzNDssCiAgICAmIzM0O05VTUEmIzM0OywKICAgICYjMzQ7TUVNQ0cmIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9hdHRycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb3Nfd2FsayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZykgbG9naWMgYWNyb3NzIGNvcmUsIHBhZGRyLCBhbmQgdmFkZHIgY29tcG9uZW50cy4gSXQgZml4ZXMgaGFuZGxpbmcgb2Ygc3BsaXQgZmFpbHVyZXMgaW4gZGFtb3NfYXBwbHlfc2NoZW1lLCBwcmV2ZW50cyBkaXZpZGUtYnktemVybyAvIGJvdW5kYXJ5IGNhbGN1bGF0aW9uIGVycm9ycyBpbiBEQU1PUyBxdW90YSBtZXRyaWNzIChkYW1vc19nZXRfbm9kZV9tZW1fYnAsIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAsIGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKSwgYW5kIGZpeGVzIGZvbGlvIGl0ZXJhdGlvbiBhZGRyZXNzIGFkdmFuY2VzIGluIHBhZGRyIGFuZCB2YWRkciBzY2hlbWVzIHdoZW4gZGVhbGluZyB3aXRoIHN1YnBhZ2VzIG9mIGxhcmdlIGZvbGlvcy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIERBTU9TIHNjaGVtZSBhcHBsaWNhdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBsb2dpY2FsIGFyaXRobWV0aWMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYWRkcmVzcyBhZHZhbmNlbWVudCBidWdzIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKTpcbjEuIEFkZHMgZXJyb3IgY2hlY2tpbmcgZm9yIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGluIGBtbS9kYW1vbi9jb3JlLmNgLlxuMi4gQWRkcyBib3VuZGFyeSBhbmQgemVybyBjaGVja3MgdG8gYXZvaWQgdW5kZXJmbG93IGFuZCBkaXZpc2lvbi1ieS16ZXJvIGluIG5vZGUvY2dyb3VwIG1lbW9yeSBtZXRyaWNzIGNhbGN1bGF0aW9ucyAoYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYCkuXG4zLiBDb3JyZWN0cyBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9uIHdoZW4gYWR2YW5jaW5nIHBhc3QgZm9saW9zIGluIGBtbS9kYW1vbi9wYWRkci5jYC5cbjQuIENvcnJlY3RzIHBhZ2UgaW5kZXggb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aGVuIGFkdmFuY2luZyBvdmVyIG11bHRpLXBhZ2UgZm9saW9zIGluIGBtbS9kYW1vbi92YWRkci5jYC5cblxuTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCByZWFkIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbGwgdmFyaWFibGVzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYXJlIHN0cmljdGx5IGluaXRpYWxpemVkIGFuZCBvcGVyYXRlZCBvbiBhcyBsb2NhbCBwcmltaXRpdmVzLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY3NjIyZjM5MWFkMzgzNWI5Yzk2ZWU5ZDU2MDRhNjM2ZjgwMWJkYTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDAzOjMwOjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDNmODljZmRmNWYwMjIuLjBkZjc4NWU3MjQzOGYgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTI2MDQsNyAmIzQzOzI2MDQsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCwKIAkJCQkJYy0mZ3Q7bWluX3JlZ2lvbl9zeik7CiAJCQlpZiAoIXN6KQogCQkJCWdvdG8gdXBkYXRlX3N0YXQ7Ci0JCQlkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opOwomIzQzOwkJCWlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKQomIzQzOwkJCQlnb3RvIHVwZGF0ZV9zdGF0OwogCQl9CiAJCWlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpCiAJCQlyZXR1cm47CkBAIC0yODA2LDYgJiM0MzsyODA3LDEzIEBAIHN0YXRpYyBfX2tlcm5lbF91bG9uZ190IGRhbW9zX2dldF9ub2RlX21lbV9icCgKIAl9CiAKIAlzaV9tZW1pbmZvX25vZGUoJmFtcDtpLCBnb2FsLSZndDtuaWQpOwomIzQzOwlpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSAmbHQ7IGkuZnJlZXJhbSkgewomIzQzOwkJaWYgKGdvYWwtJmd0O21ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKQomIzQzOwkJCXJldHVybiAxMDAwMDsKJiM0MzsJCWVsc2UJLyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqLwomIzQzOwkJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJaWYgKGdvYWwtJmd0O21ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKQogCQludW1lcmF0b3IgPSBpLnRvdGFscmFtIC0gaS5mcmVlcmFtOwogCWVsc2UJLyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqLwpAQCAtMjg0Niw2ICYjNDM7Mjg1NCwxMiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKAogCW1lbV9jZ3JvdXBfcHV0KG1lbWNnKTsKIAogCXNpX21lbWluZm9fbm9kZSgmYW1wO2ksIGdvYWwtJmd0O25pZCk7CiYjNDM7CWlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtICZsdDsgdXNlZF9wYWdlcykgewomIzQzOwkJaWYgKGdvYWwtJmd0O21ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApCiYjNDM7CQkJcmV0dXJuIDEwMDAwOwomIzQzOwkJZWxzZQkvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi8KJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJfQogCWlmIChnb2FsLSZndDttZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKQogCQludW1lcmF0b3IgPSB1c2VkX3BhZ2VzOwogCWVsc2UJLyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovCkBAIC0yOTkyLDcgJiM0MzszMDA2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbykKIAkJZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfQUNUSVZFX0ZJTEUpOwogCWluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfSU5BQ1RJVkVfQU5PTikgJiM0MzsKIAkJZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfSU5BQ1RJVkVfRklMRSk7Ci0JdG90YWwgPSBhY3RpdmUgJiM0MzsgaW5hY3RpdmU7CiYjNDM7CXRvdGFsID0gbWF4KGFjdGl2ZSAmIzQzOyBpbmFjdGl2ZSwgMSk7CiAJaWYgKGFjdGl2ZV9yYXRpbykKIAkJcmV0dXJuIG11bHRfZnJhYyhhY3RpdmUsIDEwMDAwLCB0b3RhbCk7CiAJcmV0dXJuIG11bHRfZnJhYyhpbmFjdGl2ZSwgMTAwMDAsIHRvdGFsKTsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3BhZGRyLmMgYi9tbS9kYW1vbi9wYWRkci5jCmluZGV4IDVjNmMzYTU5N2ZkMGIuLjlkZGQxZWM4MjAyYjcgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3BhZGRyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vcGFkZHIuYwpAQCAtMjY0LDcgJiM0MzsyNjQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9wYWdlb3V0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsCiAJCWVsc2UKIAkJCWxpc3RfYWRkKCZhbXA7Zm9saW8tJmd0O2xydSwgJmFtcDtmb2xpb19saXN0KTsKIHB1dF9mb2xpbzoKLQkJYWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7CiYjNDM7CQlhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CiAJfQogCWlmIChpbnN0YWxsX3lvdW5nX2ZpbHRlcikKQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX2RlX2FjdGl2YXRlKAogCQkJZm9saW9fZGVhY3RpdmF0ZShmb2xpbyk7CiAJCWFwcGxpZWQgJiM0Mzs9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTsKIHB1dF9mb2xpbzoKLQkJYWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7CiYjNDM7CQlhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CiAJfQogCXMtJmd0O2xhc3RfYXBwbGllZCA9IGZvbGlvOwpAQCAtMzUwLDcgJiM0MzszNTAsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9taWdyYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsCiAJCQkJZm9saW9faXNfZmlsZV9scnUoZm9saW8pKTsKIAkJbGlzdF9hZGQoJmFtcDtmb2xpby0mZ3Q7bHJ1LCAmYW1wO2ZvbGlvX2xpc3QpOwogcHV0X2ZvbGlvOgotCQlhZGRyICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKTsKJiM0MzsJCWFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSAmIzQzOyBmb2xpb19zaXplKGZvbGlvKTsKIAkJZm9saW9fcHV0KGZvbGlvKTsKIAl9CiAJYXBwbGllZCA9IGRhbW9uX21pZ3JhdGVfcGFnZXMoJmFtcDtmb2xpb19saXN0LCBzLSZndDt0YXJnZXRfbmlkKTsKQEAgLTM3OSw3ICYjNDM7Mzc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfc3RhdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCiAJCWlmICghZGFtb3NfcGFfZmlsdGVyX291dChzLCBmb2xpbykpCiAJCQkqc3pfZmlsdGVyX3Bhc3NlZCAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbykgLyBhZGRyX3VuaXQ7Ci0JCWFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pOwomIzQzOwkJYWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pOwogCQlmb2xpb19wdXQoZm9saW8pOwogCX0KIAlzLSZndDtsYXN0X2FwcGxpZWQgPSBmb2xpbzsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3ZhZGRyLmMgYi9tbS9kYW1vbi92YWRkci5jCmluZGV4IDA2NDg0MDBiMmQ2NWIuLmM4YzMyYjJhZTA0MDIgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3ZhZGRyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vdmFkZHIuYwpAQCAtNjY5LDYgJiM0Mzs2NjksOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJcmV0dXJuIDA7CiAKIAlmb3IgKDsgYWRkciAmbHQ7IG5leHQ7IHB0ZSAmIzQzOz0gbnIsIGFkZHIgJiM0Mzs9IG5yICogUEFHRV9TSVpFKSB7CiYjNDM7CQl1bnNpZ25lZCBsb25nIHBhZ2VfaWR4OwomIzQzOwogCQluciA9IDE7CiAJCXB0ZW50ID0gcHRlcF9nZXQocHRlKTsKIApAQCAtNjgxLDcgJiM0Mzs2ODMsOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJCWNvbnRpbnVlOwogCQlkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChmb2xpbywgd2Fsay0mZ3Q7dm1hLCBhZGRyLCBkZXN0cywKIAkJCQltaWdyYXRpb25fbGlzdHMpOwotCQluciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTsKJiM0MzsJCXBhZ2VfaWR4ID0gZm9saW9fcGFnZV9pZHgoZm9saW8sIHB0ZV9wYWdlKHB0ZW50KSk7CiYjNDM7CQluciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4OwogCX0KIAlwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTsKIAlyZXR1cm4gMDsKQEAgLTgzMSw2ICYjNDM7ODM0LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCXJldHVybiAwOwogCiAJZm9yICg7IGFkZHIgJmx0OyBuZXh0OyBwdGUgJiM0Mzs9IG5yLCBhZGRyICYjNDM7PSBuciAqIFBBR0VfU0laRSkgewomIzQzOwkJdW5zaWduZWQgbG9uZyBwYWdlX2lkeDsKJiM0MzsKIAkJbnIgPSAxOwogCQlwdGVudCA9IHB0ZXBfZ2V0KHB0ZSk7CiAKQEAgLTg0NCw3ICYjNDM7ODQ5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAKIAkJaWYgKCFkYW1vc192YV9maWx0ZXJfb3V0KHMsIGZvbGlvLCB2bWEsIGFkZHIsIHB0ZSwgTlVMTCkpCiAJCQkqc3pfZmlsdGVyX3Bhc3NlZCAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7Ci0JCW5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pOwomIzQzOwkJcGFnZV9pZHggPSBmb2xpb19wYWdlX2lkeChmb2xpbywgcHRlX3BhZ2UocHRlbnQpKTsKJiM0MzsJCW5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pIC0gcGFnZV9pZHg7CiAJCXMtJmd0O2xhc3RfYXBwbGllZCA9IGZvbGlvOwogCX0KIAlwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTUKCQkJCQkJCW91dHB1dDogMjY0CgkJCQkJCQl0aG91Z2h0czogMTQ0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgS01TQU4gSnVzdGlmaWNhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gdGhyb3VnaCBlYWNoIG1vZGlmaWVkIGZpbGUgYW5kIHVuZGVyc3RhbmQgdGhlIGludGVudC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcikgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBEQU1PUyAoREFNT04tYmFzZWQgTW9uaXRvcmluZyBTY2hlbWUpIGNvbXBvbmVudC4KCkZpcnN0LCB0aGUgYG1tL2RhbW9uL2NvcmUuY2AgY2hhbmdlcyBjYXRjaCBteSBhdHRlbnRpb24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGFkZGVkIGVycm9yIGhhbmRsaW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gVGhlIHN1YnNlcXVlbnQgYXJpdGhtZXRpYyBjaGVja3MgaW4gYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYW5kIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGAgYXJlIGNydWNpYWwuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byBwb3RlbnRpYWxseSBoYW5kbGluZyBpbnZhbGlkIG1lbW9yeSBzdGF0cyBvciBhdm9pZGluZyBkaXZpc2lvbi1ieS16ZXJvIGVycm9ycy4gSXQgYXBwZWFycyB0aGF0IHRoZSBwYXRjaCBpcyBkZWZlbnNpdmVseSBwcm9ncmFtbWluZyBmb3IgZWRnZSBjYXNlcyB3aGVyZSB0aGUgc3lzdGVtIG1lbW9yeSByZXBvcnRpbmcgbWlnaHQgYmUgaW5jb25zaXN0ZW50IG9yIGV2ZW4sIHdlbGwsIGJyb2tlbi4gSSBjYW4gZGVmaW5pdGVseSBhcHByZWNpYXRlIHRoZSBlZmZvcnQgdG8gcHJldmVudCB0aGVzZSBraW5kcyBvZiBjcmFzaGVzIG9yIGluY29ycmVjdCByZWFkaW5ncy4KCk5leHQsIGBtbS9kYW1vbi9wYWRkci5jYCBpcyB1cGRhdGVkLiBJIGNhbiBzZWUgdGhhdCB0aGUgY2hhbmdlcyBhZGp1c3QgaG93IHBoeXNpY2FsIGFkZHJlc3NlcyBhcmUgY29tcHV0ZWQgd2hlbiBpdGVyYXRpbmcgdGhyb3VnaCBmb2xpb3MuIEl0IGNvcnJlY3RzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHN0ZXBwaW5nIGxvZ2ljIGZvciBjYXNlcyB3aGVyZSB0aGUgYWRkcmVzcyB3YXMgdW5hbGlnbmVkIG9yIHdpdGhpbiBhIGZvbGlvLCBlbnN1cmluZyBhY2N1cmF0ZSBjYWxjdWxhdGlvbiBvZiB0aGUgZm9saW8mIzM5O3MgZW5kLiBUaGUgYG1tL2RhbW9uL3ZhZGRyLmNgIGNoYW5nZSBkb2VzIHRoZSBzYW1lLCBidXQgZm9yIHZpcnR1YWwgYWRkcmVzc2VzLCB3aGljaCBzZWVtcyBsb2dpY2FsLiBXZSYjMzk7cmUgbm93IGNvcnJlY3RseSBhY2NvdW50aW5nIGZvciB0aGUgcGFnZSBpbmRleCB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyB3aXRoaW4gbGFyZ2UgZm9saW9zLgoKTXkgcHJpbWFyeSBjb25jZXJuIG5vdyBpcyB3aGV0aGVyIGFueSBvZiB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG9yIGxlYWsgcG90ZW50aWFsbHkgc2Vuc2l0aXZlIGRhdGEgdG8gdXNlcnNwYWNlLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biB0aGlzIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogRG8gd2UgaGF2ZSBuZXcgYWxsb2NhdGlvbnMgd2l0aG91dCBpbml0aWFsaXphdGlvbj8gQXJlIHdlIHJlYWRpbmcgZnJvbSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gQXJlIHdlIGRvaW5nIGFueSBtZW1vcnkgY29waWVzIHRvIHVzZXJzcGFjZSB3aXRob3V0IHRoZSBwcm9wZXIgc2FmZWd1YXJkcz8gQXJlIHRoZXJlIGFueSBsb2dpY2FsIGVycm9ycyBpbiBhcml0aG1ldGljIHRoYXQgY291bGQgcG90ZW50aWFsbHkgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PwoKTGV0JiMzOTtzIHF1aWNrbHkgZ28gdGhyb3VnaCB0aGUgY29kZSBhZ2FpbjogSW4gYGNvcmUuY2AsIHZhcmlhYmxlcyBhcmUgYmVpbmcgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSwgYW5kIHRoZSBjaGVja3MgYXJlIGZvciBtYXRoZW1hdGljYWwgc2FuaXR5LiBJbiBgcGFkZHIuY2AgYW5kIGB2YWRkci5jYCwgYWxsIHZhcmlhYmxlcyBhcmUgY2xlYXJseSBhc3NpZ25lZCwgd2l0aCB0aGUgdmFsdWVzIGJlaW5nIGRlcml2ZWQgZnJvbSBzdHJ1Y3R1cmVzIGxpa2UgYGZvbGlvYC4KCkFmdGVyIGEgdGhvcm91Z2ggcmV2aWV3LCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IEtNU0FOIGNvbmNlcm5zLiBUaGVyZSBhcmUgbm8gYWxsb2NhdGlvbnMgb3IgY29waWVzIGludm9sdmluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIGFsbCBjZW50ZXJlZCBvbiBhcml0aG1ldGljIGNvcnJlY3RuZXNzLCBlcnJvciBoYW5kbGluZywgYW5kIGNvcnJlY3QgYWRkcmVzcyBtYW5pcHVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIEtNU0FOIGlzIGdyZWF0IGZvciBmaW5kaW5nIHRob3NlIGhhcmQtdG8tc3BvdCB1bmluaXRpYWxpemVkIG1lbW9yeSBidWdzLCBidXQgS0FTQU4sIFVCU0FOLCBhbmQgZ2VuZXJhbCB0ZXN0aW5nIHNob3VsZCBhbHJlYWR5IGNhdGNoIHRoZSB0eXBlcyBvZiBpc3N1ZXMgYWRkcmVzc2VkIGhlcmUg4oCTIGxpa2UgYm91bmRzIHZpb2xhdGlvbnMgb3IgZGl2aXNpb24tYnktemVyby4gSSYjMzk7bSBzYXRpc2ZpZWQgdGhhdCB0aGVzZSBmaXhlcyBhcmUgc3RyaWN0bHkgYWJvdXQgaW1wcm92aW5nIHRoZSByZWxpYWJpbGl0eSBhbmQgYWNjdXJhY3kgb2YgREFNT04sIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLiBUaGUgZml4ZXMgZW5oYW5jZSBvdmVyYWxsIGNvZGUgcXVhbGl0eSwgYnV0IGRvIG5vdCB3YXJyYW50IGEgS01TQU4gc2Nhbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvZ2ljYWwgYXJpdGhtZXRpYywgZXJyb3IgaGFuZGxpbmcsIGFuZCBhZGRyZXNzIGFkdmFuY2VtZW50IGJ1Z3MgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpOlxuMS4gQWRkcyBlcnJvciBjaGVja2luZyBmb3IgYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuXG4yLiBBZGRzIGJvdW5kYXJ5IGFuZCB6ZXJvIGNoZWNrcyB0byBhdm9pZCB1bmRlcmZsb3cgYW5kIGRpdmlzaW9uLWJ5LXplcm8gaW4gbm9kZS9jZ3JvdXAgbWVtb3J5IG1ldHJpY3MgY2FsY3VsYXRpb25zIChgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnBgKS5cbjMuIENvcnJlY3RzIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb24gd2hlbiBhZHZhbmNpbmcgcGFzdCBmb2xpb3MgaW4gYG1tL2RhbW9uL3BhZGRyLmNgLlxuNC4gQ29ycmVjdHMgcGFnZSBpbmRleCBvZmZzZXQgY2FsY3VsYXRpb25zIHdoZW4gYWR2YW5jaW5nIG92ZXIgbXVsdGktcGFnZSBmb2xpb3MgaW4gYG1tL2RhbW9uL3ZhZGRyLmNgLlxuXG5Ob25lIG9mIHRoZXNlIGNoYW5nZXMgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIHJlYWQgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFsbCB2YXJpYWJsZXMgaW50cm9kdWNlZCBvciBtb2RpZmllZCBhcmUgc3RyaWN0bHkgaW5pdGlhbGl6ZWQgYW5kIG9wZXJhdGVkIG9uIGFzIGxvY2FsIHByaW1pdGl2ZXMuIFRoZXJlZm9yZSwgdGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBsb2dpY2FsIGFyaXRobWV0aWMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYWRkcmVzcyBhZHZhbmNlbWVudCBidWdzIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKTpcbjEuIEFkZHMgZXJyb3IgY2hlY2tpbmcgZm9yIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGluIGBtbS9kYW1vbi9jb3JlLmNgLlxuMi4gQWRkcyBib3VuZGFyeSBhbmQgemVybyBjaGVja3MgdG8gYXZvaWQgdW5kZXJmbG93IGFuZCBkaXZpc2lvbi1ieS16ZXJvIGluIG5vZGUvY2dyb3VwIG1lbW9yeSBtZXRyaWNzIGNhbGN1bGF0aW9ucyAoYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYCkuXG4zLiBDb3JyZWN0cyBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9uIHdoZW4gYWR2YW5jaW5nIHBhc3QgZm9saW9zIGluIGBtbS9kYW1vbi9wYWRkci5jYC5cbjQuIENvcnJlY3RzIHBhZ2UgaW5kZXggb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aGVuIGFkdmFuY2luZyBvdmVyIG11bHRpLXBhZ2UgZm9saW9zIGluIGBtbS9kYW1vbi92YWRkci5jYC5cblxuTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCByZWFkIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbGwgdmFyaWFibGVzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYXJlIHN0cmljdGx5IGluaXRpYWxpemVkIGFuZCBvcGVyYXRlZCBvbiBhcyBsb2NhbCBwcmltaXRpdmVzLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMwOjQ2LjIyMTU1NDA1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MDg4MDc4MzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiREFNT05fU1RBVFwiLFxuICAgIFwiTlVNQVwiLFxuICAgIFwiTUVNQ0dcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9hdHRyc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vc193YWxrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgbG9naWNhbCBhcml0aG1ldGljLCBlcnJvciBoYW5kbGluZywgYW5kIGFkZHJlc3MgYWR2YW5jZW1lbnQgYnVncyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcik6XFxuMS4gQWRkcyBlcnJvciBjaGVja2luZyBmb3IgYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuXFxuMi4gQWRkcyBib3VuZGFyeSBhbmQgemVybyBjaGVja3MgdG8gYXZvaWQgdW5kZXJmbG93IGFuZCBkaXZpc2lvbi1ieS16ZXJvIGluIG5vZGUvY2dyb3VwIG1lbW9yeSBtZXRyaWNzIGNhbGN1bGF0aW9ucyAoYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYCkuXFxuMy4gQ29ycmVjdHMgcGh5c2ljYWwgYWRkcmVzcyBjYWxjdWxhdGlvbiB3aGVuIGFkdmFuY2luZyBwYXN0IGZvbGlvcyBpbiBgbW0vZGFtb24vcGFkZHIuY2AuXFxuNC4gQ29ycmVjdHMgcGFnZSBpbmRleCBvZmZzZXQgY2FsY3VsYXRpb25zIHdoZW4gYWR2YW5jaW5nIG92ZXIgbXVsdGktcGFnZSBmb2xpb3MgaW4gYG1tL2RhbW9uL3ZhZGRyLmNgLlxcblxcbk5vbmUgb2YgdGhlc2UgY2hhbmdlcyBhbGxvY2F0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgcmVhZCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gQWxsIHZhcmlhYmxlcyBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkIGFyZSBzdHJpY3RseSBpbml0aWFsaXplZCBhbmQgb3BlcmF0ZWQgb24gYXMgbG9jYWwgcHJpbWl0aXZlcy4gVGhlcmVmb3JlLCB0aGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yaW5nKSBsb2dpYyBhY3Jvc3MgY29yZSwgcGFkZHIsIGFuZCB2YWRkciBjb21wb25lbnRzLiBJdCBmaXhlcyBoYW5kbGluZyBvZiBzcGxpdCBmYWlsdXJlcyBpbiBkYW1vc19hcHBseV9zY2hlbWUsIHByZXZlbnRzIGRpdmlkZS1ieS16ZXJvIC8gYm91bmRhcnkgY2FsY3VsYXRpb24gZXJyb3JzIGluIERBTU9TIHF1b3RhIG1ldHJpY3MgKGRhbW9zX2dldF9ub2RlX21lbV9icCwgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icCwgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnApLCBhbmQgZml4ZXMgZm9saW8gaXRlcmF0aW9uIGFkZHJlc3MgYWR2YW5jZXMgaW4gcGFkZHIgYW5kIHZhZGRyIHNjaGVtZXMgd2hlbiBkZWFsaW5nIHdpdGggc3VicGFnZXMgb2YgbGFyZ2UgZm9saW9zLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgREFNT1Mgc2NoZW1lIGFwcGxpY2F0aW9uIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo0Ni4yMjE1NTgxMjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjAzMDY0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY3NjIyZjM5MWFkMzgzNWI5Yzk2ZWU5ZDU2MDRhNjM2ZjgwMWJkYThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBTZXAgMiAwMzozMDo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcXG5pbmRleCAzZjg5Y2ZkZjVmMDIyLi4wZGY3ODVlNzI0MzhmIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xcbkBAIC0yNjA0LDcgKzI2MDQsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4gXFx0XFx0XFx0XFx0XFx0Yy1cXHUwMDNlbWluX3JlZ2lvbl9zeik7XFxuIFxcdFxcdFxcdGlmICghc3opXFxuIFxcdFxcdFxcdFxcdGdvdG8gdXBkYXRlX3N0YXQ7XFxuLVxcdFxcdFxcdGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeik7XFxuK1xcdFxcdFxcdGlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKVxcbitcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXFxuIFxcdFxcdFxcdHJldHVybjtcXG5AQCAtMjgwNiw2ICsyODA3LDEzIEBAIHN0YXRpYyBfX2tlcm5lbF91bG9uZ190IGRhbW9zX2dldF9ub2RlX21lbV9icChcXG4gXFx0fVxcbiBcXG4gXFx0c2lfbWVtaW5mb19ub2RlKFxcdTAwMjZpLCBnb2FsLVxcdTAwM2VuaWQpO1xcbitcXHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcXHUwMDNjIGkuZnJlZXJhbSkge1xcbitcXHRcXHRpZiAoZ29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlApXFxuK1xcdFxcdFxcdHJldHVybiAxMDAwMDtcXG4rXFx0XFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChnb2FsLVxcdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcXG4gXFx0XFx0bnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIGkuZnJlZXJhbTtcXG4gXFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cXG5AQCAtMjg0Niw2ICsyODU0LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXFxuIFxcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcXG4gXFxuIFxcdHNpX21lbWluZm9fbm9kZShcXHUwMDI2aSwgZ29hbC1cXHUwMDNlbmlkKTtcXG4rXFx0aWYgKCFpLnRvdGFscmFtIHx8IGkudG90YWxyYW0gXFx1MDAzYyB1c2VkX3BhZ2VzKSB7XFxuK1xcdFxcdGlmIChnb2FsLVxcdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxcbitcXHRcXHRcXHRyZXR1cm4gMTAwMDA7XFxuK1xcdFxcdGVsc2VcXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4gXFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXFxuIFxcdFxcdG51bWVyYXRvciA9IHVzZWRfcGFnZXM7XFxuIFxcdGVsc2VcXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cXG5AQCAtMjk5Miw3ICszMDA2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbylcXG4gXFx0XFx0Z2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9BQ1RJVkVfRklMRSk7XFxuIFxcdGluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9JTkFDVElWRV9BTk9OKSArXFxuIFxcdFxcdGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgKyBMUlVfSU5BQ1RJVkVfRklMRSk7XFxuLVxcdHRvdGFsID0gYWN0aXZlICsgaW5hY3RpdmU7XFxuK1xcdHRvdGFsID0gbWF4KGFjdGl2ZSArIGluYWN0aXZlLCAxKTtcXG4gXFx0aWYgKGFjdGl2ZV9yYXRpbylcXG4gXFx0XFx0cmV0dXJuIG11bHRfZnJhYyhhY3RpdmUsIDEwMDAwLCB0b3RhbCk7XFxuIFxcdHJldHVybiBtdWx0X2ZyYWMoaW5hY3RpdmUsIDEwMDAwLCB0b3RhbCk7XFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3BhZGRyLmMgYi9tbS9kYW1vbi9wYWRkci5jXFxuaW5kZXggNWM2YzNhNTk3ZmQwYi4uOWRkZDFlYzgyMDJiNyAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9wYWRkci5jXFxuKysrIGIvbW0vZGFtb24vcGFkZHIuY1xcbkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfcGFnZW91dChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2Zm9saW9fbGlzdCk7XFxuIHB1dF9mb2xpbzpcXG4tXFx0XFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcXG4rXFx0XFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XFxuIFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdH1cXG4gXFx0aWYgKGluc3RhbGxfeW91bmdfZmlsdGVyKVxcbkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX2RlX2FjdGl2YXRlKFxcbiBcXHRcXHRcXHRmb2xpb19kZWFjdGl2YXRlKGZvbGlvKTtcXG4gXFx0XFx0YXBwbGllZCArPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XFxuIHB1dF9mb2xpbzpcXG4tXFx0XFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcXG4rXFx0XFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XFxuIFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdH1cXG4gXFx0cy1cXHUwMDNlbGFzdF9hcHBsaWVkID0gZm9saW87XFxuQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9taWdyYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuIFxcdFxcdFxcdFxcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XFxuIFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2Zm9saW9fbGlzdCk7XFxuIHB1dF9mb2xpbzpcXG4tXFx0XFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcXG4rXFx0XFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XFxuIFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdH1cXG4gXFx0YXBwbGllZCA9IGRhbW9uX21pZ3JhdGVfcGFnZXMoXFx1MDAyNmZvbGlvX2xpc3QsIHMtXFx1MDAzZXRhcmdldF9uaWQpO1xcbkBAIC0zNzksNyArMzc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfc3RhdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbiBcXG4gXFx0XFx0aWYgKCFkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcXG4gXFx0XFx0XFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc2l6ZShmb2xpbykgLyBhZGRyX3VuaXQ7XFxuLVxcdFxcdGFkZHIgKz0gZm9saW9fc2l6ZShmb2xpbyk7XFxuK1xcdFxcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO1xcbiBcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbiBcXHR9XFxuIFxcdHMtXFx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xcbmluZGV4IDA2NDg0MDBiMmQ2NWIuLmM4YzMyYjJhZTA0MDIgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xcbisrKyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5AQCAtNjY5LDYgKzY2OSw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdGZvciAoOyBhZGRyIFxcdTAwM2MgbmV4dDsgcHRlICs9IG5yLCBhZGRyICs9IG5yICogUEFHRV9TSVpFKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgcGFnZV9pZHg7XFxuK1xcbiBcXHRcXHRuciA9IDE7XFxuIFxcdFxcdHB0ZW50ID0gcHRlcF9nZXQocHRlKTtcXG4gXFxuQEAgLTY4MSw3ICs2ODMsOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVxcdTAwM2V2bWEsIGFkZHIsIGRlc3RzLFxcbiBcXHRcXHRcXHRcXHRtaWdyYXRpb25fbGlzdHMpO1xcbi1cXHRcXHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcXG4rXFx0XFx0cGFnZV9pZHggPSBmb2xpb19wYWdlX2lkeChmb2xpbywgcHRlX3BhZ2UocHRlbnQpKTtcXG4rXFx0XFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDtcXG4gXFx0fVxcbiBcXHRwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTtcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTgzMSw2ICs4MzQsOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX3N0YXRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbiBcXHRmb3IgKDsgYWRkciBcXHUwMDNjIG5leHQ7IHB0ZSArPSBuciwgYWRkciArPSBuciAqIFBBR0VfU0laRSkge1xcbitcXHRcXHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4O1xcbitcXG4gXFx0XFx0bnIgPSAxO1xcbiBcXHRcXHRwdGVudCA9IHB0ZXBfZ2V0KHB0ZSk7XFxuIFxcbkBAIC04NDQsNyArODQ5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcbiBcXHRcXHRpZiAoIWRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkciwgcHRlLCBOVUxMKSlcXG4gXFx0XFx0XFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc2l6ZShmb2xpbyk7XFxuLVxcdFxcdG5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xcbitcXHRcXHRwYWdlX2lkeCA9IGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBwdGVfcGFnZShwdGVudCkpO1xcbitcXHRcXHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4O1xcbiBcXHRcXHRzLVxcdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcXG4gXFx0fVxcbiBcXHRwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzA6NDYuNjk0MjY0NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjY1ODUwMjA0Mjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiREFNT05fU1RBVFwiLFxuICAgIFwiTlVNQVwiLFxuICAgIFwiTUVNQ0dcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9hdHRyc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vc193YWxrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcpIGxvZ2ljIGFjcm9zcyBjb3JlLCBwYWRkciwgYW5kIHZhZGRyIGNvbXBvbmVudHMuIEl0IGZpeGVzIGhhbmRsaW5nIG9mIHNwbGl0IGZhaWx1cmVzIGluIGRhbW9zX2FwcGx5X3NjaGVtZSwgcHJldmVudHMgZGl2aWRlLWJ5LXplcm8gLyBib3VuZGFyeSBjYWxjdWxhdGlvbiBlcnJvcnMgaW4gREFNT1MgcXVvdGEgbWV0cmljcyAoZGFtb3NfZ2V0X25vZGVfbWVtX2JwLCBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwLCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icCksIGFuZCBmaXhlcyBmb2xpbyBpdGVyYXRpb24gYWRkcmVzcyBhZHZhbmNlcyBpbiBwYWRkciBhbmQgdmFkZHIgc2NoZW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyBvZiBsYXJnZSBmb2xpb3MuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBEQU1PUyBzY2hlbWUgYXBwbGljYXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY3NjIyZjM5MWFkMzgzNWI5Yzk2ZWU5ZDU2MDRhNjM2ZjgwMWJkYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAzOjMwOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCAzZjg5Y2ZkZjVmMDIyLi4wZGY3ODVlNzI0MzhmIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0yNjA0LDcgKzI2MDQsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbiBcdFx0XHRcdFx0Yy1cdTAwM2VtaW5fcmVnaW9uX3N6KTtcbiBcdFx0XHRpZiAoIXN6KVxuIFx0XHRcdFx0Z290byB1cGRhdGVfc3RhdDtcbi1cdFx0XHRkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opO1xuK1x0XHRcdGlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKVxuK1x0XHRcdFx0Z290byB1cGRhdGVfc3RhdDtcbiBcdFx0fVxuIFx0XHRpZiAoZGFtb3NfY29yZV9maWx0ZXJfb3V0KGMsIHQsIHIsIHMpKVxuIFx0XHRcdHJldHVybjtcbkBAIC0yODA2LDYgKzI4MDcsMTMgQEAgc3RhdGljIF9fa2VybmVsX3Vsb25nX3QgZGFtb3NfZ2V0X25vZGVfbWVtX2JwKFxuIFx0fVxuIFxuIFx0c2lfbWVtaW5mb19ub2RlKFx1MDAyNmksIGdvYWwtXHUwMDNlbmlkKTtcbitcdGlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtIFx1MDAzYyBpLmZyZWVyYW0pIHtcbitcdFx0aWYgKGdvYWwtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlApXG4rXHRcdFx0cmV0dXJuIDEwMDAwO1xuK1x0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQICovXG4rXHRcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcbiBcdFx0bnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIGkuZnJlZXJhbTtcbiBcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cbkBAIC0yODQ2LDYgKzI4NTQsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcbiBcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcbiBcbiBcdHNpX21lbWluZm9fbm9kZShcdTAwMjZpLCBnb2FsLVx1MDAzZW5pZCk7XG4rXHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcdTAwM2MgdXNlZF9wYWdlcykge1xuK1x0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuK1x0XHRcdHJldHVybiAxMDAwMDtcbitcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXG4rXHRcdFx0cmV0dXJuIDA7XG4rXHR9XG4gXHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuIFx0XHRudW1lcmF0b3IgPSB1c2VkX3BhZ2VzO1xuIFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXG5AQCAtMjk5Miw3ICszMDA2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbylcbiBcdFx0Z2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9BQ1RJVkVfRklMRSk7XG4gXHRpbmFjdGl2ZSA9IGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgKyBMUlVfSU5BQ1RJVkVfQU5PTikgK1xuIFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0lOQUNUSVZFX0ZJTEUpO1xuLVx0dG90YWwgPSBhY3RpdmUgKyBpbmFjdGl2ZTtcbitcdHRvdGFsID0gbWF4KGFjdGl2ZSArIGluYWN0aXZlLCAxKTtcbiBcdGlmIChhY3RpdmVfcmF0aW8pXG4gXHRcdHJldHVybiBtdWx0X2ZyYWMoYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xuIFx0cmV0dXJuIG11bHRfZnJhYyhpbmFjdGl2ZSwgMTAwMDAsIHRvdGFsKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9wYWRkci5jIGIvbW0vZGFtb24vcGFkZHIuY1xuaW5kZXggNWM2YzNhNTk3ZmQwYi4uOWRkZDFlYzgyMDJiNyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3BhZGRyLmNcbisrKyBiL21tL2RhbW9uL3BhZGRyLmNcbkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfcGFnZW91dChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFx0XHRlbHNlXG4gXHRcdFx0bGlzdF9hZGQoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZmb2xpb19saXN0KTtcbiBwdXRfZm9saW86XG4tXHRcdGFkZHIgKz0gZm9saW9fc2l6ZShmb2xpbyk7XG4rXHRcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0fVxuIFx0aWYgKGluc3RhbGxfeW91bmdfZmlsdGVyKVxuQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfZGVfYWN0aXZhdGUoXG4gXHRcdFx0Zm9saW9fZGVhY3RpdmF0ZShmb2xpbyk7XG4gXHRcdGFwcGxpZWQgKz0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xuIHB1dF9mb2xpbzpcbi1cdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbitcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xuQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9taWdyYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0XHRsaXN0X2FkZChcdTAwMjZmb2xpby1cdTAwM2VscnUsIFx1MDAyNmZvbGlvX2xpc3QpO1xuIHB1dF9mb2xpbzpcbi1cdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbitcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRhcHBsaWVkID0gZGFtb25fbWlncmF0ZV9wYWdlcyhcdTAwMjZmb2xpb19saXN0LCBzLVx1MDAzZXRhcmdldF9uaWQpO1xuQEAgLTM3OSw3ICszNzksNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9zdGF0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXG4gXHRcdGlmICghZGFtb3NfcGFfZmlsdGVyX291dChzLCBmb2xpbykpXG4gXHRcdFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc2l6ZShmb2xpbykgLyBhZGRyX3VuaXQ7XG4tXHRcdGFkZHIgKz0gZm9saW9fc2l6ZShmb2xpbyk7XG4rXHRcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0fVxuIFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggMDY0ODQwMGIyZDY1Yi4uYzhjMzJiMmFlMDQwMiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3ZhZGRyLmNcbisrKyBiL21tL2RhbW9uL3ZhZGRyLmNcbkBAIC02NjksNiArNjY5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yICg7IGFkZHIgXHUwMDNjIG5leHQ7IHB0ZSArPSBuciwgYWRkciArPSBuciAqIFBBR0VfU0laRSkge1xuK1x0XHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4O1xuK1xuIFx0XHRuciA9IDE7XG4gXHRcdHB0ZW50ID0gcHRlcF9nZXQocHRlKTtcbiBcbkBAIC02ODEsNyArNjgzLDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVx1MDAzZXZtYSwgYWRkciwgZGVzdHMsXG4gXHRcdFx0XHRtaWdyYXRpb25fbGlzdHMpO1xuLVx0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcbitcdFx0cGFnZV9pZHggPSBmb2xpb19wYWdlX2lkeChmb2xpbywgcHRlX3BhZ2UocHRlbnQpKTtcbitcdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDtcbiBcdH1cbiBcdHB0ZV91bm1hcF91bmxvY2soc3RhcnRfcHRlLCBwdGwpO1xuIFx0cmV0dXJuIDA7XG5AQCAtODMxLDYgKzgzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGZvciAoOyBhZGRyIFx1MDAzYyBuZXh0OyBwdGUgKz0gbnIsIGFkZHIgKz0gbnIgKiBQQUdFX1NJWkUpIHtcbitcdFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeDtcbitcbiBcdFx0bnIgPSAxO1xuIFx0XHRwdGVudCA9IHB0ZXBfZ2V0KHB0ZSk7XG4gXG5AQCAtODQ0LDcgKzg0OSw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFxuIFx0XHRpZiAoIWRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkciwgcHRlLCBOVUxMKSlcbiBcdFx0XHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBmb2xpb19zaXplKGZvbGlvKTtcbi1cdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4rXHRcdHBhZ2VfaWR4ID0gZm9saW9fcGFnZV9pZHgoZm9saW8sIHB0ZV9wYWdlKHB0ZW50KSk7XG4rXHRcdG5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pIC0gcGFnZV9pZHg7XG4gXHRcdHMtXHUwMDNlbGFzdF9hcHBsaWVkID0gZm9saW87XG4gXHR9XG4gXHRwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMwOjQ2LjY5NDI2NjExWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYxNDQ1MDQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEQU1PTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIG1vZGlmaWNhdGlvbnMuIFRoZSBjaGFuZ2VzIGFyZSBjb25jZW50cmF0ZWQgd2l0aGluIHRoZSBgbW0vZGFtb24vYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB0b3VjaGluZyBgY29yZS5jYCwgYHBhZGRyLmNgLCBhbmQgYHZhZGRyLmNgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgbmV4dCBzdGVwIGlzIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBEQU1PTiwgdGhlIERhdGEgQWNjZXNzIE1vbml0b3IsIGluIHRoZSBMaW51eCBrZXJuZWwgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gdXAtdG8tZGF0ZSBvbiBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMsIGFzc29jaWF0ZWQgZmlsZXMsIGFuZCBzZWUgd2hhdCBjb2RlIGlzIGNhbGxpbmcgREFNT04gZnVuY3Rpb25zLiBJJ2xsIHNlYXJjaCBmb3IgcmVsYXRlZCBLY29uZmlnIGVudHJpZXMgdG8gZ2V0IHRoZSBjb250ZXh0IHJpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo0OS4zMDg3MTk1NTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjg3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcXFwiRGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1xcXCJcXG5tbS9kYW1vbi9LY29uZmlnLTQtXFxubW0vZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctNi1cXHRib29sIFxcXCJEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTE0LVxcbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL0tjb25maWctMTYtXFx0Ym9vbCBcXFwiQ2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxcbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTI3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxcbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXFxubW0vZGFtb24vS2NvbmZpZy0zOS1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxcbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXFxubW0vZGFtb24vS2NvbmZpZy00OC1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy01NS1cXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy01Ny1cXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxcbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy02OS1cXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxcbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy04Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXFxubW0vZGFtb24vS2NvbmZpZy04OS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctOTktXFxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTA3LVxcbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXFxubW0vZGFtb24vS2NvbmZpZy0xMDktXFx0Ym9vbCBcXFwiQnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTE1LVxcbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxcbm1tL2RhbW9uL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkVuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMwOjQ5LjM1Mzk5MTM2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0Mzc2NTQ4NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGNvcmUuY2AsIGBwYWRkci5jYCwgYW5kIGB2YWRkci5jYCBnZXQgYnVpbHQgd2l0aGluIHRoaXMgREFNT04gc3lzdGVtIGFuZCB3aGF0IHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSBsb29rcyBsaWtlLiBNeSBmaXJzdCBzdG9wIGhhcyB0byBiZSB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdGhlIE1ha2VmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQgYG1tL2RhbW9uL0tjb25maWdgIGFuZCBgbW0vZGFtb24vTWFrZWZpbGVgLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyB0aGF0IGVuYWJsZSB0aGVzZSBmaWxlcyDigJMgYXJlIHRoZXJlIHNwZWNpZmljIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoZW0gdG8gYmUgaW5jbHVkZWQ/IFRoZW4gSSdsbCBoaXQgdGhlIE1ha2VmaWxlIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHJ1bGVzIHRoZW1zZWx2ZXMsIGhvdyB0aGVzZSBzcGVjaWZpYyBzb3VyY2UgZmlsZXMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQuIEZ1cnRoZXJtb3JlLCBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIE1ha2VmaWxlJ3MgcnVsZXMgdGhhdCBoYW5kbGUgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlcy4gQXJlIHRoZXNlIGZpbGVzIGV4cG9zZWQgdGhyb3VnaCBzeXNmcywgZGVidWdmcywgb3IgcGVyaGFwcyBldmVuIHNvbWV0aGluZyBjdXN0b20/IFVuZGVyc3RhbmRpbmcgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlIGlzIGNyaXRpY2FsIGZvciBmaWd1cmluZyBvdXQgaG93IHVzZXJzIHdvdWxkIGludGVyYWN0IHdpdGggdGhlIG1vbml0b3JpbmcgY2FwYWJpbGl0aWVzIG9mIHRoZXNlIGZpbGVzLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRoZSBjb21wbGV0ZSBwaWN0dXJlIOKAkyBmcm9tIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIGV4dGVybmFsIGFjY2Vzc2liaWxpdHkg4oCTIHRvIGdyYXNwIHRoZSBmdWxsIHNjb3BlIG9mIHRoZWlyIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NDQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo1MS43OTE2NDk2MzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0b2JqLXlcXHRcXHRcXHRcXHQ6PSBjb3JlLm9cXG4gICA0OlxcdG9iai0kKENPTkZJR19EQU1PTl9WQUREUilcXHQrPSBvcHMtY29tbW9uLm8gdmFkZHIub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1BBRERSKVxcdCs9IG9wcy1jb21tb24ubyBwYWRkci5vXFxuICAgNjpcXHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXFx0Kz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXFxuICAgODpcXHRvYmotJChDT05GSUdfREFNT05fTFJVX1NPUlQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBscnVfc29ydC5vXFxuICAgOTpcXHRvYmotJChDT05GSUdfREFNT05fU1RBVClcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo1MS43OTE3MDU4MThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODIxMTE3MTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uIERlcHRocyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdCBwbGF5LiBMZXQncyBub3QgcmVseSBvbiBpbnR1aXRpb24gaGVyZSDigJMgdGhhdCdzIGEgcmVjaXBlIGZvciBoZWFkYWNoZXMgZG93biB0aGUgcm9hZCEgVGhlIGJlc3QgYXBwcm9hY2ggaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdG8gdGhlIGF1dGhvcml0YXRpdmUgZGVmaW5pdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIFRoYXQncyB3aGVyZSB0aGUgcmVhbCB0cnV0aCBpcy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGZ1bGwgcGljdHVyZSBsb29rcyBsaWtlLiBObyBzaG9ydGN1dHMsIGp1c3QgYSBjbGVhbiB2aWV3IG9mIHRoZSByZWxhdGlvbnNoaXBzIGFuZCBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzA6NTMuNjEyODI2MDkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRtZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgREFNT05cXG4gICA2OlxcdFxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxcbiAgIDk6XFx0XFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcXG4gIDEwOlxcdFxcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcXG4gIDEzOlxcdFxcdCAgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxcbiAgMTY6XFx0XFx0Ym9vbCBcXFwiQ2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIERBTU9OXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBhZGRpdGlvbmFsIERBTU9OIGRlYnVnZ2luZy1wdXJwb3NlIHNhbml0eSBjaGVja3MgaW5cXG4gIDIwOlxcdFxcdCAgREFNT04gY29kZS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZmluZGluZyBidWdzLCBidXQgaW1wb3NlXFxuICAyMTpcXHRcXHQgIGFkZGl0aW9uYWwgb3ZlcmhlYWQuICBUaGlzIGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byBiZSBlbmFibGVkIG9uXFxuICAyMjpcXHRcXHQgIG9ubHkgZGV2ZWxvcG1lbnQgYW5kIHRlc3Qgc2V0dXBzLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyNTpcXHRcXG4gIDI2OlxcdGNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxuICAyNzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgMjg6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBLVU5JVD15XFxuICAyOTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDM0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIERBTU9OX1ZBRERSXFxuICAzOTpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNDE6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA0MjpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDQ1OlxcdFxcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgREFNT05fUEFERFJcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNTA6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA1MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDU0OlxcdFxcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuICA1NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDU5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuICA2MDpcXHRcXHRoZWxwXFxuICA2MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiB2aXJ0dWFsIGFkZHJlc3NlcyBvcGVyYXRpb25zIEt1bml0IHRlc3Qgc3VpdGUuXFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXFxuICA2NDpcXHRcXHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA2NzpcXHRcXG4gIDY4OlxcdGNvbmZpZyBEQU1PTl9TWVNGU1xcbiAgNjk6XFx0XFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbiAgNzA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbiAgNzE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcXG4gIDc0OlxcdFxcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXFxuICA3NTpcXHRcXG4gIDc2OlxcdGNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxuICA3NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbiAgNzk6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDgwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzA6NTMuNjEyOTAyMzYyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjczNDM4OTA5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nIOKAkyBtb3N0IGxpa2VseSwgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBNTS9EQU1PTiBzdWJzeXN0ZW0uIEkgc2VlIHRoZSBzdGFydGluZyBwb2ludCBpcyB0byBkaXZlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGBtbS9kYW1vbi9LY29uZmlnYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBzb21lIGludGVyZXN0aW5nIGRldGFpbCB0aGVyZSB0aGF0IHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGZlYXR1cmVzLCBvciBtYXliZSBldmVuIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIHdpdGhpbiBEQU1PTidzIEtjb25maWcgZmlsZS4gSSdtIGhvcGluZyB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQ7IGlkZW50aWZ5IHBvdGVudGlhbCBjdXN0b21pemF0aW9uIHBvaW50cyBmb3IgdGhpcyBzdWJzeXN0ZW0uIEdpdmVuIHRoaXMgaXMgYSBLY29uZmlnIGZpbGUsIGl0IGNvbnRhaW5zIHRoZSBidWlsZCBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoYXQgbG9naWMgZ292ZXJucyB0aGVtIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFuZCBiZWhhdmlvciBvZiBEQU1PTi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgY29tcGxleCBkZXBlbmRlbmN5IHRyZWUsIHdpdGggcG90ZW50aWFsIGNyb3NzLWFyY2hpdGVjdHVyYWwgY29uc2lkZXJhdGlvbnMuIEkgYW0gaW50ZXJlc3RlZCB0byBzZWUgd2hhdCBvcHRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IGZvciBteSBjdXJyZW50IGFyZWEgb2YgZm9jdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMwOjU2LjM0NzI5Mzk0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgxOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxcbiAgODI6XFx0XFxuICA4MzpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxcbiAgODQ6XFx0XFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgODc6XFx0XFxuICA4ODpcXHRjb25maWcgREFNT05fUkVDTEFJTVxcbiAgODk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuICA5MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCByZWNsYW1hdGlvbiBzdWJzeXN0ZW0uICBJdCBmaW5kcyBwYWdlc1xcbiAgOTM6XFx0XFx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXFxuICA5NDpcXHRcXHQgIHRob3NlLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHQgIFRoaXMgaXMgc3VnZ2VzdGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9hY3RpdmUgYW5kIGxpZ2h0d2VpZ2h0XFxuICA5NzpcXHRcXHQgIHJlY2xhbWF0aW9uIHVuZGVyIGxpZ2h0IG1lbW9yeSBwcmVzc3VyZSwgd2hpbGUgdGhlIHRyYWRpdGlvbmFsIHBhZ2VcXG4gIDk4OlxcdFxcdCAgc2Nhbm5pbmctYmFzZWQgcmVjbGFtYXRpb24gaXMgdXNlZCBmb3IgaGVhdnkgcHJlc3N1cmUuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbiAxMDE6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG4gMTAyOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gMTAzOlxcdFxcdGhlbHBcXG4gMTA0OlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXFxuIDEwNTpcXHRcXHQgIHByb3RlY3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAoaG90KSBwYWdlcyB3aGlsZSByYXJlbHkgYWNjZXNzZWQgKGNvbGQpXFxuIDEwNjpcXHRcXHQgIHBhZ2VzIHJlY2xhaW1lZCBmaXJzdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuXFxuIDEwNzpcXHRcXG4gMTA4OlxcdGNvbmZpZyBEQU1PTl9TVEFUXFxuIDEwOTpcXHRcXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbiAxMTA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbiAxMTE6XFx0XFx0aGVscFxcbiAxMTI6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdGlzdGljcyBzdWJzeXN0ZW0uXFxuIDExMzpcXHRcXHQgIEl0IHJ1bnMgREFNT04gYW5kIGV4cG9zZSBhY2Nlc3MgbW9uaXRvcmluZyByZXN1bHRzIGluIHNpbXBsZSBzdGF0XFxuIDExNDpcXHRcXHQgIG1ldHJpY3MuXFxuIDExNTpcXHRcXG4gMTE2OlxcdGNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxcbiAxMTc6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFxcXCJcXG4gMTE4OlxcdFxcdGRlcGVuZHMgb24gREFNT05fU1RBVFxcbiAxMTk6XFx0XFx0ZGVmYXVsdCBEQU1PTl9TVEFUXFxuIDEyMDpcXHRcXHRoZWxwXFxuIDEyMTpcXHRcXHQgIFdoZXRoZXIgdG8gZW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdC4gIFVzZXJzIGNhbiBkaXNhYmxlIGl0IGluXFxuIDEyMjpcXHRcXHQgIGJvb3Qgb3IgcnVudGltZSB1c2luZyBpdHMgJ2VuYWJsZWQnIHBhcmFtZXRlci5cXG4gMTIzOlxcdFxcbiAxMjQ6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo1Ni4zNDczNzA4NDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkwNDQwMjI0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gZmluZGluZyB0aGUgcGFyZW50IEtjb25maWcgZm9yIERBTU9OLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRmluZGluZyBEQU1PTidzIFBhcmVudCBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQgZm9yIERBTU9OLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgbW0vZGFtb24vS2NvbmZpZ2AgZmlsZSBpcyBhY3R1YWxseSAqaW5jbHVkZWQqLiBJdCdzIG5vdCBlbm91Z2ggdG8ganVzdCBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUgaXRzZWxmOyBJIG5lZWQgdG8gdHJhY2UgaXRzIGluY2x1c2lvbiBwYXRoIHRvIHNlZSB3aGVyZSBpdCBzaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbmZpZ3VyYXRpb24gaGllcmFyY2h5LiBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIHRvIGRvIHNvbWUgc2VhcmNoaW5nIGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgdGhhdCBicmluZyBgbW0vZGFtb24vS2NvbmZpZ2AgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBUaW1lIHRvIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYzNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzA6NTguMjUxNzc1ODg0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY2Njc0NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qbW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTE0ODU9Y29uZmlnIExBWllfTU1VX01PREVfS1VOSVRfVEVTVFxcbi0tXFxubW0vS2NvbmZpZy0xNDk2LVxcbm1tL0tjb25maWc6MTQ5Nzpzb3VyY2UgXFxcIm1tL2RhbW9uL0tjb25maWdcXFwiXFxubW0vS2NvbmZpZy0xNDk4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTowMC42MTg0NTYyMDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjY1MDAwMTEwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBQYXRjaCBBbmFseXNpcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIERBTU9OIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSB0aGVyZSBhcmUgbm8gc2lnbmlmaWNhbnQgZGVwZW5kZW5jeSBpc3N1ZXMgZm9yIHRoZSBgREFNT05gIHN1YnN5c3RlbSBpdHNlbGYgaW4gYG1tL0tjb25maWdgLCBhbmQgaXQgYXBwZWFycyBJJ20gcmlnaHQ6IHRoZXJlIGFyZSBub25lIGJleW9uZCB0aGUgYmFzaWMgYE1NVWAsIGBTWVNGU2AsIGV0Yy4gd2hpY2ggYXJlIHN0YW5kYXJkLiBHb29kLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIGNvZGUgY2hhbmdlcy4gSSdsbCBmb2N1cyBvbiB0aGUgaW1wYWN0IG9mIGVhY2ggbW9kaWZpY2F0aW9uIGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCBpdC5cblxuSW4gYG1tL2RhbW9uL2NvcmUuY2AsIHRoZSBkaWZmIGluIGBkYW1vc19hcHBseV9zY2hlbWUoKWAgaXMgbm90aWNlYWJsZS4gVGhlIGFkZGVkIGNvbmRpdGlvbmFsIGluIHRoZSBgZGFtb25fc3BsaXRfcmVnaW9uX2F0KClgIGNhbGw6IGBpZiAoZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KSlgIGluZGljYXRlcyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gY29udHJvbCBmbG93IGJhc2VkIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhhdCBmdW5jdGlvbi4gVGhlIGBnb3RvIHVwZGF0ZV9zdGF0YCBjbGF1c2Ugc3VnZ2VzdHMgdGhlIHNwbGl0J3Mgc3VjY2VzcyBvciBmYWlsdXJlIGlzIG5vdyBkaXJlY3RseSBhZmZlY3Rpbmcgc3RhdGlzdGljIHVwZGF0ZXMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIGFwcGVhcnMgdGhlIGZ1bmN0aW9uIGBkYW1vc19jb3JlX2ZpbHRlcl9vdXRgIGlzIHRoZSBwcmltYXJ5IGZpbHRlciBvZiBgY29yZS5jYC5cblxuVGhlIGFkZGl0aW9ucyBpbiBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwKClgIGFuZCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icCgpYCBzZWVtIHJlbGF0ZWQgdG8gbW9yZSByb2J1c3QgbWVtb3J5IHN0YXRpc3RpY3MgY29sbGVjdGlvbi4gQ2hlY2tpbmcgaWYgYGkudG90YWxyYW1gIGlzIHZhbGlkIChgIWkudG90YWxyYW1gKSBvciBpZiBgdG90YWxyYW1gIGlzIHNtYWxsZXIgdGhhbiBgZnJlZXJhbWAgc2hvdWxkIHByZXZlbnQgZGl2aXNpb24tYnktemVybyBlcnJvcnMgb3IgdW5yZWFzb25hYmxlIGNhbGN1bGF0aW9ucy4gVGhlIGFkZGVkIGNoZWNrcyBhcHBlYXIgdG8gYmUgZm9yIHRoZXNlIHVubGlrZWx5IGNhc2VzLCByZXR1cm5pbmcgYSBmaXhlZCB2YWx1ZSAoMTAwMDAgb3IgMCkgaW4gY2FzZXMgd2hlcmUgbWVtb3J5IGluZm9ybWF0aW9uIGlzbid0IGF2YWlsYWJsZSBvciB3b3VsZCBnaXZlIGFuIG5vbnNlbnNpY2FsIHJlc3VsdC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgMTAwMDBgIGNvcnJlc3BvbmRzIHRvIGEgcGVyY2VudGFnZSwgZm9yIGluc3RhbmNlLCBpbiB0aGUgc3Vycm91bmRpbmcgY29kZS5cblxuVGhlIGNoYW5nZSBpbiBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnAoKWAgd2hlcmUgYHRvdGFsID0gYWN0aXZlICsgaW5hY3RpdmVgIGlzIG5vdyBgdG90YWwgPSBtYXgoYWN0aXZlICsgaW5hY3RpdmUsIDEpYCBpcyBhIHNvbGlkIHNhZmV0eSBuZXQuIFRoaXMgZ3VhcmFudGVlcyBhIG5vbi16ZXJvIGRlbm9taW5hdG9yIHdoZW4gY2FsY3VsYXRpbmcgcmF0aW9zLCB3aGljaCBpcyBhIGtleSBpbXByb3ZlbWVudC4gVGhpcyBsb29rcyBsaWtlIGEgbmVjZXNzYXJ5IGNoZWNrIHRvIHByZXZlbnQgZGl2aWRlLWJ5LXplcm8gZXJyb3JzLlxuXG5Nb3ZpbmcgdG8gYG1tL2RhbW9uL3BhZGRyLmNgLCB0aGUgY2hhbmdlcyBhcmUgYWxsIGluIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpdGggdGhlIHNhbWUgbGluZSBhZGRlZDogYGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO2AuIFRoaXMgYWRkaXRpb24gaXMgaW4gc2V2ZXJhbCBmdW5jdGlvbnMsIGJ1dCB0aGV5IGFsbCBhcHBlYXIgdG8gcGVyZm9ybSB0aGUgc2FtZSBvcGVyYXRpb24uXG5cbkZpbmFsbHksIGluIGBtbS9kYW1vbi92YWRkci5jYCwgdGhlIHVzZSBvZiBgZm9saW9fcGFnZV9pZHgoKWAgYW5kIGBmb2xpb19ucl9wYWdlcygpYCBpcyBiZWluZyBhZG9wdGVkIHRvIGNhbGN1bGF0ZSB0aGUgcGFnZSBpbmRleCBhbmQgbnVtYmVyIG9mIHBhZ2VzLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2VzIGludm9sdmUgdXNpbmcgZm9saW8gZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgZm9yIHBtZCBhbmQgcHRlIGVudHJpZXMsIHN1Z2dlc3RzIHRoZSBwYXRjaCBpcyB1cGdyYWRpbmcgdGhlIGNvZGUgdG8gdXNlIHRoZSBtb2Rlcm4gZm9saW8gaW50ZXJmYWNlIG1vcmUgY29uc2lzdGVudGx5LlxuXG5Ob3csIGxldCdzIHNlZSBob3cgdGhlc2UgdXBkYXRlZCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHVzZXJzcGFjZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvcGVyYXRpb24gaW4gdGhlIGBwYWRkci5jYCwgYHZhZGRyLmNgLCBhbmQgYGNvcmUuY2AgYXJlIHJlZ2lzdGVyZWQsIGFuZCBob3cgdGhlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZC4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgb3ZlcmFsbCBpbXBhY3Qgb24gREFNT04ncyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkzMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MDcuMjY4NDU5NTU4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgzMzkyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfYXBwbHlfc2NoZW1lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MjU0OT1zdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjU2Mi1cXG5tbS9kYW1vbi9jb3JlLmM6MjU2MzpzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG5tbS9kYW1vbi9jb3JlLmMtMjU2NC1cXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjYzND1zdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjY2MC1cXHRcXHRpZiAoZGFtb3NfdmFsaWRfdGFyZ2V0KGMsIHIsIHMpKVxcbm1tL2RhbW9uL2NvcmUuYzoyNjYxOlxcdFxcdFxcdGRhbW9zX2FwcGx5X3NjaGVtZShjLCB0LCByLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMjY2Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MDcuNDA2ODA2MDI4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyODE1MzA2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gQWRkcmVzcyBUcmFuc2xhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIGhvdyBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgYXJlIG1hbmFnZWQgd2l0aGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmRhbWVudGFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuIExldCdzIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2Agc291cmNlIGZpbGVzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgcGh5c2ljYWwgYWRkcmVzcyAoUEEpIGFuZCB2aXJ0dWFsIGFkZHJlc3MgKFZBKSBzcGFjZXMgYXJlIGRlZmluZWQsIGFuZCBob3cgdGhlIG1hcHBpbmdzIGJldHdlZW4gdGhlbSBhcmUgZXN0YWJsaXNoZWQgYW5kIG1haW50YWluZWQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZm9yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCwgbGlrZSBob3cgdGhlIHBhZ2UgdGFibGVzIGFyZSBvcmdhbml6ZWQsIGFuZCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIGFkZHJlc3MgdHJhbnNsYXRpb24uIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZCB0byBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUgcGFnZSB0YWJsZSBlbnRyaWVzLCBhbmQgd2hhdCBsb2NraW5nIG1lY2hhbmlzbXMgYXJlIGVtcGxveWVkIGZvciBjb25jdXJyZW50IGFjY2Vzcy4gSSBhbHNvIGhvcGUgdG8gZ2FpbiBhIGJldHRlciBncmFzcCBvZiBtZW1vcnkgbWFuYWdlbWVudCwgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBvcGVyYXRpb25zLiBJIGV4cGVjdCBhIGdvb2QgbG9vayBhdCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIGJvdGggZGlyZWN0IGFuZCBpbmRpcmVjdCBtYXBwaW5ncywgYXMgd2VsbCBhcyB0aGUgcG90ZW50aWFsIGZvciBpc3N1ZXMgd2l0aCBhZGRyZXNzIGFsaWFzaW5nIG9yIGZyYWdtZW50YXRpb24uIEhvcGVmdWxseSwgYHBhZGRyLmNgIHJldmVhbHMgaG93IHRoZSBwaHlzaWNhbCBtZW1vcnkgaXMgcmVwcmVzZW50ZWQsIGFuZCBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUncyBtZW1vcnkgY29udHJvbGxlci4gQW5kIHRoZSBgdmFkZHIuY2Agc2hvdWxkIHNob3cgaG93IHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMgYXJlIHN0cnVjdHVyZWQsIGFuZCBob3cgcHJvY2Vzc2VzIGFyZSBpc29sYXRlZCBmcm9tIGVhY2ggb3RoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NzksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToxMC42ODgzMzkxMzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4Nzk0OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBkYW1vbl9vcGVyYXRpb25zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MzA9c3RhdGljIERFRklORV9NVVRFWChkYW1vbl9vcHNfbG9jayk7XFxubW0vZGFtb24vY29yZS5jOjMxOnN0YXRpYyBzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBkYW1vbl9yZWdpc3RlcmVkX29wc1tOUl9EQU1PTl9PUFNdO1xcbm1tL2RhbW9uL2NvcmUuYy0zMi1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNj1zdGF0aWMgYm9vbCBfX2RhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy0zNy17XFxubW0vZGFtb24vY29yZS5jOjM4OlxcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIGVtcHR5X29wcyA9IHt9O1xcbm1tL2RhbW9uL2NvcmUuYy0zOS1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz01MT1ib29sIGRhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo3MjppbnQgZGFtb25fcmVnaXN0ZXJfb3BzKHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zICpvcHMpXFxubW0vZGFtb24vY29yZS5jLTczLXtcXG4tLVxcbm1tL2RhbW9uL3BhZGRyLmM9NDM3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3BhX2luaXRjYWxsKHZvaWQpXFxubW0vZGFtb24vcGFkZHIuYy00Mzgte1xcbm1tL2RhbW9uL3BhZGRyLmM6NDM5OlxcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wcyA9IHtcXG5tbS9kYW1vbi9wYWRkci5jLTQ0MC1cXHRcXHQuaWQgPSBEQU1PTl9PUFNfUEFERFIsXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9NDE4PXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3Rfb3BzX3JlZ2lzdHJhdGlvbihzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDIwLVxcdHN0cnVjdCBkYW1vbl9jdHggKmMgPSBkYW1vbl9uZXdfY3R4KCk7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjQyMTpcXHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7LmlkID0gREFNT05fT1BTX1ZBRERSfSwgYmFrO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00MjItXFx0Ym9vbCBuZWVkX2NsZWFudXAgPSBmYWxzZTtcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00NDYtXFx0XFx0ZGFtb25fcmVnaXN0ZXJlZF9vcHNbREFNT05fT1BTX1ZBRERSXSA9XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjQ0NzpcXHRcXHRcXHQoc3RydWN0IGRhbW9uX29wZXJhdGlvbnMpe307XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQ0OC1cXHR9XFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDYzLVxcdFxcdFxcdGRhbW9uX3JlZ2lzdGVyZWRfb3BzW0RBTU9OX09QU19WQUREUl0gPVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo0NjQ6XFx0XFx0XFx0XFx0KHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zKXt9O1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00NjUtXFx0fVxcbi0tXFxubW0vZGFtb24vdmFkZHIuYz05NDM9c3RhdGljIGludCBfX2luaXQgZGFtb25fdmFfaW5pdGNhbGwodm9pZClcXG5tbS9kYW1vbi92YWRkci5jLTk0NC17XFxubW0vZGFtb24vdmFkZHIuYzo5NDU6XFx0c3RydWN0IGRhbW9uX29wZXJhdGlvbnMgb3BzID0ge1xcbm1tL2RhbW9uL3ZhZGRyLmMtOTQ2LVxcdFxcdC5pZCA9IERBTU9OX09QU19WQUREUixcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtOTU2LVxcdC8qIG9wcyBmb3IgZml4ZWQgdmlydHVhbCBhZGRyZXNzIHJhbmdlcyAqL1xcbm1tL2RhbW9uL3ZhZGRyLmM6OTU3OlxcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wc19mdmFkZHIgPSBvcHM7XFxubW0vZGFtb24vdmFkZHIuYy05NTgtXFx0aW50IGVycjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MTAuNzM3MTM5MzU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMjExNDQ4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCBzdWl0YWJsZSBmb3IgYSBmaWVsZCBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEFkZHJlc3MgVHJhbnNsYXRpb24gT3BlcmF0aW9ucyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiBob3cgcGh5c2ljYWwgYW5kIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMgYXJlIG1hbmFnZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBJJ2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AuIE15IGZvY3VzIGlzbid0IG5lY2Vzc2FyaWx5IG9uIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZSBhdCB0aGlzIHN0YWdlLCBJIGFscmVhZHkgaGF2ZSBhIGZpcm0gZ3Jhc3Agb2YgdGhhdC4gSW5zdGVhZCwgSSdtIHplcm9pbmcgaW4gb24gdGhlICppbXBsZW1lbnRhdGlvbiBkZXRhaWxzKi4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGNhbGxiYWNrcyBmb3IgdGhlIGFkZHJlc3MgdHJhbnNsYXRpb24gb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBhbmQgdXNlZC4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25zIGhlcmU6IHRoZSBjb3JlIHJvdXRpbmVzIHJlc3BvbnNpYmxlIGZvciBtYXBwaW5nIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHBoeXNpY2FsIGFkZHJlc3NlcyBhbmQgdmljZS12ZXJzYS4gSSdtIGludGVyZXN0ZWQgaW4gdGhlIGludHJpY2FjaWVzIG9mIHBhZ2UgdGFibGUgd2Fsa3MsIHRoZSBoYW5kbGluZyBvZiBkaWZmZXJlbnQgbWVtb3J5IHJlZ2lvbnMsIGFuZCBhbnkgb3B0aW1pemF0aW9ucyB0aGV5J3ZlIGltcGxlbWVudGVkLiBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBiZWluZyBtYW5pcHVsYXRlZD8gQXJlIHRoZXkgdXNpbmcgYW55IGNsZXZlciB0cmlja3MgZm9yIHBlcmZvcm1hbmNlIG9yIG1lbW9yeSBlZmZpY2llbmN5PyBXaGF0IGVycm9yIGNvbmRpdGlvbnMgYXJlIGJlaW5nIGhhbmRsZWQ/IEFuZCBob3cgdGhleSBhcmUgYWxsIGxpbmtlZCB0b2dldGhlci4gSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgZXhlY3V0aW9uIHBhdGhzLCB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkIGFuZCBkZWFsbG9jYXRlZCBhcyBwYXJ0IG9mIHRoZSB0cmFuc2xhdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE1NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjEzLjk1ODI4NjgzN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9wYWRkci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQzMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQzMDpcXHRcXHRkZWZhdWx0OlxcbiA0MzE6XFx0XFx0XFx0YnJlYWs7XFxuIDQzMjpcXHRcXHR9XFxuIDQzMzpcXHRcXG4gNDM0OlxcdFxcdHJldHVybiBEQU1PU19NQVhfU0NPUkU7XFxuIDQzNTpcXHR9XFxuIDQzNjpcXHRcXG4gNDM3OlxcdHN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3BhX2luaXRjYWxsKHZvaWQpXFxuIDQzODpcXHR7XFxuIDQzOTpcXHRcXHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7XFxuIDQ0MDpcXHRcXHRcXHQuaWQgPSBEQU1PTl9PUFNfUEFERFIsXFxuIDQ0MTpcXHRcXHRcXHQuaW5pdCA9IE5VTEwsXFxuIDQ0MjpcXHRcXHRcXHQudXBkYXRlID0gTlVMTCxcXG4gNDQzOlxcdFxcdFxcdC5wcmVwYXJlX2FjY2Vzc19jaGVja3MgPSBkYW1vbl9wYV9wcmVwYXJlX2FjY2Vzc19jaGVja3MsXFxuIDQ0NDpcXHRcXHRcXHQuY2hlY2tfYWNjZXNzZXMgPSBkYW1vbl9wYV9jaGVja19hY2Nlc3NlcyxcXG4gNDQ1OlxcdFxcdFxcdC5hcHBseV9wcm9iZXMgPSBkYW1vbl9wYV9hcHBseV9wcm9iZXMsXFxuIDQ0NjpcXHRcXHRcXHQudGFyZ2V0X3ZhbGlkID0gTlVMTCxcXG4gNDQ3OlxcdFxcdFxcdC5hcHBseV9zY2hlbWUgPSBkYW1vbl9wYV9hcHBseV9zY2hlbWUsXFxuIDQ0ODpcXHRcXHRcXHQuZ2V0X3NjaGVtZV9zY29yZSA9IGRhbW9uX3BhX3NjaGVtZV9zY29yZSxcXG4gNDQ5OlxcdFxcdH07XFxuIDQ1MDpcXHRcXG4gNDUxOlxcdFxcdHJldHVybiBkYW1vbl9yZWdpc3Rlcl9vcHMoXFx1MDAyNm9wcyk7XFxuIDQ1MjpcXHR9XFxuIDQ1MzpcXHRcXG4gNDU0OlxcdHN1YnN5c19pbml0Y2FsbChkYW1vbl9wYV9pbml0Y2FsbCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjEzLjk1ODM1MzkzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTYzNDQzODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IGRlZXAgaW4ga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50LlxuXG4qKkRpdmluZyBpbnRvIERBTU9OJ3MgUGh5c2ljYWwgQWRkcmVzcyBBcHBsaWNhdGlvbioqXG5cblJpZ2h0LCBsZXQgbWUgcHVsbCB1cCB0aGUgY29kZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGhvdyBEQU1PTiwgc3BlY2lmaWNhbGx5IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFwcGxpY2F0aW9uIHNjaGVtZSAoYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWApLCBhY3R1YWxseSB3b3Jrcy4gVGhhdCdzIGdvaW5nIHRvIGJlIGluIGBtbS9kYW1vbi9wYWRkci5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCB3aGVyZSBEQU1PTiB0YWtlcyB0aG9zZSBjb2xsZWN0ZWQgbW9uaXRvcmluZyByZXN1bHRzIGFuZCwgcHJlc3VtYWJseSwgaW50ZXJhY3RzIHdpdGggdGhlIGFjdHVhbCBwaHlzaWNhbCBtZW1vcnkgbWFwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIHRoZSBwaHlzaWNhbCBwYWdlcyB0byBiZSBtYW5hZ2VkIGFuZCB3aGF0IGFjdGlvbnMgaXQncyBwZXJmb3JtaW5nIG9uIHRoZW0uIEkgd2FudCB0byBzZWUgaWYgdGhlIGltcGxlbWVudGF0aW9uIGxvZ2ljIG1lZXRzIHRoZSBkZXNpZ24sIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIG9wdGltaXphdGlvbiBpc3N1ZXMgb3IgY29uY3VycmVuY3kgY29uY2VybnMuIExldCdzIHNlZSBob3cgdGhleSBoYW5kbGUgbWVtb3J5IG1hcHBpbmcgdXBkYXRlcywgcGFnZSBmYXVsdCBhbmQgb3RoZXIgaW1wb3J0YW50IG9wZXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODMzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToxNS45MjE4MDA2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9wYWRkci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM5MCxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM5MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbiAzOTE6XFx0XFx0XFx0c3RydWN0IGRhbW9zICpzY2hlbWUsIHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXFxuIDM5MjpcXHR7XFxuIDM5MzpcXHRcXHR1bnNpZ25lZCBsb25nIGF1bml0ID0gY3R4LVxcdTAwM2VhZGRyX3VuaXQ7XFxuIDM5NDpcXHRcXG4gMzk1OlxcdFxcdHN3aXRjaCAoc2NoZW1lLVxcdTAwM2VhY3Rpb24pIHtcXG4gMzk2OlxcdFxcdGNhc2UgREFNT1NfUEFHRU9VVDpcXG4gMzk3OlxcdFxcdFxcdHJldHVybiBkYW1vbl9wYV9wYWdlb3V0KHIsIGF1bml0LCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbiAzOTg6XFx0XFx0Y2FzZSBEQU1PU19MUlVfUFJJTzpcXG4gMzk5OlxcdFxcdFxcdHJldHVybiBkYW1vbl9wYV9hY3RpdmF0ZV9wYWdlcyhyLCBhdW5pdCwgc2NoZW1lLFxcbiA0MDA6XFx0XFx0XFx0XFx0XFx0c3pfZmlsdGVyX3Bhc3NlZCk7XFxuIDQwMTpcXHRcXHRjYXNlIERBTU9TX0xSVV9ERVBSSU86XFxuIDQwMjpcXHRcXHRcXHRyZXR1cm4gZGFtb25fcGFfZGVhY3RpdmF0ZV9wYWdlcyhyLCBhdW5pdCwgc2NoZW1lLFxcbiA0MDM6XFx0XFx0XFx0XFx0XFx0c3pfZmlsdGVyX3Bhc3NlZCk7XFxuIDQwNDpcXHRcXHRjYXNlIERBTU9TX01JR1JBVEVfSE9UOlxcbiA0MDU6XFx0XFx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XFxuIDQwNjpcXHRcXHRcXHRyZXR1cm4gZGFtb25fcGFfbWlncmF0ZShyLCBhdW5pdCwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gNDA3OlxcdFxcdGNhc2UgREFNT1NfU1RBVDpcXG4gNDA4OlxcdFxcdFxcdHJldHVybiBkYW1vbl9wYV9zdGF0KHIsIGF1bml0LCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbiA0MDk6XFx0XFx0ZGVmYXVsdDpcXG4gNDEwOlxcdFxcdFxcdC8qIERBTU9TIGFjdGlvbnMgdGhhdCBub3QgeWV0IHN1cHBvcnRlZCBieSAncGFkZHInLiAqL1xcbiA0MTE6XFx0XFx0XFx0YnJlYWs7XFxuIDQxMjpcXHRcXHR9XFxuIDQxMzpcXHRcXHRyZXR1cm4gMDtcXG4gNDE0OlxcdH1cXG4gNDE1OlxcdFxcbiA0MTY6XFx0c3RhdGljIGludCBkYW1vbl9wYV9zY2hlbWVfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqY29udGV4dCxcXG4gNDE3OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqc2NoZW1lKVxcbiA0MTg6XFx0e1xcbiA0MTk6XFx0XFx0c3dpdGNoIChzY2hlbWUtXFx1MDAzZWFjdGlvbikge1xcbiA0MjA6XFx0XFx0Y2FzZSBEQU1PU19QQUdFT1VUOlxcbiA0MjE6XFx0XFx0XFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcXG4gNDIyOlxcdFxcdGNhc2UgREFNT1NfTFJVX1BSSU86XFxuIDQyMzpcXHRcXHRcXHRyZXR1cm4gZGFtb25faG90X3Njb3JlKGNvbnRleHQsIHIsIHNjaGVtZSk7XFxuIDQyNDpcXHRcXHRjYXNlIERBTU9TX0xSVV9ERVBSSU86XFxuIDQyNTpcXHRcXHRcXHRyZXR1cm4gZGFtb25fY29sZF9zY29yZShjb250ZXh0LCByLCBzY2hlbWUpO1xcbiA0MjY6XFx0XFx0Y2FzZSBEQU1PU19NSUdSQVRFX0hPVDpcXG4gNDI3OlxcdFxcdFxcdHJldHVybiBkYW1vbl9ob3Rfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcXG4gNDI4OlxcdFxcdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxcbiA0Mjk6XFx0XFx0XFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcXG4gNDMwOlxcdFxcdGRlZmF1bHQ6XFxuIDQzMTpcXHRcXHRcXHRicmVhaztcXG4gNDMyOlxcdFxcdH1cXG4gNDMzOlxcdFxcbiA0MzQ6XFx0XFx0cmV0dXJuIERBTU9TX01BWF9TQ09SRTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MTUuOTIxODc0NTlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyNTY2OTk0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFZpcnR1YWwgQWRkcmVzcyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byBgbW0vZGFtb24vdmFkZHIuY2AuIFRoaXMgc3VnZ2VzdHMgSSdtIGFib3V0IHRvIHNjcnV0aW5pemUgdGhlIHZpcnR1YWwgYWRkcmVzcy1yZWxhdGVkIGNvZGUgd2l0aGluIERBTU9OIOKAkyB0aGUgRGF0YSBBY2Nlc3MgTU9OaXRvci4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJ20gbGlrZWx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyBzcGVjaWZpYywgb3IgcGVyaGFwcyBhaW1pbmcgZm9yIGEgZ2VuZXJhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBEQU1PTiBpbnRlcmFjdHMgd2l0aCB2aXJ0dWFsIG1lbW9yeSBzcGFjZXMuIEkgY291bGQgYmUgaW52ZXN0aWdhdGluZyBob3cgaXQgaWRlbnRpZmllcywgdHJhY2tzLCBhbmQgcG90ZW50aWFsbHkgbWFuaXB1bGF0ZXMgdmlydHVhbCBhZGRyZXNzZXMgZm9yIGl0cyBkYXRhIG1vbml0b3JpbmcgYW5kIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzLiBJJ20gcHJvYmFibHkgaW50ZXJlc3RlZCBpbiBkZXRhaWxzIGFib3V0IGl0cyBoYW5kbGluZyBvZiBhZGRyZXNzIHRyYW5zbGF0aW9uLCBwYWdlIGZhdWx0cywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBQZXJoYXBzIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIHBhdGggYSB2aXJ0dWFsIGFkZHJlc3MgdGFrZXMgdGhyb3VnaCBEQU1PTidzIG1vbml0b3JpbmcgcHJvY2VzcywgZnJvbSBpbml0aWFsIGFjY2VzcyB0byBhbnkgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgdHJpZ2dlcmVkLiBJIGV4cGVjdCB0byBzZWUgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIGhhbmRsaW5nIHRoaW5ncyBsaWtlIGFkZHJlc3MgcmFuZ2VzLCByZWdpb25zLCBhbmQgbWF5YmUgZXZlbiBjYWNoZSBsaW5lcywgYWxsIGluIHRoZSBjb250ZXh0IG9mIHZpcnR1YWwgbWVtb3J5IG1hbmFnZW1lbnQuIEknbSBrZWVuIHRvIHNlZSBpZiBEQU1PTidzIGFwcHJvYWNoIGlzIGVmZmljaWVudCwgYWNjdXJhdGUsIGFuZCBkb2Vzbid0IGludHJvZHVjZSBleGNlc3NpdmUgb3ZlcmhlYWQuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgb2YgREFNT04ncyB2aXJ0dWFsIGFkZHJlc3MgbWFuaXB1bGF0aW9uIGxpdmVzLCBzbyBJJ20gZXhwZWN0aW5nIHRvIGZpbmQga2V5IHRvIGl0cyBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgyNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MTguNTQ3NTQ3MjgzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL3ZhZGRyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTAwOlxcdFxcdFxcdGJyZWFrO1xcbiA5MDE6XFx0XFx0Y2FzZSBEQU1PU19IVUdFUEFHRTpcXG4gOTAyOlxcdFxcdFxcdG1hZHZfYWN0aW9uID0gTUFEVl9IVUdFUEFHRTtcXG4gOTAzOlxcdFxcdFxcdGJyZWFrO1xcbiA5MDQ6XFx0XFx0Y2FzZSBEQU1PU19OT0hVR0VQQUdFOlxcbiA5MDU6XFx0XFx0XFx0bWFkdl9hY3Rpb24gPSBNQURWX05PSFVHRVBBR0U7XFxuIDkwNjpcXHRcXHRcXHRicmVhaztcXG4gOTA3OlxcdFxcdGNhc2UgREFNT1NfQ09MTEFQU0U6XFxuIDkwODpcXHRcXHRcXHRtYWR2X2FjdGlvbiA9IE1BRFZfQ09MTEFQU0U7XFxuIDkwOTpcXHRcXHRcXHRicmVhaztcXG4gOTEwOlxcdFxcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XFxuIDkxMTpcXHRcXHRjYXNlIERBTU9TX01JR1JBVEVfQ09MRDpcXG4gOTEyOlxcdFxcdFxcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XFxuIDkxMzpcXHRcXHRjYXNlIERBTU9TX1NUQVQ6XFxuIDkxNDpcXHRcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbiA5MTU6XFx0XFx0ZGVmYXVsdDpcXG4gOTE2OlxcdFxcdFxcdC8qXFxuIDkxNzpcXHRcXHRcXHQgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICd2YWRkcicuXFxuIDkxODpcXHRcXHRcXHQgKi9cXG4gOTE5OlxcdFxcdFxcdHJldHVybiAwO1xcbiA5MjA6XFx0XFx0fVxcbiA5MjE6XFx0XFxuIDkyMjpcXHRcXHRyZXR1cm4gZGFtb3NfbWFkdmlzZSh0LCByLCBtYWR2X2FjdGlvbik7XFxuIDkyMzpcXHR9XFxuIDkyNDpcXHRcXG4gOTI1OlxcdHN0YXRpYyBpbnQgZGFtb25fdmFfc2NoZW1lX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmNvbnRleHQsXFxuIDkyNjpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnNjaGVtZSlcXG4gOTI3OlxcdHtcXG4gOTI4OlxcdFxcbiA5Mjk6XFx0XFx0c3dpdGNoIChzY2hlbWUtXFx1MDAzZWFjdGlvbikge1xcbiA5MzA6XFx0XFx0Y2FzZSBEQU1PU19QQUdFT1VUOlxcbiA5MzE6XFx0XFx0XFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcXG4gOTMyOlxcdFxcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XFxuIDkzMzpcXHRcXHRcXHRyZXR1cm4gZGFtb25faG90X3Njb3JlKGNvbnRleHQsIHIsIHNjaGVtZSk7XFxuIDkzNDpcXHRcXHRjYXNlIERBTU9TX01JR1JBVEVfQ09MRDpcXG4gOTM1OlxcdFxcdFxcdHJldHVybiBkYW1vbl9jb2xkX3Njb3JlKGNvbnRleHQsIHIsIHNjaGVtZSk7XFxuIDkzNjpcXHRcXHRkZWZhdWx0OlxcbiA5Mzc6XFx0XFx0XFx0YnJlYWs7XFxuIDkzODpcXHRcXHR9XFxuIDkzOTpcXHRcXG4gOTQwOlxcdFxcdHJldHVybiBEQU1PU19NQVhfU0NPUkU7XFxuIDk0MTpcXHR9XFxuIDk0MjpcXHRcXG4gOTQzOlxcdHN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3ZhX2luaXRjYWxsKHZvaWQpXFxuIDk0NDpcXHR7XFxuIDk0NTpcXHRcXHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7XFxuIDk0NjpcXHRcXHRcXHQuaWQgPSBEQU1PTl9PUFNfVkFERFIsXFxuIDk0NzpcXHRcXHRcXHQuaW5pdCA9IGRhbW9uX3ZhX2luaXQsXFxuIDk0ODpcXHRcXHRcXHQudXBkYXRlID0gZGFtb25fdmFfdXBkYXRlLFxcbiA5NDk6XFx0XFx0XFx0LnByZXBhcmVfYWNjZXNzX2NoZWNrcyA9IGRhbW9uX3ZhX3ByZXBhcmVfYWNjZXNzX2NoZWNrcyxcXG4gOTUwOlxcdFxcdFxcdC5jaGVja19hY2Nlc3NlcyA9IGRhbW9uX3ZhX2NoZWNrX2FjY2Vzc2VzLFxcbiA5NTE6XFx0XFx0XFx0LnRhcmdldF92YWxpZCA9IGRhbW9uX3ZhX3RhcmdldF92YWxpZCxcXG4gOTUyOlxcdFxcdFxcdC5jbGVhbnVwX3RhcmdldCA9IGRhbW9uX3ZhX2NsZWFudXBfdGFyZ2V0LFxcbiA5NTM6XFx0XFx0XFx0LmFwcGx5X3NjaGVtZSA9IGRhbW9uX3ZhX2FwcGx5X3NjaGVtZSxcXG4gOTU0OlxcdFxcdFxcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fdmFfc2NoZW1lX3Njb3JlLFxcbiA5NTU6XFx0XFx0fTtcXG4gOTU2OlxcdFxcdC8qIG9wcyBmb3IgZml4ZWQgdmlydHVhbCBhZGRyZXNzIHJhbmdlcyAqL1xcbiA5NTc6XFx0XFx0c3RydWN0IGRhbW9uX29wZXJhdGlvbnMgb3BzX2Z2YWRkciA9IG9wcztcXG4gOTU4OlxcdFxcdGludCBlcnI7XFxuIDk1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MTguNTQ3NjMxNDAzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NTI0NTQzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB1bmRlcnN0YW5kaW5nIGhvdyBEQU1PUyBzY2hlbWVzIGFyZSBpbml0aWF0ZWQgZnJvbSB0aGUgdXNlciBzcGFjZSB2aWEgc3lzZnMsIGFzIGlmIGl0J3MgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIFVzZXItU3BhY2UgSW50ZXJhY3Rpb24gd2l0aCBEQU1PTiBTY2hlbWVzKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIGhvdyB1c2Vyc3BhY2UgcHJvZ3JhbXMgYXJlIGludGVyYWN0aW5nIHdpdGggREFNT04gc2NoZW1lcywgc3BlY2lmaWNhbGx5IHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGxpZmVjeWNsZSBvZiBhIERBTU9TIHNjaGVtZSDigJMgZnJvbSBpdHMgY29uZmlndXJhdGlvbiwgYWxsIHRoZSB3YXkgdG8gaXRzIGluaXRpYXRpb24gYW5kIHN1YnNlcXVlbnQgcnVubmluZyBzdGF0ZS4gVGhlIGtleSBoZXJlIGlzIHRvIHNlZSB3aGF0IHN5c2ZzIGVudHJpZXMgYXJlIGludm9sdmVkLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyBhbmQgZmlndXJlIG91dCB3aGljaCBzeXNmcyBhdHRyaWJ1dGVzIGFyZSB3cml0dGVuIHRvLCBhbmQgd2hhdCB0cmlnZ2VycyB0aGUgYWN0dWFsIGxhdW5jaCBvciBzdGFydCBvZiB0aGUgREFNT1Mgc2NoZW1lLiBXaGVyZSBhcmUgdGhlIHBhcmFtZXRlcnMgcGFzc2VkPyBIb3cgYXJlIHRoZSBtb25pdG9yaW5nIHRhcmdldHMgZGVmaW5lZCwgYW5kIGFyZSB0aG9zZSBkeW5hbWljPyBJJ20gYW50aWNpcGF0aW5nIHRoYXQgSSdsbCBiZSBsb29raW5nIGZvciBzcGVjaWZpYyBzeXNmcyBmaWxlcyByZWxhdGVkIHRvIHNjaGVtZSBjcmVhdGlvbiwgZW5hYmxpbmcsIGFuZCBwb3RlbnRpYWxseSBmb3IgY29udHJvbGxpbmcgdmFyaW91cyBvcGVyYXRpb25hbCBhc3BlY3RzLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHNvdXJjZSBjb2RlIHRvIHRyYWNlIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDUxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyMS4xMDAwODgwMjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mjc1ODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3N5c2ZzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM1MDkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTktXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA6REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE5LXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoyMDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0ga21hbGxvY19vYmooKnJhbmdlKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0yMS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTMxPXN0YXRpYyBzc2l6ZV90IG1pbl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0zMy17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MzQ6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjM1OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMzYtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz00MD1zdGF0aWMgc3NpemVfdCBtaW5fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTQyLXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo0MzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NDQ6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy00NS1cXHR1bnNpZ25lZCBsb25nIG1pbjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTU2PXN0YXRpYyBzc2l6ZV90IG1heF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy01OC17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NTk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjYwOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtNjEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTY3LXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo2ODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6Njk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy03MC1cXHR1bnNpZ25lZCBsb25nIG1heDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjgxOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Mi17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODM6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg0LX1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Ny1cXHRcXHRfX0FUVFJfUldfTU9ERShtaW4sIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjg5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfdWxfcmFuZ2VfbWF4X2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTkwLVxcdFxcdF9fQVRUUl9SV19NT0RFKG1heCwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTEtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTI6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTM6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTQ6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21heF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTUtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05Ni19O1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk3OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfdWxfcmFuZ2UpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTk4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk5OmNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTAwOlxcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDEtXFx0LnN5c2ZzX29wcyA9IFxcdTAwMjZrb2JqX3N5c2ZzX29wcyxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDI6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEwMy19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTA1LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjEwNjpzdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDctXFx0XFx0Y2hhciAqbWVtY2dfcGF0aF9idWYsIGNoYXIgKnBhdGgpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTE3OmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE4LXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEzNC1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMzU6XFx0XFx0aWYgKGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEobWVtY2csIHBhdGgsIG1lbWNnX3BhdGgpKSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTM2LVxcdFxcdFxcdCppZCA9IG1lbV9jZ3JvdXBfaWQobWVtY2cpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtOC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo5OmV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWF4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjIyOmV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mjg6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzA6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqKnNjaGVtZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMxLVxcdGludCBucjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM1OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzY2hlbWVzKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNzpleHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVzX2t0eXBlO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM5OmludCBkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDA6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQyOnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDM6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDQtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Njp2b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTE6aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MjpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTQ6aW50IGRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTUtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTU3PXZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTg6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTktXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo2MTppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjA6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjEtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcmVnaW9uLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2Mi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE2MzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqc3lzZnNfcmVnaW9uID0ga21hbGxvY19vYmooKnN5c2ZzX3JlZ2lvbik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2NC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzY9c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NzpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzgtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIwMj1zdGF0aWMgdm9pZCBkYW1vc19zeXNmc19yZWdpb25fcm1fZGlycyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjAzOlxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24pXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIwNC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjA5PXN0YXRpYyBzc2l6ZV90IHN0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTEte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTI6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTM6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTQtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjE4PXN0YXRpYyBzc2l6ZV90IGVuZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIwLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIxOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIyOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNz1zdGF0aWMgc3NpemVfdCBucl9hY2Nlc3Nlc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyOS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzMi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMzY9c3RhdGljIHNzaXplX3QgYWdlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMzgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMzk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjQ1PXN0YXRpYyBzc2l6ZV90IHN6X2ZpbHRlcl9wYXNzZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDcte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDg6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTAtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjUzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTQ6c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTY6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTc6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjYxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjMtXFx0XFx0X19BVFRSX1JPX01PREUoc3RhcnQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2NTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fZW5kX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjYtXFx0XFx0X19BVFRSX1JPX01PREUoZW5kLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX25yX2FjY2Vzc2VzX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjktXFx0XFx0X19BVFRSX1JPX01PREUobnJfYWNjZXNzZXMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWdlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzItXFx0XFx0X19BVFRSX1JPX01PREUoYWdlLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzQ6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N6X2ZpbHRlcl9wYXNzZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3NS1cXHRcXHRfX0FUVFJfUk9fTU9ERShzel9maWx0ZXJfcGFzc2VkLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjc2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzc6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc4OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc5OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2VuZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MDpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9ucl9hY2Nlc3Nlc19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MTpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hZ2VfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODI6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3pfZmlsdGVyX3Bhc3NlZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4My1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODQtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg1OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4Ni1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4ODpcXHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjg5LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5MDpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2dyb3VwcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjkxLX07XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTc6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzAzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDQ6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNTpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDYte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDc6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zID0ga21hbGxvY19vYmooKnJlZ2lvbnMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzE5PXN0YXRpYyBzc2l6ZV90IHRvdGFsX2J5dGVzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzIxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzIyOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqcmVnaW9ucyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMjM6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzI0LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMyNy1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzI4OnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JtX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyOTpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnJlZ2lvbnMpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMzMTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqciwgKm5leHQ7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0MjpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDMte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNDQ6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucywga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDUtfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0NzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3RvdGFsX2J5dGVzX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDgtXFx0XFx0X19BVFRSX1JPX01PREUodG90YWxfYnl0ZXMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1MDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzUxOlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc190b3RhbF9ieXRlc19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1Mi1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTMtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU0OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1NjpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU3OlxcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzU4LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1OTpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19ncm91cHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2MC19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2NS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzY2OnN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzc4OnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKmRhbW9uX3N5c2ZzX3N0YXRzX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3OS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4MDpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzgxLX1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zODM9c3RhdGljIHNzaXplX3QgbnJfdHJpZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NjpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzkyPXN0YXRpYyBzc2l6ZV90IHN6X3RyaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zOTQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTU6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTY6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzk3LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQwMT1zdGF0aWMgc3NpemVfdCBucl9hcHBsaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDAzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA0OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA1OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQwNi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00MTA9c3RhdGljIHNzaXplX3Qgc3pfYXBwbGllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQxMi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxMzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxNDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MTUtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDE5PXN0YXRpYyBzc2l6ZV90IHN6X29wc19maWx0ZXJfcGFzc2VkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDIxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIyOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIzOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQyNC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00Mjg9c3RhdGljIHNzaXplX3QgcXRfZXhjZWVkc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMjpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MzMtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDM3PXN0YXRpYyBzc2l6ZV90IG5yX3NuYXBzaG90c19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzOS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDItXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDQ2PXN0YXRpYyBzc2l6ZV90IG1heF9ucl9zbmFwc2hvdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NDk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NTA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDUxLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQ1NT1zdGF0aWMgc3NpemVfdCBtYXhfbnJfc25hcHNob3RzX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ1Ny17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1ODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1OTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjAtXFx0dW5zaWduZWQgbG9uZyBtYXhfbnJfc25hcHNob3RzLCBlcnIgPSBrc3RydG91bChidWYsIDAsIFxcdTAwMjZtYXhfbnJfc25hcHNob3RzKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ2ODpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zdGF0c19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00Njkte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NzA6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzEtfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzItXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3MzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3RyaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzQtXFx0XFx0X19BVFRSX1JPX01PREUobnJfdHJpZWQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X3RyaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzctXFx0XFx0X19BVFRSX1JPX01PREUoc3pfdHJpZWQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzgtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3OTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX2FwcGxpZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4MC1cXHRcXHRfX0FUVFJfUk9fTU9ERShucl9hcHBsaWVkLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDgxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19zel9hcHBsaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00ODMtXFx0XFx0X19BVFRSX1JPX01PREUoc3pfYXBwbGllZCwgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4NC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfc3pfb3BzX2ZpbHRlcl9wYXNzZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ni1cXHRcXHRfX0FUVFJfUk9fTU9ERShzel9vcHNfZmlsdGVyX3Bhc3NlZCwgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg4OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfcXRfZXhjZWVkc19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg5LVxcdFxcdF9fQVRUUl9ST19NT0RFKHF0X2V4Y2VlZHMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3NuYXBzaG90c19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDkyLVxcdFxcdF9fQVRUUl9ST19NT0RFKG5yX3NuYXBzaG90cywgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk0OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbWF4X25yX3NuYXBzaG90c19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDk1LVxcdFxcdF9fQVRUUl9SV19NT0RFKG1heF9ucl9zbmFwc2hvdHMsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5NzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc3RhdHNfYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk4OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl90cmllZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5OTpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfc3pfdHJpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDA6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX25yX2FwcGxpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDE6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X2FwcGxpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDI6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X29wc19maWx0ZXJfcGFzc2VkX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAzOlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19xdF9leGNlZWRzX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTA0OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl9zbmFwc2hvdHNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDU6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX21heF9ucl9zbmFwc2hvdHNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDYtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA3LX07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwODpBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3N0YXRzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTA6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc3RhdHNfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMTpcXHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3N0YXRzX3JlbGVhc2UsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUxMi1cXHQuc3lzZnNfb3BzID0gXFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTM6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfc3RhdHNfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MTQtfTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01MjM9ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjgtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyOTpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0MC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQxOnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQyLVxcdFxcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ0OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0NS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ2OlxcdGZpbHRlciA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQ3LVxcdGlmIChmaWx0ZXIpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTkzPXN0YXRpYyBzc2l6ZV90IHR5cGVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTY6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTc6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTgtXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjI3PXN0YXRpYyBzc2l6ZV90IHR5cGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjI5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMwOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjMyLVxcdHNzaXplX3QgcmV0ID0gLUVJTlZBTDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NTI9c3RhdGljIHNzaXplX3QgbWF0Y2hpbmdfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTU6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTY6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTctXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjYxPXN0YXRpYyBzc2l6ZV90IG1hdGNoaW5nX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2My17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2Ni1cXHRib29sIG1hdGNoaW5nO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTY3Nj1zdGF0aWMgc3NpemVfdCBhbGxvd19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY3OC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY3OTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY4MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY4MS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02ODU9c3RhdGljIHNzaXplX3QgYWxsb3dfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjg3LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg4OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg5OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjkwLVxcdGJvb2wgYWxsb3c7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzAwPXN0YXRpYyBzc2l6ZV90IG1lbWNnX3BhdGhfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDIte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDM6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDQ6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDUtXFx0aW50IGxlbjtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDc6XFx0aWYgKCFtdXRleF90cnlsb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSlcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA4LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzEwLVxcdFxcdFxcdGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA/IGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA6IFxcXCJcXFwiKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzExOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxMi1cXHRyZXR1cm4gbGVuO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTcxNT1zdGF0aWMgc3NpemVfdCBtZW1jZ19wYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxNy17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxOTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyMC1cXHRjaGFyICpwYXRoID0ga21hbGxvY19hcnJheShzaXplX2FkZChjb3VudCwgMSksIHNpemVvZigqcGF0aCksXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzI2LVxcdHN0cnNjcHkocGF0aCwgYnVmLCBjb3VudCArIDEpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3Mjc6XFx0aWYgKCFtdXRleF90cnlsb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSkge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MjgtXFx0XFx0a2ZyZWUocGF0aCk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzMyLVxcdGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA9IHBhdGg7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczMzpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRhbW9uX3N5c2ZzX2xvY2spO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MzQtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTczNz1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzM5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQwOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQyLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTc0Nj1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc0OC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc0OTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc1MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc1MS1cXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcXHUwMDI2ZmlsdGVyLVxcdTAwM2VhZGRyX3JhbmdlLnN0YXJ0KTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03NTY9c3RhdGljIHNzaXplX3QgYWRkcl9lbmRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NTgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NTk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NjA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NjEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzY1PXN0YXRpYyBzc2l6ZV90IGFkZHJfZW5kX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc2Ny17XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjIxLjE0OTM2NjYwOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTA1NTg3MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBGYWlsdXJlIEhhbmRsaW5nKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgaXQgaGFuZGxlcyBmYWlsdXJlcyBpbiBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCB3aXRoaW4gdGhlIGBkYW1vc19hcHBseV9zY2hlbWVgIGZ1bmN0aW9uLiBJIHNlZSB0aGUga2V5IGNoYW5nZSBpcyBpbiBgbW0vZGFtb24vY29yZS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDI2MDAuIFRoZSBvcmlnaW5hbCBjb2RlIHVuY29uZGl0aW9uYWxseSBjYWxsZWQgYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAsIGJ1dCBub3cgdGhlcmUncyBhbiBgaWZgIHN0YXRlbWVudCBjaGVja2luZyBpdHMgcmV0dXJuIHZhbHVlLiBBIG5vbi16ZXJvIHJldHVybiB2YWx1ZSwgaW5kaWNhdGluZyBmYWlsdXJlLCB3aWxsIG5vdyB0cmlnZ2VyIGEgYGdvdG8gdXBkYXRlX3N0YXRgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZmFpbHVyZSBwYXRoLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGZhaWx1cmUgc2NlbmFyaW9zIG9mIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGFuZCBob3cgYXJlIHRoZXkgYmVpbmcgYWRkcmVzc2VkPyBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgY2hhbmdlIGltcGFjdHMgc3RhdGlzdGljcyB1cGRhdGVzIGFuZCBvdmVyYWxsIHNjaGVtZSBhcHBsaWNhdGlvbi4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbW9kaWZpY2F0aW9ucyB0aGF0IHRoaXMgaXMgbGlua2VkIHRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE2NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyNC42NTQ5NTY2MDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTkwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTkwOlxcdFxcdFxcdH1cXG4yNTkxOlxcdFxcdFxcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0aXRlciwgYykge1xcbjI1OTI6XFx0XFx0XFx0XFx0aWYgKHRpdGVyID09IHQpXFxuMjU5MzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4yNTk0OlxcdFxcdFxcdFxcdHRpZHgrKztcXG4yNTk1OlxcdFxcdFxcdH1cXG4yNTk2OlxcdFxcdFxcdG5yX2FjY2Vzc2VzID0gZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0ociwgYyk7XFxuMjU5NzpcXHRcXHRcXHRkb190cmFjZSA9IHRydWU7XFxuMjU5ODpcXHRcXHR9XFxuMjU5OTpcXHRcXG4yNjAwOlxcdFxcdGlmIChjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XFxuMjYwMTpcXHRcXHRcXHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcXHUwMDI2XFx1MDAyNlxcbjI2MDI6XFx0XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogKyBzeiBcXHUwMDNlIHF1b3RhLVxcdTAwM2Vlc3opIHtcXG4yNjAzOlxcdFxcdFxcdFxcdHN6ID0gQUxJR05fRE9XTihxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3osXFxuMjYwNDpcXHRcXHRcXHRcXHRcXHRcXHRjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KTtcXG4yNjA1OlxcdFxcdFxcdFxcdGlmICghc3opXFxuMjYwNjpcXHRcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbjI2MDc6XFx0XFx0XFx0XFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXFxuMjYwODpcXHRcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbjI2MDk6XFx0XFx0XFx0fVxcbjI2MTA6XFx0XFx0XFx0aWYgKGRhbW9zX2NvcmVfZmlsdGVyX291dChjLCB0LCByLCBzKSlcXG4yNjExOlxcdFxcdFxcdFxcdHJldHVybjtcXG4yNjEyOlxcdFxcdFxcdGt0aW1lX2dldF9jb2Fyc2VfdHM2NChcXHUwMDI2YmVnaW4pO1xcbjI2MTM6XFx0XFx0XFx0dHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5KGNpZHgsIHNpZHgsIHRpZHgsIHIsIG5yX2FjY2Vzc2VzLFxcbjI2MTQ6XFx0XFx0XFx0XFx0XFx0ZGFtb25fbnJfcmVnaW9ucyh0KSwgZG9fdHJhY2UpO1xcbjI2MTU6XFx0XFx0XFx0c3pfYXBwbGllZCA9IGMtXFx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcXG4yNjE2OlxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XFxuMjYxNzpcXHRcXHRcXHRkYW1vc193YWxrX2NhbGxfd2FsayhjLCB0LCByLCBzLCBzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XFxuMjYxODpcXHRcXHRcXHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXFx1MDAyNmVuZCk7XFxuMjYxOTpcXHRcXHRcXHRxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9ucyArPSB0aW1lc3BlYzY0X3RvX25zKFxcdTAwMjZlbmQpIC1cXG4yNjIwOlxcdFxcdFxcdFxcdHRpbWVzcGVjNjRfdG9fbnMoXFx1MDAyNmJlZ2luKTtcXG4yNjIxOlxcdFxcdFxcdGRhbW9zX2NoYXJnZV9xdW90YShxdW90YSwgc3osIHN6X2FwcGxpZWQpO1xcbjI2MjI6XFx0XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKSB7XFxuMjYyMzpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gdDtcXG4yNjI0OlxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cXHUwMDNlYXIuZW5kO1xcbjI2MjU6XFx0XFx0XFx0fVxcbjI2MjY6XFx0XFx0fVxcbjI2Mjc6XFx0XFx0aWYgKHMtXFx1MDAzZWFjdGlvbiAhPSBEQU1PU19TVEFUKVxcbjI2Mjg6XFx0XFx0XFx0ci1cXHUwMDNlYWdlID0gMDtcXG4yNjI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyNC42NTUyMTM5NTZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE2NjI4NDAzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgUmVjZW50IERBTU9OIENvcmUgTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoZSByZWNlbnQgY2hhbmdlcyB3aXRoaW4gdGhlIERBTU9OIGNvcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZywgc28gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL2NvcmUuY2AgdGhhdCB3ZXJlIHRvdWNoZWQuIFNwZWNpZmljYWxseSwgSSdsbCByZWZyZXNoIG15IG1lbW9yeSBvbiBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBhbmQgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYC4gS25vd2luZyB0aGUgY29udGV4dCBhbmQgaW50ZW50IG9mIHRoZSBtb2RpZmljYXRpb25zIHRoZXJlIGlzIGNydWNpYWwuXG5cblRoZW4sIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGxvZ2ljIHN1cnJvdW5kaW5nIHRob3NlIGZ1bmN0aW9ucyBpbiB0aGUgYnJvYWRlciBjb250ZXh0LCBJIHRoaW5rIEknbGwgcmUtcmVhZCB0aGUgY29kZSBhcm91bmQgbGluZXMgMjgwMCB0byAzMDIwIGluIGBtbS9kYW1vbi9jb3JlLmNgLiBIb3BlZnVsbHksIHRoYXQgd2lsbCByZWZyZXNoIG15IG1lbW9yeSBvZiB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgYW5kIGhvdyB0aGUgcGllY2VzIGZpdCB0b2dldGhlci4gSSB3YW50IHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGNvbXBsZXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI4MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MjYuODIxNTAwMzIzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjgwMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjgwMDpcXHRcXHRfX2tlcm5lbF91bG9uZ190IG51bWVyYXRvcjtcXG4yODAxOlxcdFxcbjI4MDI6XFx0XFx0aWYgKGludmFsaWRfbWVtX25vZGUoZ29hbC1cXHUwMDNlbmlkKSkge1xcbjI4MDM6XFx0XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxcbjI4MDQ6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuMjgwNTpcXHRcXHRcXHRlbHNlXFx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqL1xcbjI4MDY6XFx0XFx0XFx0XFx0cmV0dXJuIDEwMDAwO1xcbjI4MDc6XFx0XFx0fVxcbjI4MDg6XFx0XFxuMjgwOTpcXHRcXHRzaV9tZW1pbmZvX25vZGUoXFx1MDAyNmksIGdvYWwtXFx1MDAzZW5pZCk7XFxuMjgxMDpcXHRcXHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcXHUwMDNjIGkuZnJlZXJhbSkge1xcbjI4MTE6XFx0XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxcbjI4MTI6XFx0XFx0XFx0XFx0cmV0dXJuIDEwMDAwO1xcbjI4MTM6XFx0XFx0XFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cXG4yODE0OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbjI4MTU6XFx0XFx0fVxcbjI4MTY6XFx0XFxuMjgxNzpcXHRcXHRpZiAoZ29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlApXFxuMjgxODpcXHRcXHRcXHRudW1lcmF0b3IgPSBpLnRvdGFscmFtIC0gaS5mcmVlcmFtO1xcbjI4MTk6XFx0XFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cXG4yODIwOlxcdFxcdFxcdG51bWVyYXRvciA9IGkuZnJlZXJhbTtcXG4yODIxOlxcdFxcdHJldHVybiBtdWx0X2ZyYWMobnVtZXJhdG9yLCAxMDAwMCwgaS50b3RhbHJhbSk7XFxuMjgyMjpcXHR9XFxuMjgyMzpcXHRcXG4yODI0OlxcdHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXFxuMjgyNTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcXG4yODI2OlxcdHtcXG4yODI3OlxcdFxcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcXG4yODI4OlxcdFxcdHN0cnVjdCBscnV2ZWMgKmxydXZlYztcXG4yODI5OlxcdFxcdHVuc2lnbmVkIGxvbmcgdXNlZF9wYWdlcywgbnVtZXJhdG9yO1xcbjI4MzA6XFx0XFx0c3RydWN0IHN5c2luZm8gaTtcXG4yODMxOlxcdFxcbjI4MzI6XFx0XFx0aWYgKGludmFsaWRfbWVtX25vZGUoZ29hbC1cXHUwMDNlbmlkKSkge1xcbjI4MzM6XFx0XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXFxuMjgzNDpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4yODM1OlxcdFxcdFxcdGVsc2VcXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cXG4yODM2OlxcdFxcdFxcdFxcdHJldHVybiAxMDAwMDtcXG4yODM3OlxcdFxcdH1cXG4yODM4OlxcdFxcbjI4Mzk6XFx0XFx0bWVtY2cgPSBtZW1fY2dyb3VwX2dldF9mcm9tX2lkKGdvYWwtXFx1MDAzZW1lbWNnX2lkKTtcXG4yODQwOlxcdFxcdGlmICghbWVtY2cpIHtcXG4yODQxOlxcdFxcdFxcdGlmIChnb2FsLVxcdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxcbjI4NDI6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuMjg0MzpcXHRcXHRcXHRlbHNlXFx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXFxuMjg0NDpcXHRcXHRcXHRcXHRyZXR1cm4gMTAwMDA7XFxuMjg0NTpcXHRcXHR9XFxuMjg0NjpcXHRcXG4yODQ3OlxcdFxcdG1lbV9jZ3JvdXBfZmx1c2hfc3RhdHMobWVtY2cpO1xcbjI4NDg6XFx0XFx0bHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIE5PREVfREFUQShnb2FsLVxcdTAwM2VuaWQpKTtcXG4yODQ5OlxcdFxcdHVzZWRfcGFnZXMgPSBscnV2ZWNfcGFnZV9zdGF0ZShscnV2ZWMsIE5SX0FDVElWRV9BTk9OKTtcXG4yODUwOlxcdFxcdHVzZWRfcGFnZXMgKz0gbHJ1dmVjX3BhZ2Vfc3RhdGUobHJ1dmVjLCBOUl9JTkFDVElWRV9BTk9OKTtcXG4yODUxOlxcdFxcdHVzZWRfcGFnZXMgKz0gbHJ1dmVjX3BhZ2Vfc3RhdGUobHJ1dmVjLCBOUl9BQ1RJVkVfRklMRSk7XFxuMjg1MjpcXHRcXHR1c2VkX3BhZ2VzICs9IGxydXZlY19wYWdlX3N0YXRlKGxydXZlYywgTlJfSU5BQ1RJVkVfRklMRSk7XFxuMjg1MzpcXHRcXG4yODU0OlxcdFxcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcXG4yODU1OlxcdFxcbjI4NTY6XFx0XFx0c2lfbWVtaW5mb19ub2RlKFxcdTAwMjZpLCBnb2FsLVxcdTAwM2VuaWQpO1xcbjI4NTc6XFx0XFx0aWYgKCFpLnRvdGFscmFtIHx8IGkudG90YWxyYW0gXFx1MDAzYyB1c2VkX3BhZ2VzKSB7XFxuMjg1ODpcXHRcXHRcXHRpZiAoZ29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUClcXG4yODU5OlxcdFxcdFxcdFxcdHJldHVybiAxMDAwMDtcXG4yODYwOlxcdFxcdFxcdGVsc2VcXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cXG4yODYxOlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbjI4NjI6XFx0XFx0fVxcbjI4NjM6XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXFxuMjg2NDpcXHRcXHRcXHRudW1lcmF0b3IgPSB1c2VkX3BhZ2VzO1xcbjI4NjU6XFx0XFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCAqL1xcbjI4NjY6XFx0XFx0XFx0bnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIHVzZWRfcGFnZXM7XFxuMjg2NzpcXHRcXHRyZXR1cm4gbXVsdF9mcmFjKG51bWVyYXRvciwgMTAwMDAsIGkudG90YWxyYW0pO1xcbjI4Njg6XFx0fVxcbjI4Njk6XFx0XFxuMjg3MDpcXHQjaWZkZWYgQ09ORklHX0RBTU9OX1BBRERSXFxuMjg3MTpcXHQvKlxcbjI4NzI6XFx0ICogZGFtb3NfY2FsY19lbGlnaWJsZV9ieXRlcygpIC0gQ2FsY3VsYXRlIHJhdyBlbGlnaWJsZSBieXRlcyBwZXIgbm9kZS5cXG4yODczOlxcdCAqIEBjOlxcdFxcdFRoZSBEQU1PTiBjb250ZXh0LlxcbjI4NzQ6XFx0ICogQHM6XFx0XFx0VGhlIHNjaGVtZS5cXG4yODc1OlxcdCAqIEBuaWQ6XFx0VGhlIHRhcmdldCBOVU1BIG5vZGUgaWQuXFxuMjg3NjpcXHQgKiBAdG90YWw6XFx0T3V0cHV0IGZvciB0b3RhbCBlbGlnaWJsZSBieXRlcyBhY3Jvc3MgYWxsIG5vZGVzLlxcbjI4Nzc6XFx0ICpcXG4yODc4OlxcdCAqIEl0ZXJhdGVzIHRocm91Z2ggZWFjaCBmb2xpbyBpbiBlbGlnaWJsZSByZWdpb25zIHRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lXFxuMjg3OTpcXHQgKiB3aGljaCBub2RlIHRoZSBtZW1vcnkgcmVzaWRlcyBvbi4gUmV0dXJucyBlbGlnaWJsZSBieXRlcyBvbiB0aGUgc3BlY2lmaWVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjI2LjgyMTY5MjU1M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTQ1Njg3NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgaGllcmFyY2h5IGZvciB0aGVzZSB0aHJlZSBmdW5jdGlvbnM6IGBkYW1vc19nZXRfbm9kZV9tZW1fYnBgLCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icGAsIGFuZCBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnBgLiBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGVpciBjYWxsZXJzLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW52b2tlZCB3aWxsIGdpdmUgbWUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IGFuZCBoZWxwIG1lIHRvIGdyYXNwIHRoZWlyIHB1cnBvc2Ugd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaGlzIGlzIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBkZWJ1Z2dpbmcsIG9yIHBvdGVudGlhbGx5IHJlZmFjdG9yaW5nIGxhdGVyLiBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgY2FsbCBncmFwaCB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDE1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyOC43NjczODM5MDdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTgwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyOTgwOlxcdHtcXG4yOTgxOlxcdFxcdHJldHVybiAwO1xcbjI5ODI6XFx0fVxcbjI5ODM6XFx0XFxuMjk4NDpcXHRzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKFxcbjI5ODU6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxuMjk4NjpcXHR7XFxuMjk4NzpcXHRcXHRyZXR1cm4gMDtcXG4yOTg4OlxcdH1cXG4yOTg5OlxcdFxcbjI5OTA6XFx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfZWxpZ2libGVfbWVtX2JwKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuMjk5MTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMsIGludCBuaWQpXFxuMjk5MjpcXHR7XFxuMjk5MzpcXHRcXHRyZXR1cm4gMDtcXG4yOTk0OlxcdH1cXG4yOTk1OlxcdCNlbmRpZiAvKiBDT05GSUdfTlVNQSAqL1xcbjI5OTY6XFx0XFxuMjk5NzpcXHQvKlxcbjI5OTg6XFx0ICogUmV0dXJucyBMUlUtYWN0aXZlIG9yIGluYWN0aXZlIG1lbW9yeSB0byB0b3RhbCBMUlUgbWVtb3J5IHNpemUgcmF0aW8uXFxuMjk5OTpcXHQgKi9cXG4zMDAwOlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnAoYm9vbCBhY3RpdmVfcmF0aW8pXFxuMzAwMTpcXHR7XFxuMzAwMjpcXHRcXHR1bnNpZ25lZCBsb25nIGFjdGl2ZSwgaW5hY3RpdmUsIHRvdGFsO1xcbjMwMDM6XFx0XFxuMzAwNDpcXHRcXHQvKiBUaGlzIHNob3VsZCBhbGlnbiB3aXRoIC9wcm9jL21lbWluZm8gb3V0cHV0ICovXFxuMzAwNTpcXHRcXHRhY3RpdmUgPSBnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0FDVElWRV9BTk9OKSArXFxuMzAwNjpcXHRcXHRcXHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0FDVElWRV9GSUxFKTtcXG4zMDA3OlxcdFxcdGluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9JTkFDVElWRV9BTk9OKSArXFxuMzAwODpcXHRcXHRcXHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0lOQUNUSVZFX0ZJTEUpO1xcbjMwMDk6XFx0XFx0dG90YWwgPSBtYXgoYWN0aXZlICsgaW5hY3RpdmUsIDEpO1xcbjMwMTA6XFx0XFx0aWYgKGFjdGl2ZV9yYXRpbylcXG4zMDExOlxcdFxcdFxcdHJldHVybiBtdWx0X2ZyYWMoYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xcbjMwMTI6XFx0XFx0cmV0dXJuIG11bHRfZnJhYyhpbmFjdGl2ZSwgMTAwMDAsIHRvdGFsKTtcXG4zMDEzOlxcdH1cXG4zMDE0OlxcdFxcbjMwMTU6XFx0c3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19odWdlcGFnZV9tZW1fYnAodm9pZClcXG4zMDE2OlxcdHtcXG4zMDE3OlxcdFxcdHVuc2lnbmVkIGxvbmcgdGhwLCB0b3RhbF9wYWdlcywgZnJlZV9wYWdlcztcXG4zMDE4OlxcdFxcbjMwMTk6XFx0XFx0dG90YWxfcGFnZXMgPSB0b3RhbHJhbV9wYWdlcygpO1xcbjMwMjA6XFx0XFx0ZnJlZV9wYWdlcyA9IGdsb2JhbF96b25lX3BhZ2Vfc3RhdGUoTlJfRlJFRV9QQUdFUyk7XFxuMzAyMTpcXHRcXG4zMDIyOlxcdFxcdGlmICh0b3RhbF9wYWdlcyBcXHUwMDNjPSBmcmVlX3BhZ2VzKVxcbjMwMjM6XFx0XFx0XFx0cmV0dXJuIDEwMDAwO1xcbjMwMjQ6XFx0XFxuMzAyNTpcXHRcXHR0aHAgPSBnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0FOT05fVEhQUykgK1xcbjMwMjY6XFx0XFx0XFx0XFx0XFx0Z2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9TSE1FTV9USFBTKSArXFxuMzAyNzpcXHRcXHRcXHRcXHRcXHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0ZJTEVfVEhQUyk7XFxuMzAyODpcXHRcXHRyZXR1cm4gbXVsdF9mcmFjKHRocCwgMTAwMDAsIHRvdGFsX3BhZ2VzIC0gZnJlZV9wYWdlcyk7XFxuMzAyOTpcXHR9XFxuMzAzMDpcXHRcXG4zMDMxOlxcdHN0YXRpYyB2b2lkIGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG4zMDMyOlxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxuMzAzMzpcXHR7XFxuMzAzNDpcXHRcXHR1NjQgbm93X3BzaV90b3RhbDtcXG4zMDM1OlxcdFxcbjMwMzY6XFx0XFx0c3dpdGNoIChnb2FsLVxcdTAwM2VtZXRyaWMpIHtcXG4zMDM3OlxcdFxcdGNhc2UgREFNT1NfUVVPVEFfVVNFUl9JTlBVVDpcXG4zMDM4OlxcdFxcdFxcdC8qIFVzZXIgc2hvdWxkIGFscmVhZHkgc2V0IGdvYWwtXFx1MDAzZWN1cnJlbnRfdmFsdWUgKi9cXG4zMDM5OlxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyOC43Njc1NTgyNjdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAyNzA3NDg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIENvZGUgLSBgZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZWAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIHRvIG1lbnRhbGx5IHNjYW4gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFdoYXQncyB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZT8gSG93IGRvZXMgdGhpcyBmdW5jdGlvbiBmaXQgaW50byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmU/IEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIHF1b3RhcywgYW5kIGxpa2VseSBnb2FsIHNldHRpbmcgYW5kIHRyYWNraW5nIHJlbGF0ZWQgdG8gdGhvc2UgcXVvdGFzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXZvaWQgZ2V0dGluZyBib2dnZWQgZG93biBpbiBpbmRpdmlkdWFsIGxpbmVzLCBidXQgcmF0aGVyIHVuZGVyc3RhbmQgdGhlIGhpZ2ggbGV2ZWwgZnVuY3Rpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuIFxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgb2YgdGhhdCBwaWVjZSBvZiBjb2RlLiBJdCBsb29rcyBsaWtlIGl0IGRlYWxzIHdpdGggc2V0dGluZyB0aGUgY3VycmVudCBxdW90YSB2YWx1ZSBvciBwb3NzaWJseSBpdHMgZ29hbC4gSSB3b25kZXIgd2hhdCB0aGUgaW5wdXQgcGFyYW1ldGVycyBhcmU/IEFuZCB3aGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBNYXliZSBJIGNhbiBjaGVjayB0aGUgaW5wdXQgdHlwZSBzaWduYXR1cmUgaWYgaXTigJlzIGF2YWlsYWJsZS4gVWx0aW1hdGVseSwgd2hhdCBpcyB0aGUgZ29hbCBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBmdW5jdGlvbiBvbiB0aGUgc3lzdGVtPyBJIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGFwcGxpY2F0aW9uLiBcblxuXG4iLCJJbnB1dFRva2VucyI6MzAxODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjMwLjc5NDYzNjk2NloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODgzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMzUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMwMzU6XFx0XFxuMzAzNjpcXHRcXHRzd2l0Y2ggKGdvYWwtXFx1MDAzZW1ldHJpYykge1xcbjMwMzc6XFx0XFx0Y2FzZSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUOlxcbjMwMzg6XFx0XFx0XFx0LyogVXNlciBzaG91bGQgYWxyZWFkeSBzZXQgZ29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSAqL1xcbjMwMzk6XFx0XFx0XFx0YnJlYWs7XFxuMzA0MDpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUzpcXG4zMDQxOlxcdFxcdFxcdG5vd19wc2lfdG90YWwgPSBkYW1vc19nZXRfc29tZV9tZW1fcHNpX3RvdGFsKCk7XFxuMzA0MjpcXHRcXHRcXHRnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gbm93X3BzaV90b3RhbCAtIGdvYWwtXFx1MDAzZWxhc3RfcHNpX3RvdGFsO1xcbjMwNDM6XFx0XFx0XFx0Z29hbC1cXHUwMDNlbGFzdF9wc2lfdG90YWwgPSBub3dfcHNpX3RvdGFsO1xcbjMwNDQ6XFx0XFx0XFx0YnJlYWs7XFxuMzA0NTpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlA6XFxuMzA0NjpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlA6XFxuMzA0NzpcXHRcXHRcXHRnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfZ2V0X25vZGVfbWVtX2JwKGdvYWwpO1xcbjMwNDg6XFx0XFx0XFx0YnJlYWs7XFxuMzA0OTpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUDpcXG4zMDUwOlxcdFxcdGNhc2UgREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQOlxcbjMwNTE6XFx0XFx0XFx0Z29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoZ29hbCk7XFxuMzA1MjpcXHRcXHRcXHRicmVhaztcXG4zMDUzOlxcdFxcdGNhc2UgREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUDpcXG4zMDU0OlxcdFxcdGNhc2UgREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQOlxcbjMwNTU6XFx0XFx0XFx0Z29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKFxcbjMwNTY6XFx0XFx0XFx0XFx0XFx0Z29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlApO1xcbjMwNTc6XFx0XFx0XFx0YnJlYWs7XFxuMzA1ODpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX05PREVfRUxJR0lCTEVfTUVNX0JQOlxcbjMwNTk6XFx0XFx0XFx0Z29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9ub2RlX2VsaWdpYmxlX21lbV9icChjLCBzLFxcbjMwNjA6XFx0XFx0XFx0XFx0XFx0Z29hbC1cXHUwMDNlbmlkKTtcXG4zMDYxOlxcdFxcdFxcdGJyZWFrO1xcbjMwNjI6XFx0XFx0Y2FzZSBEQU1PU19RVU9UQV9IVUdFUEFHRV9NRU1fQlA6XFxuMzA2MzpcXHRcXHRcXHRnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfaHVnZXBhZ2VfbWVtX2JwKCk7XFxuMzA2NDpcXHRcXHRcXHRicmVhaztcXG4zMDY1OlxcdFxcdGRlZmF1bHQ6XFxuMzA2NjpcXHRcXHRcXHRicmVhaztcXG4zMDY3OlxcdFxcdH1cXG4zMDY4OlxcdH1cXG4zMDY5OlxcdFxcbjMwNzA6XFx0LyogUmV0dXJuIHRoZSBoaWdoZXN0IHNjb3JlIHNpbmNlIGl0IG1ha2VzIHNjaGVtZXMgbGVhc3QgYWdncmVzc2l2ZSAqL1xcbjMwNzE6XFx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfcXVvdGFfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbjMwNzI6XFx0e1xcbjMwNzM6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XFxuMzA3NDpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbjMwNzU6XFx0XFx0dW5zaWduZWQgbG9uZyBoaWdoZXN0X3Njb3JlID0gMDtcXG4zMDc2OlxcdFxcbjMwNzc6XFx0XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxdW90YSkge1xcbjMwNzg6XFx0XFx0XFx0ZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShjLCBzLCBnb2FsKTtcXG4zMDc5OlxcdFxcdFxcdGhpZ2hlc3Rfc2NvcmUgPSBtYXgoaGlnaGVzdF9zY29yZSxcXG4zMDgwOlxcdFxcdFxcdFxcdFxcdG11bHRfZnJhYyhnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlLCAxMDAwMCxcXG4zMDgxOlxcdFxcdFxcdFxcdFxcdFxcdGdvYWwtXFx1MDAzZXRhcmdldF92YWx1ZSkpO1xcbjMwODI6XFx0XFx0fVxcbjMwODM6XFx0XFxuMzA4NDpcXHRcXHRyZXR1cm4gaGlnaGVzdF9zY29yZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MzAuNzk0ODI3Mzg2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMzA1MjIyNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIFBoeXNpY2FsIEFkZHJlc3MgKHBhZGRyKSBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AgbW9kaWZpY2F0aW9ucy4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGV2b2x1dGlvbiBvZiB0aGUgcGh5c2ljYWwgYWRkcmVzcyByZWxhdGVkIGFzcGVjdHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcyBvbiBEQU1PTidzIHBoeXNpY2FsIGFkZHJlc3Mgb3BlcmF0aW9ucy4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHNjcnV0aW5pemluZyB0aGUgYGRhbW9uX3BhX3BhZ2VvdXRgLCBgZGFtb25fcGFfZGVfYWN0aXZhdGVgLCBgZGFtb25fcGFfbWlncmF0ZWAsIGFuZCBgZGFtb25fcGFfc3RhdGAgZnVuY3Rpb25zLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgd2FzIGhhcHBlbmluZyBiZWZvcmUgdGhlIGNoYW5nZXMgYW5kIGhvdyB0aGUgYmVoYXZpb3IgaGFzIGJlZW4gYWx0ZXJlZC4gSSdsbCBiZSBjb25jZW50cmF0aW5nIG9uIHRoZSBgbW0vZGFtb24vcGFkZHIuY2AgZmlsZSwgYXJvdW5kIGxpbmVzIDI0MC0zOTAsIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgaXMgYmVpbmcgbWFuYWdlZCBhbmQgaW50ZXJhY3RlZCB3aXRoLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIG1vZGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzI1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MzIuOTI1MzUyMjM2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL3BhZGRyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjQwOlxcdFxcdFxcdGlmICghZmlsdGVyKVxcbiAyNDE6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDI0MjpcXHRcXHRcXHRkYW1vc19hZGRfZmlsdGVyKHMsIGZpbHRlcik7XFxuIDI0MzpcXHRcXHR9XFxuIDI0NDpcXHRcXG4gMjQ1OlxcdFxcdGFkZHIgPSBkYW1vbl9wYV9waHlzX2FkZHIoci1cXHUwMDNlYXIuc3RhcnQsIGFkZHJfdW5pdCk7XFxuIDI0NjpcXHRcXHR3aGlsZSAoYWRkciBcXHUwMDNjIGRhbW9uX3BhX3BoeXNfYWRkcihyLVxcdTAwM2Vhci5lbmQsIGFkZHJfdW5pdCkpIHtcXG4gMjQ3OlxcdFxcdFxcdGZvbGlvID0gZGFtb25fZ2V0X2ZvbGlvKFBIWVNfUEZOKGFkZHIpKTtcXG4gMjQ4OlxcdFxcdFxcdGlmIChkYW1vbl9wYV9pbnZhbGlkX2RhbW9zX2ZvbGlvKGZvbGlvLCBzKSkge1xcbiAyNDk6XFx0XFx0XFx0XFx0YWRkciArPSBQQUdFX1NJWkU7XFxuIDI1MDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMjUxOlxcdFxcdFxcdH1cXG4gMjUyOlxcdFxcbiAyNTM6XFx0XFx0XFx0aWYgKGRhbW9zX3BhX2ZpbHRlcl9vdXQocywgZm9saW8pKVxcbiAyNTQ6XFx0XFx0XFx0XFx0Z290byBwdXRfZm9saW87XFxuIDI1NTpcXHRcXHRcXHRlbHNlXFxuIDI1NjpcXHRcXHRcXHRcXHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0XFx0Zm9saW9fY2xlYXJfcmVmZXJlbmNlZChmb2xpbyk7XFxuIDI1OTpcXHRcXHRcXHRmb2xpb190ZXN0X2NsZWFyX3lvdW5nKGZvbGlvKTtcXG4gMjYwOlxcdFxcdFxcdGlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKVxcbiAyNjE6XFx0XFx0XFx0XFx0Z290byBwdXRfZm9saW87XFxuIDI2MjpcXHRcXHRcXHRpZiAoZm9saW9fdGVzdF91bmV2aWN0YWJsZShmb2xpbykpXFxuIDI2MzpcXHRcXHRcXHRcXHRmb2xpb19wdXRiYWNrX2xydShmb2xpbyk7XFxuIDI2NDpcXHRcXHRcXHRlbHNlXFxuIDI2NTpcXHRcXHRcXHRcXHRsaXN0X2FkZChcXHUwMDI2Zm9saW8tXFx1MDAzZWxydSwgXFx1MDAyNmZvbGlvX2xpc3QpO1xcbiAyNjY6XFx0cHV0X2ZvbGlvOlxcbiAyNjc6XFx0XFx0XFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XFxuIDI2ODpcXHRcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbiAyNjk6XFx0XFx0fVxcbiAyNzA6XFx0XFx0aWYgKGluc3RhbGxfeW91bmdfZmlsdGVyKVxcbiAyNzE6XFx0XFx0XFx0ZGFtb3NfZGVzdHJveV9maWx0ZXIoZmlsdGVyKTtcXG4gMjcyOlxcdFxcdGFwcGxpZWQgPSByZWNsYWltX3BhZ2VzKFxcdTAwMjZmb2xpb19saXN0KTtcXG4gMjczOlxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbiAyNzQ6XFx0XFx0cy1cXHUwMDNlbGFzdF9hcHBsaWVkID0gZm9saW87XFxuIDI3NTpcXHRcXHRyZXR1cm4gZGFtb25fcGFfY29yZV9hZGRyKGFwcGxpZWQgKiBQQUdFX1NJWkUsIGFkZHJfdW5pdCk7XFxuIDI3NjpcXHR9XFxuIDI3NzpcXHRcXG4gMjc4OlxcdHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZV9hY3RpdmF0ZShcXG4gMjc5OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHVuc2lnbmVkIGxvbmcgYWRkcl91bml0LFxcbiAyODA6XFx0XFx0XFx0c3RydWN0IGRhbW9zICpzLCBib29sIGFjdGl2YXRlLFxcbiAyODE6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZClcXG4gMjgyOlxcdHtcXG4gMjgzOlxcdFxcdHBoeXNfYWRkcl90IGFkZHIsIGFwcGxpZWQgPSAwO1xcbiAyODQ6XFx0XFx0c3RydWN0IGZvbGlvICpmb2xpbyA9IE5VTEw7XFxuIDI4NTpcXHRcXG4gMjg2OlxcdFxcdGFkZHIgPSBkYW1vbl9wYV9waHlzX2FkZHIoci1cXHUwMDNlYXIuc3RhcnQsIGFkZHJfdW5pdCk7XFxuIDI4NzpcXHRcXHR3aGlsZSAoYWRkciBcXHUwMDNjIGRhbW9uX3BhX3BoeXNfYWRkcihyLVxcdTAwM2Vhci5lbmQsIGFkZHJfdW5pdCkpIHtcXG4gMjg4OlxcdFxcdFxcdGZvbGlvID0gZGFtb25fZ2V0X2ZvbGlvKFBIWVNfUEZOKGFkZHIpKTtcXG4gMjg5OlxcdFxcdFxcdGlmIChkYW1vbl9wYV9pbnZhbGlkX2RhbW9zX2ZvbGlvKGZvbGlvLCBzKSkge1xcbiAyOTA6XFx0XFx0XFx0XFx0YWRkciArPSBQQUdFX1NJWkU7XFxuIDI5MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMjkyOlxcdFxcdFxcdH1cXG4gMjkzOlxcdFxcbiAyOTQ6XFx0XFx0XFx0aWYgKGRhbW9zX3BhX2ZpbHRlcl9vdXQocywgZm9saW8pKVxcbiAyOTU6XFx0XFx0XFx0XFx0Z290byBwdXRfZm9saW87XFxuIDI5NjpcXHRcXHRcXHRlbHNlXFxuIDI5NzpcXHRcXHRcXHRcXHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcXG4gMjk4OlxcdFxcbiAyOTk6XFx0XFx0XFx0aWYgKGFjdGl2YXRlKVxcbiAzMDA6XFx0XFx0XFx0XFx0Zm9saW9fYWN0aXZhdGUoZm9saW8pO1xcbiAzMDE6XFx0XFx0XFx0ZWxzZVxcbiAzMDI6XFx0XFx0XFx0XFx0Zm9saW9fZGVhY3RpdmF0ZShmb2xpbyk7XFxuIDMwMzpcXHRcXHRcXHRhcHBsaWVkICs9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcXG4gMzA0OlxcdHB1dF9mb2xpbzpcXG4gMzA1OlxcdFxcdFxcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO1xcbiAzMDY6XFx0XFx0XFx0Zm9saW9fcHV0KGZvbGlvKTtcXG4gMzA3OlxcdFxcdH1cXG4gMzA4OlxcdFxcdHMtXFx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xcbiAzMDk6XFx0XFx0cmV0dXJuIGRhbW9uX3BhX2NvcmVfYWRkcihhcHBsaWVkICogUEFHRV9TSVpFLCBhZGRyX3VuaXQpO1xcbiAzMTA6XFx0fVxcbiAzMTE6XFx0XFxuIDMxMjpcXHRzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9hY3RpdmF0ZV9wYWdlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbiAzMTM6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhZGRyX3VuaXQsIHN0cnVjdCBkYW1vcyAqcyxcXG4gMzE0OlxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXFxuIDMxNTpcXHR7XFxuIDMxNjpcXHRcXHRyZXR1cm4gZGFtb25fcGFfZGVfYWN0aXZhdGUociwgYWRkcl91bml0LCBzLCB0cnVlLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gMzE3OlxcdH1cXG4gMzE4OlxcdFxcbiAzMTk6XFx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfZGVhY3RpdmF0ZV9wYWdlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTozMi45MjU0NDQ4ODZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjY4Mjk1MjQzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoZXNlIE1lbW9yeSBNYW5hZ2VtZW50IEJ1ZyBGaXhlcyBhbmQgVGhlaXIgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHNvbWUgY3J1Y2lhbCBmdW5jdGlvbmFsIGJ1Z3Mgd2l0aGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBEQU1PTiBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgdGhlcmUgd2VyZSBpc3N1ZXMgd2l0aCBob3cgYWRkcmVzc2VzIHdlcmUgY2FsY3VsYXRlZCBhbmQgaXRlcmF0ZWQgYWNyb3NzIGZvbGlvcywgcGFydGljdWxhcmx5IHdoZW4gZGVhbGluZyB3aXRoIGh1Z2UgcGFnZXMgb3IgZm9saW9zIHRoYXQgZGlkbid0IHN0YXJ0IGF0IGEgcGFnZSBib3VuZGFyeS4gVGhlIGZpeGVzLCBpbnZvbHZpbmcgY2FsY3VsYXRpb25zIGxpa2UgYFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbylgIGFuZCBgZm9saW9fbnJfcGFnZXMoZm9saW8pIC0gcGFnZV9pZHhgLCBlbnN1cmUgdGhhdCB3ZSdyZSBjb3JyZWN0bHkgdHJhdmVyc2luZyBtZW1vcnkgcmVnaW9ucywgZXZlbiB3aGVuIHN1Yi1wYWdlIGFjY2VzcyBpcyBpbnZvbHZlZC4gSSBjYW4gc2VlIHRoaXMgc29sdmVzIHNldmVyYWwgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIHNjZW5hcmlvcyBpbiBgZGFtb25fcGFfcGFnZW91dGAsIGB2YWRkci5jYCwgYW5kIGBjb3JlLmNgLiBFeGNlbGxlbnQgd29yayB0aGVyZSAtIHRoaXMgaXMgYSBzb2xpZCBpbXByb3ZlbWVudC4gVGhlcmUgd2VyZSBhbHNvIGltcG9ydGFudCBmaXhlcyByZWdhcmRpbmcgZmFpbHVyZSBoYW5kbGluZyBvZiBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCwgaW5jbHVkaW5nIGNoZWNrcyBmb3IgZGl2aXNpb24gYnkgemVybyBhbmQgYWRkcmVzc2luZyBvdXQtb2YtYm91bmRzIFJBTSBhY2Nlc3MuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzOiBhcmUgdGhlc2UgZml4ZXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSwgeWVzLiBEQU1PTiBpcyBwYXJ0IG9mIHRoZSBNTSBzdWJzeXN0ZW0sIGEgY3JpdGljYWwgY29tcG9uZW50IG9mIHRoZSBrZXJuZWwuIFVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCBpdCB2aWEgc3lzZnMsIGRlYnVnZnMsIGFuZCBtb2R1bGVzLiBJIGtub3cgdGhhdCBEQU1PTiBpcyBhY2Nlc3NpYmxlIGFuZCB0ZXN0YWJsZSBpbiBjb21tb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgS1ZNIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBmdXp6LiBBbmQgdGhlIHNoZWVyIGFtb3VudCBvZiBsb2dpYyBjaGFuZ2UgaGVyZSDigJMgdGhlIGVycm9yIGhhbmRsaW5nLCB0aGUgYWRkcmVzcyBjYWxjdWxhdGlvbnMgYWNyb3NzIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIHNwYWNlcywgYW5kIHRoZSBtZXRyaWMgY2FsY3VsYXRpb25zIGZvciBxdW90YSBnb2FscyDigJMgYWxsIG9mIHRoaXMgc2NyZWFtcyBcInZ1bG5lcmFibGUgc3VyZmFjZS5cIiAqKldvcnRoRnV6emluZyBpcyBkZWZpbml0ZWx5IGB0cnVlYCEqKlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGFwcHJvYWNoLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbjpcblxuMS4gICoqYEVuYWJsZUNvbmZpZ3NgKio6IFRvIHRob3JvdWdobHkgdGVzdCB0aGVzZSBjaGFuZ2VzLCBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIGNyaXRpY2FsIHRvIGVuYWJsaW5nIGFuZCB0ZXN0aW5nIHRoZSBhZmZlY3RlZCBmZWF0dXJlcy5cbjIuICAqKmBGb2N1c1N5bWJvbHNgKio6IFdoYXQgYXJlIHRoZSBrZXkgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG9yIGZ1bmN0aW9ucyBJIHNob3VsZCB0YXJnZXQgd2l0aCBteSBmdXp6aW5nIGVmZm9ydHM/XG5cbkxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIEknbGwgbmVlZCB0byBsb29rIGF0IGBtbS9kYW1vbi9LY29uZmlnYCBhZ2FpbiB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdDpcblxuKiAgIGBEQU1PTmAgKHRoZSBiYXNlLCBubyBkaXJlY3QgZGVwZW5kZW5jaWVzKVxuKiAgIGBEQU1PTl9WQUREUmAgKGRlcGVuZHMgb24gYERBTU9OYCBhbmQgYE1NVWApXG4qICAgYERBTU9OX1BBRERSYCAoZGVwZW5kcyBvbiBgREFNT05gIGFuZCBgTU1VYClcbiogICBgREFNT05fU1lTRlNgIChkZXBlbmRzIG9uIGBEQU1PTmAgYW5kIGBTWVNGU2ApXG4qICAgYERBTU9OX1JFQ0xBSU1gIChkZXBlbmRzIG9uIGBEQU1PTl9QQUREUmApXG4qICAgYERBTU9OX0xSVV9TT1JUYCAoZGVwZW5kcyBvbiBgREFNT05fUEFERFJgKVxuKiAgIGBEQU1PTl9TVEFUYCAoZGVwZW5kcyBvbiBgREFNT05fUEFERFJgKVxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGVuYWJsZSBhbGwgdGhlIHJlbGV2YW50IERBTU9OLXJlbGF0ZWQgb3B0aW9ucywgZXNwZWNpYWxseSB0aG9zZSBkZWFsaW5nIHdpdGggcGh5c2ljYWwgYWRkcmVzc2VzLCBhcyB0aG9zZSBzZWVtIG1vc3QgY3JpdGljYWwgaW4gbGlnaHQgb2YgdGhlIGZpeGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIE5VTUEvTUVNQ0cgZG9lc24ndCBwcm92aWRlIGFueSBnb3RjaGFzLiBMb29raW5nIGF0IGBtbS9kYW1vbi9jb3JlLmNgLCBJIHNlZSBgc2lfbWVtaW5mb19ub2RlYCBhbmQgYGRhbW9zX2dldF9ub2RlX21lbV9icGAgYXJlIGd1YXJkZWQgYnkgYCNpZmRlZiBDT05GSUdfTlVNQWAuIFNvLCBJIG11c3QgdmVyaWZ5IGFueSBkZXBlbmRlbmNpZXMgb24gdGhhdCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBEQU1PTiBzdWJzeXN0ZW0gdG8gYmUgY29tcHJlaGVuc2l2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI5MjIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTozOS42MDg0MDAyMTVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDY3NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZmRlZiBDT05GSUdfTlVNQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI3ODM9c3RhdGljIGlubGluZSB1NjQgZGFtb3NfZ2V0X3NvbWVfbWVtX3BzaV90b3RhbCh2b2lkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3ODktXFxubW0vZGFtb24vY29yZS5jOjI3OTA6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vZGFtb24vY29yZS5jLTI3OTEtc3RhdGljIGJvb2wgaW52YWxpZF9tZW1fbm9kZShpbnQgbmlkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTozOS42NjU4NzQzOTFaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjIxNjY3MzM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBDb2RlIFJldmlldzogUHJlcHJvY2Vzc29yIERpcmVjdGl2ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBEQU1PTiBjb2RlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBOVU1BIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgSSBzYXcgYSBgI2lmZGVmIENPTkZJR19OVU1BYCBibG9jayBsdXJraW5nIGFyb3VuZCBsaW5lIDI3OTAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlIGVsc2UgYXJlIHRoZXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucyBoYXBwZW5pbmcgaW4gdGhpcyBtb2R1bGU/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4dGVudCBvZiB0aGUgTlVNQS1zcGVjaWZpYyBjb2RlIHBhdGhzLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBzeXN0ZW1hdGljYWxseSBjaGVjayBgbW0vZGFtb24vY29yZS5jYCwgYXMgd2VsbCBhcyBgbW0vZGFtb24vcGFkZHIuY2AgYW5kIGBtbS9kYW1vbi92YWRkci5jYC4gSXQncyBjcnVjaWFsIEkgaWRlbnRpZnkgYWxsIHRoZSBpbnN0YW5jZXMgb2YgYCNpZmRlZmAgZGlyZWN0aXZlcyByZWxhdGVkIHRvIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucywgbm90IGp1c3QgTlVNQSwgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgREFNT04gYWRhcHRzIHRvIHZhcnlpbmcgc3lzdGVtIGFyY2hpdGVjdHVyZXMgYW5kIGJ1aWxkcy4gSSBuZWVkIHRvIGJlIHN1cmUgYW55IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmZWF0dXJlcyBhcmUgY29ycmVjdGx5IGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTA0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6NDEuODgyNTUwMzI1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc1OTg3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWYuKlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI4OT11bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMTItXFxubW0vZGFtb24vY29yZS5jOjMxMzojaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL2NvcmUuYy0zMTQtc3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzYzPXN0YXRpYyBpbmxpbmUgdm9pZCBkYW1vbl9pbnNlcnRfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzcwLVxcbm1tL2RhbW9uL2NvcmUuYzozNzE6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmMtMzcyLXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9Mjc0MD1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9mZWVkX2xvb3BfbmV4dF9pbnB1dCh1bnNpZ25lZCBsb25nIGxhc3RfaW5wdXQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjc3MC1cXG5tbS9kYW1vbi9jb3JlLmM6Mjc3MTojaWZkZWYgQ09ORklHX1BTSVxcbm1tL2RhbW9uL2NvcmUuYy0yNzcyLVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTI3ODM9c3RhdGljIGlubGluZSB1NjQgZGFtb3NfZ2V0X3NvbWVfbWVtX3BzaV90b3RhbCh2b2lkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3ODktXFxubW0vZGFtb24vY29yZS5jOjI3OTA6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vZGFtb24vY29yZS5jLTI3OTEtc3RhdGljIGJvb2wgaW52YWxpZF9tZW1fbm9kZShpbnQgbmlkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTI4MjQ9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yODY5LVxcbm1tL2RhbW9uL2NvcmUuYzoyODcwOiNpZmRlZiBDT05GSUdfREFNT05fUEFERFJcXG5tbS9kYW1vbi9jb3JlLmMtMjg3MS0vKlxcbi0tXFxubW0vZGFtb24vY29yZS5jPTMyNDM9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI4My1cXG5tbS9kYW1vbi9jb3JlLmM6MzI4NDojaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL2NvcmUuYy0zMjg1LXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMzkyPXN0YXRpYyB2b2lkIGtkYW1vbmRfbWVyZ2VfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fY3R4ICpjLCB1bnNpZ25lZCBpbnQgdGhyZXNob2xkLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM0MTktXFxubW0vZGFtb24vY29yZS5jOjM0MjA6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmMtMzQyMS1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfc3BsaXRfcmVnaW9uX2F0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzY0Mz1zdGF0aWMgdm9pZCBrZGFtb25kX3VzbGVlcCh1bnNpZ25lZCBsb25nIHVzZWNzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM2NTAtXFxubW0vZGFtb24vY29yZS5jOjM2NTE6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmMtMzY1Mi1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTEzLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG5tbS9kYW1vbi9scnVfc29ydC5jLTE1LSN1bmRlZiBNT0RVTEVfUEFSQU1fUFJFRklYXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9NzM9dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTc0LXtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NzU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy03Ni1cXHRwbWRfdCBwbWR2YWwgPSBwbWRwX2dldChwbWQpO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTE5ND1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb195b3VuZ19vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMTUtXFx0XFx0fSBlbHNlIHtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MjE2OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjE3LVxcdFxcdFxcdHBtZF90IHBtZCA9IHBtZHBfZ2V0KHB2bXcucG1kKTtcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0xMy1cXG5tbS9kYW1vbi9yZWNsYWltLmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG5tbS9kYW1vbi9yZWNsYWltLmMtMTUtI3VuZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG4tLVxcbm1tL2RhbW9uL3N0YXQuYy0xMy1cXG5tbS9kYW1vbi9zdGF0LmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG5tbS9kYW1vbi9zdGF0LmMtMTUtI3VuZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTEwNj1zdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEwOC17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA5OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTAtXFx0Y2dyb3VwX3BhdGgobWVtY2ctXFx1MDAzZWNzcy5jZ3JvdXAsIG1lbWNnX3BhdGhfYnVmLCBQQVRIX01BWCk7XFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjojaWZkZWYgQ09ORklHX0RBTU9OX0tVTklUX1RFU1RcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNy1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODojaWZuZGVmIF9EQU1PTl9DT1JFX1RFU1RfSFxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC05LSNkZWZpbmUgX0RBTU9OX0NPUkVfVEVTVF9IXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTUtXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0LmgtNy1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjg6I2lmbmRlZiBfREFNT05fU1lTRlNfVEVTVF9IXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC05LSNkZWZpbmUgX0RBTU9OX1NZU0ZTX1RFU1RfSFxcbi0tXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC01LVxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6NjojaWZkZWYgQ09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oLTctXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDo4OiNpZm5kZWYgX0RBTU9OX1ZBRERSX1RFU1RfSFxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtOS0jZGVmaW5lIF9EQU1PTl9WQUREUl9URVNUX0hcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtMTktXFxubW0vZGFtb24vdmFkZHIuYzoyMDojaWZkZWYgQ09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi92YWRkci5jLTIxLSN1bmRlZiBEQU1PTl9NSU5fUkVHSU9OX1NaXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTI2OD1zdGF0aWMgaW50IGRhbW9uX21rb2xkX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTI5NC1cXG5tbS9kYW1vbi92YWRkci5jOjI5NTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2RhbW9uL3ZhZGRyLmMtMjk2LXN0YXRpYyB2b2lkIGRhbW9uX2h1Z2V0bGJfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTM4OT1zdGF0aWMgaW50IGRhbW9uX3lvdW5nX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTM5Ny1cXG5tbS9kYW1vbi92YWRkci5jOjM5ODojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vZGFtb24vdmFkZHIuYy0zOTktXFx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHdhbGstXFx1MDAzZXZtYSk7XFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTQzNC1cXG5tbS9kYW1vbi92YWRkci5jOjQzNTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2RhbW9uL3ZhZGRyLmMtNDM2LXN0YXRpYyBpbnQgZGFtb25feW91bmdfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYz02MzU9c3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTY0Ni1cXG5tbS9kYW1vbi92YWRkci5jOjY0NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vZGFtb24vdmFkZHIuYy02NDgtXFx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHdhbGstXFx1MDAzZXZtYSk7XFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTcxMD1zdGF0aWMgdm9pZCBkYW1vbl92YV9jbGVhbnVwX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03MTQtXFxubW0vZGFtb24vdmFkZHIuYzo3MTU6I2lmbmRlZiBDT05GSUdfQURWSVNFX1NZU0NBTExTXFxubW0vZGFtb24vdmFkZHIuYy03MTYtc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfbWFkdmlzZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTc5OD1zdGF0aWMgaW50IGRhbW9zX3ZhX3N0YXRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtODA5LVxcbm1tL2RhbW9uL3ZhZGRyLmM6ODEwOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9kYW1vbi92YWRkci5jLTgxMS1cXHRwdGwgPSBwbWRfdHJhbnNfaHVnZV9sb2NrKHBtZCwgdm1hKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6NDEuOTI4MzE2ODMyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MDgxMjI1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgREFNT04gRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHRpbWUgdG8gc29saWRpZnkgdGhlIHBsYW4gZm9yIGZ1enppbmcgREFNT04uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgQ09ORklHX0RBTU9OYCwgbmF0dXJhbGx5LCBhbG9uZyB3aXRoIGl0cyBhZGRyZXNzIHNwYWNlIHZhcmlhbnRzIChgQ09ORklHX0RBTU9OX1ZBRERSYCwgYENPTkZJR19EQU1PTl9QQUREUmApLCBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZSAoYENPTkZJR19EQU1PTl9TWVNGU2ApLiBJJ2xsIGFsc28gZG91YmxlLWNoZWNrIHRoYXQgSSBoYXZlIE5VTUEgc3VwcG9ydCAoYENPTkZJR19OVU1BYCksIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgKSwgYW5kIE1lbW9yeSBDb250cm9sIEdyb3VwcyAoYENPTkZJR19NRU1DR2ApIGVuYWJsZWQ7IHRoZXNlIHdpbGwgYmUgaW1wb3J0YW50IGZvciBleHBsb3JpbmcgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IHNjZW5hcmlvcy5cblxuTm93LCB0aGUgcmVhbCBmb2N1cyBpcyBvbiB0YXJnZXRpbmcgdGhlIHJpZ2h0IGVudHJ5cG9pbnRzLiBJIHdhbnQgdG8gaWRlbnRpZnkgc3BlY2lmaWMsIG5vbi1ob3QtcGF0aCBrZXJuZWwgZnVuY3Rpb25zIHdpdGhpbiBEQU1PTiB0aGF0IGFyZSBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nLiBJJ2xsIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIOKAkyB0aGUgbW9yZSBleHBvc2VkIGFuZCBsZXNzIG9wdGltaXplZCBmdW5jdGlvbnMg4oCTIG92ZXIgdGhlIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBtb3N0IGJhbmcgZm9yIG15IGJ1Y2sgaW4gdGVybXMgb2YgdW5jb3ZlcmluZyBwb3RlbnRpYWwgYnVncy5cblxuVG8gcGlucG9pbnQgdGhlc2UgZW50cnlwb2ludHMsIEknbGwgZXhhbWluZSB0aGUgZXhwb3J0ZWQvZ2xvYmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBtbS9kYW1vbi9gIGRpcmVjdG9yeS4gTXkgc3RyYXRlZ3kgaW52b2x2ZXMgc3lzdGVtYXRpY2FsbHkgc2VhcmNoaW5nIHRocm91Z2ggdGhlIGZvbGxvd2luZyBmaWxlczogYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9zeXNmcy5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBgbW0vZGFtb24vdmFkZHIuY2AsIGFuZCBgbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jYC4gSSdtIGdvaW5nIHRvIHNjYW4gdGhlc2UgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSAqbm90KiBkZWNsYXJlZCBhcyBzdGF0aWMgdG8gYXZvaWQgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgZm9jdXMgaW5zdGVhZCBvbiB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGZsb3dzIEkgd2FudCB0byBhbmFseXplLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI4NywiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTo0NS41MzY0NDIzMjFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODYxMjU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IFthLXpdfF52b2lkIFthLXpdfF5zdHJ1Y3QgLipkYW1vbl98XnNzaXplX3QgW2Etel1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5tbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxcbm1tL2RhbW9uL2NvcmUuYy03My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXFxubW0vZGFtb24vY29yZS5jOjk5OmludCBkYW1vbl9zZWxlY3Rfb3BzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgZW51bSBkYW1vbl9vcHNfaWQgaWQpXFxubW0vZGFtb24vY29yZS5jLTEwMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTU6c3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbmV3X2ZpbHRlcihlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGUsXFxubW0vZGFtb24vY29yZS5jLTExNi1cXHRcXHRib29sIG1hdGNoaW5nLCBib29sIGFsbG93KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTMwOnZvaWQgZGFtb25fYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTEzMS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTQwPXN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ0LVxcbm1tL2RhbW9uL2NvcmUuYzoxNDU6dm9pZCBkYW1vbl9kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxcbm1tL2RhbW9uL2NvcmUuYy0xNDYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTE1MT1zdGF0aWMgc3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbnRoX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE2Mi1cXG5tbS9kYW1vbi9jb3JlLmM6MTYzOnN0cnVjdCBkYW1vbl9wcm9iZSAqZGFtb25fbmV3X3Byb2JlKHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTE2NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTc1LVxcbm1tL2RhbW9uL2NvcmUuYzoxNzY6dm9pZCBkYW1vbl9hZGRfcHJvYmUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlKVxcbm1tL2RhbW9uL2NvcmUuYy0xNzcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMxOT1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjgtICovXFxubW0vZGFtb24vY29yZS5jOjMyOTpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbm1tL2RhbW9uL2NvcmUuYy0zMzAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTQ0Nj1zdGF0aWMgaW50IGRhbW9uX2ZpbGxfcmVnaW9uc19ob2xlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpmaXJzdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00NzgtICovXFxubW0vZGFtb24vY29yZS5jOjQ3OTppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcXG5tbS9kYW1vbi9jb3JlLmMtNDgwLVxcdFxcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz01OTI9Ym9vbCBkYW1vc19maWx0ZXJfZm9yX29wcyhlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGUpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjAzLVxcbm1tL2RhbW9uL2NvcmUuYzo2MDQ6dm9pZCBkYW1vc19hZGRfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjA1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz02MTc9c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02MjEtXFxubW0vZGFtb24vY29yZS5jOjYyMjp2b2lkIGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTYyMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NjI4PXN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02NDItXFxubW0vZGFtb24vY29yZS5jOjY0Mzp2b2lkIGRhbW9zX2FkZF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YSAqcSwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXFxubW0vZGFtb24vY29yZS5jLTY0NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NjUzPXN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02NTctXFxubW0vZGFtb24vY29yZS5jOjY1ODp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNjU5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz02NzA9c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTY4Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NjgzOnN0cnVjdCBkYW1vcyAqZGFtb25fbmV3X3NjaGVtZShzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4gKnBhdHRlcm4sXFxubW0vZGFtb24vY29yZS5jLTY4NC1cXHRcXHRcXHRlbnVtIGRhbW9zX2FjdGlvbiBhY3Rpb24sXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NzI1PXN0YXRpYyB2b2lkIGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MzUtXFxubW0vZGFtb24vY29yZS5jOjczNjp2b2lkIGRhbW9uX2FkZF9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTczNy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NzQ3PXN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfc2NoZW1lKHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NTEtXFxubW0vZGFtb24vY29yZS5jOjc1Mjp2b2lkIGRhbW9uX2Rlc3Ryb3lfc2NoZW1lKHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtNzUzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NzYtICovXFxubW0vZGFtb24vY29yZS5jOjc3NzpzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9uZXdfdGFyZ2V0KHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTc3OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzkzLVxcbm1tL2RhbW9uL2NvcmUuYzo3OTQ6dm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNzk1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04MDEtICovXFxubW0vZGFtb24vY29yZS5jOjgwMjppbnQgZGFtb25fc2V0X3RhcmdldF9waWQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgaW50IHBpZClcXG5tbS9kYW1vbi9jb3JlLmMtODAzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz04MTA9c3RhdGljIHZvaWQgZGFtb25fZGVsX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTgxNC1cXG5tbS9kYW1vbi9jb3JlLmM6ODE1OnZvaWQgZGFtb25fZnJlZV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04MjMtXFxubW0vZGFtb24vY29yZS5jOjgyNDp2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtODI1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz04MzQ9dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04MzgtXFxubW0vZGFtb24vY29yZS5jOjgzOTpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTg0MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9ODc5PXN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxcbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTg4OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTAyMD1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEwNTQtICovXFxubW0vZGFtb24vY29yZS5jOjEwNTU6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTEwNTYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMDItICovXFxubW0vZGFtb24vY29yZS5jOjExMDM6dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXFxubW0vZGFtb24vY29yZS5jLTExMDQtXFx0XFx0XFx0c3NpemVfdCBucl9zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTExNDY9c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE2OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTE2OTppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE3MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTgxNj1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODQ0LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxODQ1OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xODQ2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xOTI4PXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTk2NTppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjAxMD1zdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIwMjktICovXFxubW0vZGFtb24vY29yZS5jOjIwMzA6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcXG5tbS9kYW1vbi9jb3JlLmMtMjAzMS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjA0NT1ib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIwNjAtICovXFxubW0vZGFtb24vY29yZS5jOjIwNjE6aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMjA2Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjA5Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjA5NzppbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXFxubW0vZGFtb24vY29yZS5jLTIwOTgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxNDktICovXFxubW0vZGFtb24vY29yZS5jOjIxNTA6aW50IGRhbW9zX3dhbGsoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3Nfd2Fsa19jb250cm9sICpjb250cm9sKVxcbm1tL2RhbW9uL2NvcmUuYy0yMTUxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNzc2PXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM5NDMtXFxubW0vZGFtb24vY29yZS5jOjM5NDQ6c3RydWN0IGRhbW9uX3N5c3RlbV9yYW1fcmFuZ2Vfd2Fsa19hcmcge1xcbm1tL2RhbW9uL2NvcmUuYy0zOTQ1LVxcdGJvb2wgd2Fsa2VkO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTM5NzQ9c3RhdGljIGJvb2wgZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZSh1bnNpZ25lZCBsb25nICpzdGFydCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MDA1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo0MDA2OmludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG5tbS9kYW1vbi9jb3JlLmMtNDAwNy1cXHRcXHRcXHR1bnNpZ25lZCBsb25nICpzdGFydCwgdW5zaWduZWQgbG9uZyAqZW5kLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQwMzAtICovXFxubW0vZGFtb24vY29yZS5jOjQwMzE6dm9pZCBkYW1vbl91cGRhdGVfcmVnaW9uX2FjY2Vzc19yYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIGJvb2wgYWNjZXNzZWQpXFxubW0vZGFtb24vY29yZS5jLTQwMzIte1xcbi0tXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYy0xNC0gKi9cXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jOjE1OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTYtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApXFxuLS1cXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oLTQ1LVxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmg6NDY6aW50IGRhbW9uX21vZHVsZXNfbmV3X3BhZGRyX2N0eF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHAsXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00Ny1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICoqdGFyZ2V0cCk7XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjMtICovXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjI0OnN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yNS17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDEtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjQyOnZvaWQgZGFtb25fcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy00My17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzItXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjczOnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy03NC17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTAzLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzoxMDQ6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMDUtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE0OS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTUwOmludCBkYW1vbl9jb2xkX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE1MS1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MTU5PXN0YXRpYyBib29sIGRhbW9uX2ZvbGlvX21rb2xkX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3My1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTc0OnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTc1LXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uaC03LVxcbm1tL2RhbW9uL29wcy1jb21tb24uaDo4OnN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtOS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTA6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMTp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjEyOnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTEzLWJvb2wgZGFtb25fZm9saW9feW91bmcoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTE0LVxcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxNTppbnQgZGFtb25fY29sZF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNi1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxNzppbnQgZGFtb25faG90X3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTE4LVxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcyk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz0xMD1ERUZJTkVfTVVURVgoZGFtb25fc3lzZnNfbG9jayk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxNjpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE3LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9NjU9c3RhdGljIHNzaXplX3QgbWF4X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04MC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4MTp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODIte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA2PXN0YXRpYyBib29sIGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE2LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjExNzppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExOC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD05PWV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWF4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTIyPWV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mjg6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zMy1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9Mzc9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lc19rdHlwZTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zOC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozOTppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQwLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Mjp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfdXBkYXRlX3N0YXRzKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQzLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDY6dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQ3LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjUxOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjU0OmludCBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTc6dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zNTY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNjY6c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTI4LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwMjA6c3RydWN0IGRhbW9uX3N5c2ZzX3dhdGVybWFya3Mge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDIxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTc0OnN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjgzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg1LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19xdW90YXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk1OTpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTYwLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk2Nj1zdGF0aWNcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE5Njgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZClcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4NS17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4OTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjg1MT1zdGF0aWMgaW50IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODk3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODk4OmludCBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODk5LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTMyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTMzOnZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5MzQtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0ODppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ5LVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNjc6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTA0LSAqL1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMTA1OnZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzEwNi1cXHRcXHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzE1MS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzE1MjppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUzLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xNC1cXG5tbS9kYW1vbi9zeXNmcy5jOjE1OnN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb24ge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9ODE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcmVnaW9uX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy05MC1cXG5tbS9kYW1vbi9zeXNmcy5jOjkxOnN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb25zIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTkyLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25zX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMDktXFxubW0vZGFtb24vc3lzZnMuYzoyMTA6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldCB7XFxubW0vZGFtb24vc3lzZnMuYy0yMTEtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MzA3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3RhcmdldF9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMzE2LVxcbm1tL2RhbW9uL3N5c2ZzLmM6MzE3OnN0cnVjdCBkYW1vbl9zeXNmc190YXJnZXRzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTMxOC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz00MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtNDQ0LVxcbm1tL2RhbW9uL3N5c2ZzLmM6NDQ1OnN0cnVjdCBkYW1vbl9zeXNmc19pbnRlcnZhbHNfZ29hbCB7XFxubW0vZGFtb24vc3lzZnMuYy00NDYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9NTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy02MDEtXFxubW0vZGFtb24vc3lzZnMuYzo2MDI6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFscyB7XFxubW0vZGFtb24vc3lzZnMuYy02MDMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9NzQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ludGVydmFsc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtNzU1LVxcbm1tL2RhbW9uL3N5c2ZzLmM6NzU2OnN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLmMtNzU3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTc2ND1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqZGFtb25fc3lzZnNfZmlsdGVyX2FsbG9jKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTc2OC1cXG5tbS9kYW1vbi9zeXNmcy5jOjc2OTpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMuYy03NzAtXFx0ZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz05MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy05NDUtXFxubW0vZGFtb24vc3lzZnMuYzo5NDY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTQ3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEwNTU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTA2NC1cXG5tbS9kYW1vbi9zeXNmcy5jOjEwNjU6c3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTEwNjYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTEzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19wcm9iZV9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTE0NS1cXG5tbS9kYW1vbi9zeXNmcy5jOjExNDY6c3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlcyB7XFxubW0vZGFtb24vc3lzZnMuYy0xMTQ3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEyNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xMjc0LVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTI3NTpzdHJ1Y3QgZGFtb25fc3lzZnNfYXR0cnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTI3Ni1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2F0dHJzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xMzgwLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTM4MTpzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTM4Mi1cXHRlbnVtIGRhbW9uX29wc19pZCBvcHNfaWQ7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEzODY9c3RhdGljIGNvbnN0IHN0cnVjdCBkYW1vbl9zeXNmc19vcHNfbmFtZSBkYW1vbl9zeXNmc19vcHNfbmFtZXNbXSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTQwMC1cXG5tbS9kYW1vbi9zeXNmcy5jOjE0MDE6c3RydWN0IGRhbW9uX3N5c2ZzX2NvbnRleHQge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTQwMi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE2NTYtXFxubW0vZGFtb24vc3lzZnMuYzoxNjU3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0cyB7XFxubW0vZGFtb24vc3lzZnMuYy0xNjU4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTE3NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfY29udGV4dHNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE3ODUtXFxubW0vZGFtb24vc3lzZnMuYzoxNzg2OnN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE3ODctXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjI5OT1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMzEyLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjMxMzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lc193YWxrX2RhdGEge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjMxNC1cXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqc3lzZnNfa2RhbW9uZDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjQ5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19rZGFtb25kX2t0eXBlID0ge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTo0NS44NTUwNjE1NTdaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjYxOTEzMzMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25hbGl0eSBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHByaW1hcnkgZm9jdXMgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBEQU1PTiBjaGFuZ2VzLiBGaXJzdCwgSSdtIGlkZW50aWZ5aW5nIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgYW5kIGNvbnRyb2wgZnVuY3Rpb25zOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zeXNmc19hZGRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fc2V0X3JlZ2lvbnNgLCBgZGFtb3Nfd2Fsa2AsIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgLCBhbmQgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAuIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIHNjaGVtZSBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgZm9yIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3NlcyBhcmUgaW5kZWVkIHN0YXRpYywgYXMgZXhwZWN0ZWQsIHJlc2lkaW5nIHdpdGhpbiBgcGFkZHIuY2AgYW5kIGB2YWRkci5jYCByZXNwZWN0aXZlbHkuXG5cbk5leHQsIEknbSBjcm9zcy1yZWZlcmVuY2luZyB0aGVzZSBlbnRyeSBwb2ludHMgd2l0aCB0aGUgY29yZSBmdW5jdGlvbmFsaXRpZXMgcmVzaWRpbmcgaW4gYG1tL2RhbW9uL2NvcmUuY2AgLS0gSSdtIGRvdWJsZS1jaGVja2luZyBmdW5jdGlvbnMgbGlrZSBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCBgZGFtb25fc2V0X3JlZ2lvbnNgLCBhbmQgYGRhbW9zX3dhbGtgLiBJJ20gYWxzbyBsb29raW5nIGF0IHBvdGVudGlhbGx5IHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgYGRhbW9uX3JlZ2lzdGVyX29wc2AsIGBkYW1vbl9zZWxlY3Rfb3BzYCwgYGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGFuZCBgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldGAuXG5cbk5vdywgZm9yIGNvbmZpZ3VyYXRpb24sIEknbSBjb25maXJtaW5nIHRoYXQgd2UnbGwgYmUgZW5hYmxpbmcgYERBTU9OYCAodGhlIGNvcmUgZnJhbWV3b3JrKSwgYERBTU9OX1BBRERSYCBhbmQgYERBTU9OX1ZBRERSYCAoZm9yIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3MgbW9uaXRvcmluZyByZXNwZWN0aXZlbHkpLCBgREFNT05fU1lTRlNgIChmb3Igc3lzZnMgaW50ZXJmYWNlKSwgYERBTU9OX1JFQ0xBSU1gIGFuZCBgREFNT05fTFJVX1NPUlRgIChmb3IgcHJvYWN0aXZlIHJlY2xhbWF0aW9uIGFuZCBMUlUgc29ydGluZywgcmVzcGVjdGl2ZWx5KSwgYERBTU9OX1NUQVRgIChmb3Igc3RhdGlzdGljcyBtb25pdG9yaW5nKSwgYE5VTUFgIChmb3IgTlVNQSBzdXBwb3J0KSwgYE1FTUNHYCAoZm9yIG1lbWNnIHF1b3RhIGdvYWxzKSwgYW5kIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgKGZvciBUSFAgc3VwcG9ydCkuIFRoaXMgaXMgdGhlIGZ1bGwgc3VpdGUgb2Ygb3B0aW9ucywgYXMgZmFyIGFzIEkgY2FuIHNlZS5cblxuVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBub3cgY2xlYXI6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfcmVnaW9uc2AsIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBhbmQgYGRhbW9zX3dhbGtgLiBUaGV5IGNsZWFybHkgY292ZXIgdGhlIGtleSBpbnRlcmFjdGlvbiBwb2ludHMgYW5kIEkndmUgdmVyaWZpZWQgdGhhdCB0aGVyZSBhcmUgbm8gb2J2aW91cyBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZGV0YWlscyB0byBjb25zaWRlci5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcyDigJMgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgcG90ZW50aWFsIGRpdmlzaW9uLWJ5LXplcm8gZXJyb3JzIGFuZCBpbnZhbGlkIG1lbW9yeSBjYWxjdWxhdGlvbnMgd2l0aGluIGBkYW1vc19nZXRfbm9kZV9tZW1fYnBgLCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icGAsIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGAgYW5kIHJlZ2lvbiBzcGxpdHRpbmcsIGZvbGlvIGJvdW5kYXJ5IGNvcnJlY3Rpb25zIGZvciBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzIHNwYWNlcyDigJMgZnV6emluZyBzZWVtcyB3YXJyYW50ZWQuIFRoZSBwYXRjaCB0b3VjaGVzIGNyaXRpY2FsIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLlxuXG5BbHJpZ2h0LCBJJ20gc2F0aXNmaWVkLiBMZXQncyBtb3ZlIG9uIGFuZCBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczMDQsIk91dHB1dFRva2VucyI6MzAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjUyLjQ3NDE5NzY5MVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMjY4MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIkRBTU9OX1NUQVRcIixcbiAgICBcIk5VTUFcIixcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zZXRfYXR0cnNcIixcbiAgICBcImRhbW9uX3NldF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vbl9zZXRfcmVnaW9uc1wiLFxuICAgIFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb3Nfd2Fsa1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yaW5nKSBsb2dpYyBhY3Jvc3MgY29yZSwgcGFkZHIsIGFuZCB2YWRkciBjb21wb25lbnRzLiBJdCBmaXhlcyBoYW5kbGluZyBvZiBzcGxpdCBmYWlsdXJlcyBpbiBkYW1vc19hcHBseV9zY2hlbWUsIHByZXZlbnRzIGRpdmlkZS1ieS16ZXJvIC8gYm91bmRhcnkgY2FsY3VsYXRpb24gZXJyb3JzIGluIERBTU9TIHF1b3RhIG1ldHJpY3MgKGRhbW9zX2dldF9ub2RlX21lbV9icCwgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icCwgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnApLCBhbmQgZml4ZXMgZm9saW8gaXRlcmF0aW9uIGFkZHJlc3MgYWR2YW5jZXMgaW4gcGFkZHIgYW5kIHZhZGRyIHNjaGVtZXMgd2hlbiBkZWFsaW5nIHdpdGggc3VicGFnZXMgb2YgbGFyZ2UgZm9saW9zLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgREFNT1Mgc2NoZW1lIGFwcGxpY2F0aW9uIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiREFNT05fU1RBVFwiLFxuICAgIFwiTlVNQVwiLFxuICAgIFwiTUVNQ0dcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9hdHRyc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vc193YWxrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcpIGxvZ2ljIGFjcm9zcyBjb3JlLCBwYWRkciwgYW5kIHZhZGRyIGNvbXBvbmVudHMuIEl0IGZpeGVzIGhhbmRsaW5nIG9mIHNwbGl0IGZhaWx1cmVzIGluIGRhbW9zX2FwcGx5X3NjaGVtZSwgcHJldmVudHMgZGl2aWRlLWJ5LXplcm8gLyBib3VuZGFyeSBjYWxjdWxhdGlvbiBlcnJvcnMgaW4gREFNT1MgcXVvdGEgbWV0cmljcyAoZGFtb3NfZ2V0X25vZGVfbWVtX2JwLCBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwLCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icCksIGFuZCBmaXhlcyBmb2xpbyBpdGVyYXRpb24gYWRkcmVzcyBhZHZhbmNlcyBpbiBwYWRkciBhbmQgdmFkZHIgc2NoZW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyBvZiBsYXJnZSBmb2xpb3MuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBEQU1PUyBzY2hlbWUgYXBwbGljYXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjUyLjU0NDQ3MzI1NloiLCJTZXEiOjQzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc2NTE0Nzg2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjUyLjU0NTEzMDI3NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjg3NjQ0ODYxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBsb2dpY2FsIGFyaXRobWV0aWMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYWRkcmVzcyBhZHZhbmNlbWVudCBidWdzIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKTpcXG4xLiBBZGRzIGVycm9yIGNoZWNraW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCBpbiBgbW0vZGFtb24vY29yZS5jYC5cXG4yLiBBZGRzIGJvdW5kYXJ5IGFuZCB6ZXJvIGNoZWNrcyB0byBhdm9pZCB1bmRlcmZsb3cgYW5kIGRpdmlzaW9uLWJ5LXplcm8gaW4gbm9kZS9jZ3JvdXAgbWVtb3J5IG1ldHJpY3MgY2FsY3VsYXRpb25zIChgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnBgKS5cXG4zLiBDb3JyZWN0cyBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9uIHdoZW4gYWR2YW5jaW5nIHBhc3QgZm9saW9zIGluIGBtbS9kYW1vbi9wYWRkci5jYC5cXG40LiBDb3JyZWN0cyBwYWdlIGluZGV4IG9mZnNldCBjYWxjdWxhdGlvbnMgd2hlbiBhZHZhbmNpbmcgb3ZlciBtdWx0aS1wYWdlIGZvbGlvcyBpbiBgbW0vZGFtb24vdmFkZHIuY2AuXFxuXFxuTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCByZWFkIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbGwgdmFyaWFibGVzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYXJlIHN0cmljdGx5IGluaXRpYWxpemVkIGFuZCBvcGVyYXRlZCBvbiBhcyBsb2NhbCBwcmltaXRpdmVzLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjc2MjJmMzkxYWQzODM1YjljOTZlZTlkNTYwNGE2MzZmODAxYmRhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDM6MzA6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDNmODljZmRmNWYwMjIuLjBkZjc4NWU3MjQzOGYgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTI2MDQsNyArMjYwNCw4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuIFx0XHRcdFx0XHRjLVx1MDAzZW1pbl9yZWdpb25fc3opO1xuIFx0XHRcdGlmICghc3opXG4gXHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuLVx0XHRcdGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeik7XG4rXHRcdFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXG4rXHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuIFx0XHR9XG4gXHRcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXG4gXHRcdFx0cmV0dXJuO1xuQEAgLTI4MDYsNiArMjgwNywxMyBAQCBzdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXG4gXHR9XG4gXG4gXHRzaV9tZW1pbmZvX25vZGUoXHUwMDI2aSwgZ29hbC1cdTAwM2VuaWQpO1xuK1x0aWYgKCFpLnRvdGFscmFtIHx8IGkudG90YWxyYW0gXHUwMDNjIGkuZnJlZXJhbSkge1xuK1x0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcbitcdFx0XHRyZXR1cm4gMTAwMDA7XG4rXHRcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cbitcdFx0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxuIFx0XHRudW1lcmF0b3IgPSBpLnRvdGFscmFtIC0gaS5mcmVlcmFtO1xuIFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqL1xuQEAgLTI4NDYsNiArMjg1NCwxMiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKFxuIFx0bWVtX2Nncm91cF9wdXQobWVtY2cpO1xuIFxuIFx0c2lfbWVtaW5mb19ub2RlKFx1MDAyNmksIGdvYWwtXHUwMDNlbmlkKTtcbitcdGlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtIFx1MDAzYyB1c2VkX3BhZ2VzKSB7XG4rXHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXG4rXHRcdFx0cmV0dXJuIDEwMDAwO1xuK1x0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cbitcdFx0XHRyZXR1cm4gMDtcbitcdH1cbiBcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXG4gXHRcdG51bWVyYXRvciA9IHVzZWRfcGFnZXM7XG4gXHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cbkBAIC0yOTkyLDcgKzMwMDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKGJvb2wgYWN0aXZlX3JhdGlvKVxuIFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0FDVElWRV9GSUxFKTtcbiBcdGluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9JTkFDVElWRV9BTk9OKSArXG4gXHRcdGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgKyBMUlVfSU5BQ1RJVkVfRklMRSk7XG4tXHR0b3RhbCA9IGFjdGl2ZSArIGluYWN0aXZlO1xuK1x0dG90YWwgPSBtYXgoYWN0aXZlICsgaW5hY3RpdmUsIDEpO1xuIFx0aWYgKGFjdGl2ZV9yYXRpbylcbiBcdFx0cmV0dXJuIG11bHRfZnJhYyhhY3RpdmUsIDEwMDAwLCB0b3RhbCk7XG4gXHRyZXR1cm4gbXVsdF9mcmFjKGluYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3BhZGRyLmMgYi9tbS9kYW1vbi9wYWRkci5jXG5pbmRleCA1YzZjM2E1OTdmZDBiLi45ZGRkMWVjODIwMmI3IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vcGFkZHIuY1xuKysrIGIvbW0vZGFtb24vcGFkZHIuY1xuQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9wYWdlb3V0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdGVsc2VcbiBcdFx0XHRsaXN0X2FkZChcdTAwMjZmb2xpby1cdTAwM2VscnUsIFx1MDAyNmZvbGlvX2xpc3QpO1xuIHB1dF9mb2xpbzpcbi1cdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbitcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRpZiAoaW5zdGFsbF95b3VuZ19maWx0ZXIpXG5AQCAtMzAyLDcgKzMwMiw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZV9hY3RpdmF0ZShcbiBcdFx0XHRmb2xpb19kZWFjdGl2YXRlKGZvbGlvKTtcbiBcdFx0YXBwbGllZCArPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4gcHV0X2ZvbGlvOlxuLVx0XHRhZGRyICs9IGZvbGlvX3NpemUoZm9saW8pO1xuK1x0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgKyBmb2xpb19zaXplKGZvbGlvKTtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiBcdH1cbiBcdHMtXHUwMDNlbGFzdF9hcHBsaWVkID0gZm9saW87XG5AQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdFx0XHRcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XG4gXHRcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2Zm9saW9fbGlzdCk7XG4gcHV0X2ZvbGlvOlxuLVx0XHRhZGRyICs9IGZvbGlvX3NpemUoZm9saW8pO1xuK1x0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgKyBmb2xpb19zaXplKGZvbGlvKTtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiBcdH1cbiBcdGFwcGxpZWQgPSBkYW1vbl9taWdyYXRlX3BhZ2VzKFx1MDAyNmZvbGlvX2xpc3QsIHMtXHUwMDNldGFyZ2V0X25pZCk7XG5AQCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX3N0YXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcbiBcdFx0aWYgKCFkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcbiBcdFx0XHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcbi1cdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbitcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3ZhZGRyLmMgYi9tbS9kYW1vbi92YWRkci5jXG5pbmRleCAwNjQ4NDAwYjJkNjViLi5jOGMzMmIyYWUwNDAyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xuKysrIGIvbW0vZGFtb24vdmFkZHIuY1xuQEAgLTY2OSw2ICs2NjksOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHRmb3IgKDsgYWRkciBcdTAwM2MgbmV4dDsgcHRlICs9IG5yLCBhZGRyICs9IG5yICogUEFHRV9TSVpFKSB7XG4rXHRcdHVuc2lnbmVkIGxvbmcgcGFnZV9pZHg7XG4rXG4gXHRcdG5yID0gMTtcbiBcdFx0cHRlbnQgPSBwdGVwX2dldChwdGUpO1xuIFxuQEAgLTY4MSw3ICs2ODMsOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcbiBcdFx0XHRcdG1pZ3JhdGlvbl9saXN0cyk7XG4tXHRcdG5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xuK1x0XHRwYWdlX2lkeCA9IGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBwdGVfcGFnZShwdGVudCkpO1xuK1x0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4O1xuIFx0fVxuIFx0cHRlX3VubWFwX3VubG9jayhzdGFydF9wdGUsIHB0bCk7XG4gXHRyZXR1cm4gMDtcbkBAIC04MzEsNiArODM0LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yICg7IGFkZHIgXHUwMDNjIG5leHQ7IHB0ZSArPSBuciwgYWRkciArPSBuciAqIFBBR0VfU0laRSkge1xuK1x0XHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4O1xuK1xuIFx0XHRuciA9IDE7XG4gXHRcdHB0ZW50ID0gcHRlcF9nZXQocHRlKTtcbiBcbkBAIC04NDQsNyArODQ5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXG4gXHRcdGlmICghZGFtb3NfdmFfZmlsdGVyX291dChzLCBmb2xpbywgdm1hLCBhZGRyLCBwdGUsIE5VTEwpKVxuIFx0XHRcdCpzel9maWx0ZXJfcGFzc2VkICs9IGZvbGlvX3NpemUoZm9saW8pO1xuLVx0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcbitcdFx0cGFnZV9pZHggPSBmb2xpb19wYWdlX2lkeChmb2xpbywgcHRlX3BhZ2UocHRlbnQpKTtcbitcdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDtcbiBcdFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbiBcdH1cbiBcdHB0ZV91bm1hcF91bmxvY2soc3RhcnRfcHRlLCBwdGwpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6NTIuNTQ1MTMxMzg2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg3NjQ0NjE2NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgYW5kIEtNU0FOIEp1c3RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyB0aHJvdWdoIGVhY2ggbW9kaWZpZWQgZmlsZSBhbmQgdW5kZXJzdGFuZCB0aGUgaW50ZW50LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSByb2J1c3RuZXNzIG9mIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKSBhbmQsIHNwZWNpZmljYWxseSwgdGhlIERBTU9TIChEQU1PTi1iYXNlZCBNb25pdG9yaW5nIFNjaGVtZSkgY29tcG9uZW50LlxuXG5GaXJzdCwgdGhlIGBtbS9kYW1vbi9jb3JlLmNgIGNoYW5nZXMgY2F0Y2ggbXkgYXR0ZW50aW9uLiBXZSdyZSBsb29raW5nIGF0IGFkZGVkIGVycm9yIGhhbmRsaW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gVGhlIHN1YnNlcXVlbnQgYXJpdGhtZXRpYyBjaGVja3MgaW4gYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYW5kIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGAgYXJlIGNydWNpYWwuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byBwb3RlbnRpYWxseSBoYW5kbGluZyBpbnZhbGlkIG1lbW9yeSBzdGF0cyBvciBhdm9pZGluZyBkaXZpc2lvbi1ieS16ZXJvIGVycm9ycy4gSXQgYXBwZWFycyB0aGF0IHRoZSBwYXRjaCBpcyBkZWZlbnNpdmVseSBwcm9ncmFtbWluZyBmb3IgZWRnZSBjYXNlcyB3aGVyZSB0aGUgc3lzdGVtIG1lbW9yeSByZXBvcnRpbmcgbWlnaHQgYmUgaW5jb25zaXN0ZW50IG9yIGV2ZW4sIHdlbGwsIGJyb2tlbi4gSSBjYW4gZGVmaW5pdGVseSBhcHByZWNpYXRlIHRoZSBlZmZvcnQgdG8gcHJldmVudCB0aGVzZSBraW5kcyBvZiBjcmFzaGVzIG9yIGluY29ycmVjdCByZWFkaW5ncy5cblxuTmV4dCwgYG1tL2RhbW9uL3BhZGRyLmNgIGlzIHVwZGF0ZWQuIEkgY2FuIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIGFkanVzdCBob3cgcGh5c2ljYWwgYWRkcmVzc2VzIGFyZSBjb21wdXRlZCB3aGVuIGl0ZXJhdGluZyB0aHJvdWdoIGZvbGlvcy4gSXQgY29ycmVjdHMgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3RlcHBpbmcgbG9naWMgZm9yIGNhc2VzIHdoZXJlIHRoZSBhZGRyZXNzIHdhcyB1bmFsaWduZWQgb3Igd2l0aGluIGEgZm9saW8sIGVuc3VyaW5nIGFjY3VyYXRlIGNhbGN1bGF0aW9uIG9mIHRoZSBmb2xpbydzIGVuZC4gVGhlIGBtbS9kYW1vbi92YWRkci5jYCBjaGFuZ2UgZG9lcyB0aGUgc2FtZSwgYnV0IGZvciB2aXJ0dWFsIGFkZHJlc3Nlcywgd2hpY2ggc2VlbXMgbG9naWNhbC4gV2UncmUgbm93IGNvcnJlY3RseSBhY2NvdW50aW5nIGZvciB0aGUgcGFnZSBpbmRleCB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyB3aXRoaW4gbGFyZ2UgZm9saW9zLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gbm93IGlzIHdoZXRoZXIgYW55IG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgbGVhayBwb3RlbnRpYWxseSBzZW5zaXRpdmUgZGF0YSB0byB1c2Vyc3BhY2UuIEknbGwgbmVlZCB0byBydW4gdGhpcyB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3Q6IERvIHdlIGhhdmUgbmV3IGFsbG9jYXRpb25zIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24/IEFyZSB3ZSByZWFkaW5nIGZyb20gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IEFyZSB3ZSBkb2luZyBhbnkgbWVtb3J5IGNvcGllcyB0byB1c2Vyc3BhY2Ugd2l0aG91dCB0aGUgcHJvcGVyIHNhZmVndWFyZHM/IEFyZSB0aGVyZSBhbnkgbG9naWNhbCBlcnJvcnMgaW4gYXJpdGhtZXRpYyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeT9cblxuTGV0J3MgcXVpY2tseSBnbyB0aHJvdWdoIHRoZSBjb2RlIGFnYWluOiBJbiBgY29yZS5jYCwgdmFyaWFibGVzIGFyZSBiZWluZyBpbml0aWFsaXplZCBiZWZvcmUgdXNlLCBhbmQgdGhlIGNoZWNrcyBhcmUgZm9yIG1hdGhlbWF0aWNhbCBzYW5pdHkuIEluIGBwYWRkci5jYCBhbmQgYHZhZGRyLmNgLCBhbGwgdmFyaWFibGVzIGFyZSBjbGVhcmx5IGFzc2lnbmVkLCB3aXRoIHRoZSB2YWx1ZXMgYmVpbmcgZGVyaXZlZCBmcm9tIHN0cnVjdHVyZXMgbGlrZSBgZm9saW9gLlxuXG5BZnRlciBhIHRob3JvdWdoIHJldmlldywgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IEtNU0FOIGNvbmNlcm5zLiBUaGVyZSBhcmUgbm8gYWxsb2NhdGlvbnMgb3IgY29waWVzIGludm9sdmluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIGFsbCBjZW50ZXJlZCBvbiBhcml0aG1ldGljIGNvcnJlY3RuZXNzLCBlcnJvciBoYW5kbGluZywgYW5kIGNvcnJlY3QgYWRkcmVzcyBtYW5pcHVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIEtNU0FOIGlzIGdyZWF0IGZvciBmaW5kaW5nIHRob3NlIGhhcmQtdG8tc3BvdCB1bmluaXRpYWxpemVkIG1lbW9yeSBidWdzLCBidXQgS0FTQU4sIFVCU0FOLCBhbmQgZ2VuZXJhbCB0ZXN0aW5nIHNob3VsZCBhbHJlYWR5IGNhdGNoIHRoZSB0eXBlcyBvZiBpc3N1ZXMgYWRkcmVzc2VkIGhlcmUg4oCTIGxpa2UgYm91bmRzIHZpb2xhdGlvbnMgb3IgZGl2aXNpb24tYnktemVyby4gSSdtIHNhdGlzZmllZCB0aGF0IHRoZXNlIGZpeGVzIGFyZSBzdHJpY3RseSBhYm91dCBpbXByb3ZpbmcgdGhlIHJlbGlhYmlsaXR5IGFuZCBhY2N1cmFjeSBvZiBEQU1PTiwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuIFRoZSBmaXhlcyBlbmhhbmNlIG92ZXJhbGwgY29kZSBxdWFsaXR5LCBidXQgZG8gbm90IHdhcnJhbnQgYSBLTVNBTiBzY2FuLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE1LCJPdXRwdXRUb2tlbnMiOjI2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMjowMS4zMDk1OTY2MjdaIiwiU2VxIjo0NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBsb2dpY2FsIGFyaXRobWV0aWMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYWRkcmVzcyBhZHZhbmNlbWVudCBidWdzIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKTpcXG4xLiBBZGRzIGVycm9yIGNoZWNraW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCBpbiBgbW0vZGFtb24vY29yZS5jYC5cXG4yLiBBZGRzIGJvdW5kYXJ5IGFuZCB6ZXJvIGNoZWNrcyB0byBhdm9pZCB1bmRlcmZsb3cgYW5kIGRpdmlzaW9uLWJ5LXplcm8gaW4gbm9kZS9jZ3JvdXAgbWVtb3J5IG1ldHJpY3MgY2FsY3VsYXRpb25zIChgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnBgKS5cXG4zLiBDb3JyZWN0cyBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9uIHdoZW4gYWR2YW5jaW5nIHBhc3QgZm9saW9zIGluIGBtbS9kYW1vbi9wYWRkci5jYC5cXG40LiBDb3JyZWN0cyBwYWdlIGluZGV4IG9mZnNldCBjYWxjdWxhdGlvbnMgd2hlbiBhZHZhbmNpbmcgb3ZlciBtdWx0aS1wYWdlIGZvbGlvcyBpbiBgbW0vZGFtb24vdmFkZHIuY2AuXFxuXFxuTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCByZWFkIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbGwgdmFyaWFibGVzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYXJlIHN0cmljdGx5IGluaXRpYWxpemVkIGFuZCBvcGVyYXRlZCBvbiBhcyBsb2NhbCBwcmltaXRpdmVzLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvZ2ljYWwgYXJpdGhtZXRpYywgZXJyb3IgaGFuZGxpbmcsIGFuZCBhZGRyZXNzIGFkdmFuY2VtZW50IGJ1Z3MgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpOlxcbjEuIEFkZHMgZXJyb3IgY2hlY2tpbmcgZm9yIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGluIGBtbS9kYW1vbi9jb3JlLmNgLlxcbjIuIEFkZHMgYm91bmRhcnkgYW5kIHplcm8gY2hlY2tzIHRvIGF2b2lkIHVuZGVyZmxvdyBhbmQgZGl2aXNpb24tYnktemVybyBpbiBub2RlL2Nncm91cCBtZW1vcnkgbWV0cmljcyBjYWxjdWxhdGlvbnMgKGBkYW1vc19nZXRfbm9kZV9tZW1fYnBgLCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icGAsIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGApLlxcbjMuIENvcnJlY3RzIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb24gd2hlbiBhZHZhbmNpbmcgcGFzdCBmb2xpb3MgaW4gYG1tL2RhbW9uL3BhZGRyLmNgLlxcbjQuIENvcnJlY3RzIHBhZ2UgaW5kZXggb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aGVuIGFkdmFuY2luZyBvdmVyIG11bHRpLXBhZ2UgZm9saW9zIGluIGBtbS9kYW1vbi92YWRkci5jYC5cXG5cXG5Ob25lIG9mIHRoZXNlIGNoYW5nZXMgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIHJlYWQgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFsbCB2YXJpYWJsZXMgaW50cm9kdWNlZCBvciBtb2RpZmllZCBhcmUgc3RyaWN0bHkgaW5pdGlhbGl6ZWQgYW5kIG9wZXJhdGVkIG9uIGFzIGxvY2FsIHByaW1pdGl2ZXMuIFRoZXJlZm9yZSwgdGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjk4tp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 03:13:01 +0000 UTC FinishedAt: 2026-09-02 03:32:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ead700ca770c82167af32622cf8b68c9f87c3c7c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_VADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "DAMON_STAT", "NUMA", "MEMCG", "TRANSPARENT_HUGEPAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "ead700ca770c82167af32622cf8b68c9f87c3c7c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_VADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "DAMON_STAT", "NUMA", "MEMCG", "TRANSPARENT_HUGEPAGE" ], "series_id": "a03b7449-40a0-4dec-bdce-1eb698eb31e2" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_commit_ctx", "damon_set_attrs", "damon_set_schemes", "damon_set_regions", "damos_commit_quota_goals", "damon_sysfs_add_schemes", "damos_walk" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7REFNT05fU1RBVCYjMzQ7LAogICAgJiMzNDtOVU1BJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfYXR0cnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3JlZ2lvbnMmIzM0OywKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9zX3dhbGsmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgbG9naWNhbCBhcml0aG1ldGljLCBlcnJvciBoYW5kbGluZywgYW5kIGFkZHJlc3MgYWR2YW5jZW1lbnQgYnVncyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcik6XG4xLiBBZGRzIGVycm9yIGNoZWNraW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCBpbiBgbW0vZGFtb24vY29yZS5jYC5cbjIuIEFkZHMgYm91bmRhcnkgYW5kIHplcm8gY2hlY2tzIHRvIGF2b2lkIHVuZGVyZmxvdyBhbmQgZGl2aXNpb24tYnktemVybyBpbiBub2RlL2Nncm91cCBtZW1vcnkgbWV0cmljcyBjYWxjdWxhdGlvbnMgKGBkYW1vc19nZXRfbm9kZV9tZW1fYnBgLCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icGAsIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGApLlxuMy4gQ29ycmVjdHMgcGh5c2ljYWwgYWRkcmVzcyBjYWxjdWxhdGlvbiB3aGVuIGFkdmFuY2luZyBwYXN0IGZvbGlvcyBpbiBgbW0vZGFtb24vcGFkZHIuY2AuXG40LiBDb3JyZWN0cyBwYWdlIGluZGV4IG9mZnNldCBjYWxjdWxhdGlvbnMgd2hlbiBhZHZhbmNpbmcgb3ZlciBtdWx0aS1wYWdlIGZvbGlvcyBpbiBgbW0vZGFtb24vdmFkZHIuY2AuXG5cbk5vbmUgb2YgdGhlc2UgY2hhbmdlcyBhbGxvY2F0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgcmVhZCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gQWxsIHZhcmlhYmxlcyBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkIGFyZSBzdHJpY3RseSBpbml0aWFsaXplZCBhbmQgb3BlcmF0ZWQgb24gYXMgbG9jYWwgcHJpbWl0aXZlcy4gVGhlcmVmb3JlLCB0aGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZykgbG9naWMgYWNyb3NzIGNvcmUsIHBhZGRyLCBhbmQgdmFkZHIgY29tcG9uZW50cy4gSXQgZml4ZXMgaGFuZGxpbmcgb2Ygc3BsaXQgZmFpbHVyZXMgaW4gZGFtb3NfYXBwbHlfc2NoZW1lLCBwcmV2ZW50cyBkaXZpZGUtYnktemVybyAvIGJvdW5kYXJ5IGNhbGN1bGF0aW9uIGVycm9ycyBpbiBEQU1PUyBxdW90YSBtZXRyaWNzIChkYW1vc19nZXRfbm9kZV9tZW1fYnAsIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAsIGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKSwgYW5kIGZpeGVzIGZvbGlvIGl0ZXJhdGlvbiBhZGRyZXNzIGFkdmFuY2VzIGluIHBhZGRyIGFuZCB2YWRkciBzY2hlbWVzIHdoZW4gZGVhbGluZyB3aXRoIHN1YnBhZ2VzIG9mIGxhcmdlIGZvbGlvcy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIERBTU9TIHNjaGVtZSBhcHBsaWNhdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY3NjIyZjM5MWFkMzgzNWI5Yzk2ZWU5ZDU2MDRhNjM2ZjgwMWJkYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAzOjMwOjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggM2Y4OWNmZGY1ZjAyMi4uMGRmNzg1ZTcyNDM4ZiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMjYwNCw3ICYjNDM7MjYwNCw4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuIFx0XHRcdFx0XHRjLVx1MDAzZW1pbl9yZWdpb25fc3opO1xuIFx0XHRcdGlmICghc3opXG4gXHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuLVx0XHRcdGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeik7XG4mIzQzO1x0XHRcdGlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKVxuJiM0MztcdFx0XHRcdGdvdG8gdXBkYXRlX3N0YXQ7XG4gXHRcdH1cbiBcdFx0aWYgKGRhbW9zX2NvcmVfZmlsdGVyX291dChjLCB0LCByLCBzKSlcbiBcdFx0XHRyZXR1cm47XG5AQCAtMjgwNiw2ICYjNDM7MjgwNywxMyBAQCBzdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXG4gXHR9XG4gXG4gXHRzaV9tZW1pbmZvX25vZGUoXHUwMDI2aSwgZ29hbC1cdTAwM2VuaWQpO1xuJiM0MztcdGlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtIFx1MDAzYyBpLmZyZWVyYW0pIHtcbiYjNDM7XHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxuJiM0MztcdFx0XHRyZXR1cm4gMTAwMDA7XG4mIzQzO1x0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQICovXG4mIzQzO1x0XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcbiBcdFx0bnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIGkuZnJlZXJhbTtcbiBcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cbkBAIC0yODQ2LDYgJiM0MzsyODU0LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXG4gXHRtZW1fY2dyb3VwX3B1dChtZW1jZyk7XG4gXG4gXHRzaV9tZW1pbmZvX25vZGUoXHUwMDI2aSwgZ29hbC1cdTAwM2VuaWQpO1xuJiM0MztcdGlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtIFx1MDAzYyB1c2VkX3BhZ2VzKSB7XG4mIzQzO1x0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuJiM0MztcdFx0XHRyZXR1cm4gMTAwMDA7XG4mIzQzO1x0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuIFx0aWYgKGdvYWwtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUClcbiBcdFx0bnVtZXJhdG9yID0gdXNlZF9wYWdlcztcbiBcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCAqL1xuQEAgLTI5OTIsNyAmIzQzOzMwMDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKGJvb2wgYWN0aXZlX3JhdGlvKVxuIFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICYjNDM7IExSVV9BQ1RJVkVfRklMRSk7XG4gXHRpbmFjdGl2ZSA9IGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0lOQUNUSVZFX0FOT04pICYjNDM7XG4gXHRcdGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0lOQUNUSVZFX0ZJTEUpO1xuLVx0dG90YWwgPSBhY3RpdmUgJiM0MzsgaW5hY3RpdmU7XG4mIzQzO1x0dG90YWwgPSBtYXgoYWN0aXZlICYjNDM7IGluYWN0aXZlLCAxKTtcbiBcdGlmIChhY3RpdmVfcmF0aW8pXG4gXHRcdHJldHVybiBtdWx0X2ZyYWMoYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xuIFx0cmV0dXJuIG11bHRfZnJhYyhpbmFjdGl2ZSwgMTAwMDAsIHRvdGFsKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9wYWRkci5jIGIvbW0vZGFtb24vcGFkZHIuY1xuaW5kZXggNWM2YzNhNTk3ZmQwYi4uOWRkZDFlYzgyMDJiNyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3BhZGRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3BhZGRyLmNcbkBAIC0yNjQsNyAmIzQzOzI2NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX3BhZ2VvdXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdFx0ZWxzZVxuIFx0XHRcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2Zm9saW9fbGlzdCk7XG4gcHV0X2ZvbGlvOlxuLVx0XHRhZGRyICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKTtcbiYjNDM7XHRcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSAmIzQzOyBmb2xpb19zaXplKGZvbGlvKTtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiBcdH1cbiBcdGlmIChpbnN0YWxsX3lvdW5nX2ZpbHRlcilcbkBAIC0zMDIsNyAmIzQzOzMwMiw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZV9hY3RpdmF0ZShcbiBcdFx0XHRmb2xpb19kZWFjdGl2YXRlKGZvbGlvKTtcbiBcdFx0YXBwbGllZCAmIzQzOz0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xuIHB1dF9mb2xpbzpcbi1cdFx0YWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7XG4mIzQzO1x0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xuQEAgLTM1MCw3ICYjNDM7MzUwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFx0XHRcdFx0Zm9saW9faXNfZmlsZV9scnUoZm9saW8pKTtcbiBcdFx0bGlzdF9hZGQoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZmb2xpb19saXN0KTtcbiBwdXRfZm9saW86XG4tXHRcdGFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pO1xuJiM0MztcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0fVxuIFx0YXBwbGllZCA9IGRhbW9uX21pZ3JhdGVfcGFnZXMoXHUwMDI2Zm9saW9fbGlzdCwgcy1cdTAwM2V0YXJnZXRfbmlkKTtcbkBAIC0zNzksNyAmIzQzOzM3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX3N0YXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcbiBcdFx0aWYgKCFkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcbiBcdFx0XHQqc3pfZmlsdGVyX3Bhc3NlZCAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbykgLyBhZGRyX3VuaXQ7XG4tXHRcdGFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pO1xuJiM0MztcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0fVxuIFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggMDY0ODQwMGIyZDY1Yi4uYzhjMzJiMmFlMDQwMiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3ZhZGRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmNcbkBAIC02NjksNiAmIzQzOzY2OSw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGZvciAoOyBhZGRyIFx1MDAzYyBuZXh0OyBwdGUgJiM0Mzs9IG5yLCBhZGRyICYjNDM7PSBuciAqIFBBR0VfU0laRSkge1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeDtcbiYjNDM7XG4gXHRcdG5yID0gMTtcbiBcdFx0cHRlbnQgPSBwdGVwX2dldChwdGUpO1xuIFxuQEAgLTY4MSw3ICYjNDM7NjgzLDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVx1MDAzZXZtYSwgYWRkciwgZGVzdHMsXG4gXHRcdFx0XHRtaWdyYXRpb25fbGlzdHMpO1xuLVx0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcbiYjNDM7XHRcdHBhZ2VfaWR4ID0gZm9saW9fcGFnZV9pZHgoZm9saW8sIHB0ZV9wYWdlKHB0ZW50KSk7XG4mIzQzO1x0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4O1xuIFx0fVxuIFx0cHRlX3VubWFwX3VubG9jayhzdGFydF9wdGUsIHB0bCk7XG4gXHRyZXR1cm4gMDtcbkBAIC04MzEsNiAmIzQzOzgzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGZvciAoOyBhZGRyIFx1MDAzYyBuZXh0OyBwdGUgJiM0Mzs9IG5yLCBhZGRyICYjNDM7PSBuciAqIFBBR0VfU0laRSkge1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeDtcbiYjNDM7XG4gXHRcdG5yID0gMTtcbiBcdFx0cHRlbnQgPSBwdGVwX2dldChwdGUpO1xuIFxuQEAgLTg0NCw3ICYjNDM7ODQ5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXG4gXHRcdGlmICghZGFtb3NfdmFfZmlsdGVyX291dChzLCBmb2xpbywgdm1hLCBhZGRyLCBwdGUsIE5VTEwpKVxuIFx0XHRcdCpzel9maWx0ZXJfcGFzc2VkICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKTtcbi1cdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4mIzQzO1x0XHRwYWdlX2lkeCA9IGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBwdGVfcGFnZShwdGVudCkpO1xuJiM0MztcdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDtcbiBcdFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbiBcdH1cbiBcdHB0ZV91bm1hcF91bmxvY2soc3RhcnRfcHRlLCBwdGwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7REFNT05fU1RBVCYjMzQ7LAogICAgJiMzNDtOVU1BJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfYXR0cnMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3JlZ2lvbnMmIzM0OywKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9zX3dhbGsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcpIGxvZ2ljIGFjcm9zcyBjb3JlLCBwYWRkciwgYW5kIHZhZGRyIGNvbXBvbmVudHMuIEl0IGZpeGVzIGhhbmRsaW5nIG9mIHNwbGl0IGZhaWx1cmVzIGluIGRhbW9zX2FwcGx5X3NjaGVtZSwgcHJldmVudHMgZGl2aWRlLWJ5LXplcm8gLyBib3VuZGFyeSBjYWxjdWxhdGlvbiBlcnJvcnMgaW4gREFNT1MgcXVvdGEgbWV0cmljcyAoZGFtb3NfZ2V0X25vZGVfbWVtX2JwLCBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwLCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icCksIGFuZCBmaXhlcyBmb2xpbyBpdGVyYXRpb24gYWRkcmVzcyBhZHZhbmNlcyBpbiBwYWRkciBhbmQgdmFkZHIgc2NoZW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyBvZiBsYXJnZSBmb2xpb3MuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBEQU1PUyBzY2hlbWUgYXBwbGljYXRpb24gbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNzYyMmYzOTFhZDM4MzViOWM5NmVlOWQ1NjA0YTYzNmY4MDFiZGE4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAwMzozMDo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCAzZjg5Y2ZkZjVmMDIyLi4wZGY3ODVlNzI0MzhmIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0yNjA0LDcgJiM0MzsyNjA0LDggQEAgc3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsCiAJCQkJCWMtJmd0O21pbl9yZWdpb25fc3opOwogCQkJaWYgKCFzeikKIAkJCQlnb3RvIHVwZGF0ZV9zdGF0OwotCQkJZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KTsKJiM0MzsJCQlpZiAoZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KSkKJiM0MzsJCQkJZ290byB1cGRhdGVfc3RhdDsKIAkJfQogCQlpZiAoZGFtb3NfY29yZV9maWx0ZXJfb3V0KGMsIHQsIHIsIHMpKQogCQkJcmV0dXJuOwpAQCAtMjgwNiw2ICYjNDM7MjgwNywxMyBAQCBzdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoCiAJfQogCiAJc2lfbWVtaW5mb19ub2RlKCZhbXA7aSwgZ29hbC0mZ3Q7bmlkKTsKJiM0MzsJaWYgKCFpLnRvdGFscmFtIHx8IGkudG90YWxyYW0gJmx0OyBpLmZyZWVyYW0pIHsKJiM0MzsJCWlmIChnb2FsLSZndDttZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCkKJiM0MzsJCQlyZXR1cm4gMTAwMDA7CiYjNDM7CQllbHNlCS8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi8KJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwogCWlmIChnb2FsLSZndDttZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCkKIAkJbnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIGkuZnJlZXJhbTsKIAllbHNlCS8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi8KQEAgLTI4NDYsNiAmIzQzOzI4NTQsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icCgKIAltZW1fY2dyb3VwX3B1dChtZW1jZyk7CiAKIAlzaV9tZW1pbmZvX25vZGUoJmFtcDtpLCBnb2FsLSZndDtuaWQpOwomIzQzOwlpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSAmbHQ7IHVzZWRfcGFnZXMpIHsKJiM0MzsJCWlmIChnb2FsLSZndDttZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKQomIzQzOwkJCXJldHVybiAxMDAwMDsKJiM0MzsJCWVsc2UJLyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CX0KIAlpZiAoZ29hbC0mZ3Q7bWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUCkKIAkJbnVtZXJhdG9yID0gdXNlZF9wYWdlczsKIAllbHNlCS8qIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCAqLwpAQCAtMjk5Miw3ICYjNDM7MzAwNiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnAoYm9vbCBhY3RpdmVfcmF0aW8pCiAJCWdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0FDVElWRV9GSUxFKTsKIAlpbmFjdGl2ZSA9IGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0lOQUNUSVZFX0FOT04pICYjNDM7CiAJCWdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0lOQUNUSVZFX0ZJTEUpOwotCXRvdGFsID0gYWN0aXZlICYjNDM7IGluYWN0aXZlOwomIzQzOwl0b3RhbCA9IG1heChhY3RpdmUgJiM0MzsgaW5hY3RpdmUsIDEpOwogCWlmIChhY3RpdmVfcmF0aW8pCiAJCXJldHVybiBtdWx0X2ZyYWMoYWN0aXZlLCAxMDAwMCwgdG90YWwpOwogCXJldHVybiBtdWx0X2ZyYWMoaW5hY3RpdmUsIDEwMDAwLCB0b3RhbCk7CmRpZmYgLS1naXQgYS9tbS9kYW1vbi9wYWRkci5jIGIvbW0vZGFtb24vcGFkZHIuYwppbmRleCA1YzZjM2E1OTdmZDBiLi45ZGRkMWVjODIwMmI3IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9wYWRkci5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3BhZGRyLmMKQEAgLTI2NCw3ICYjNDM7MjY0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfcGFnZW91dChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCQllbHNlCiAJCQlsaXN0X2FkZCgmYW1wO2ZvbGlvLSZndDtscnUsICZhbXA7Zm9saW9fbGlzdCk7CiBwdXRfZm9saW86Ci0JCWFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pOwomIzQzOwkJYWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pOwogCQlmb2xpb19wdXQoZm9saW8pOwogCX0KIAlpZiAoaW5zdGFsbF95b3VuZ19maWx0ZXIpCkBAIC0zMDIsNyAmIzQzOzMwMiw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZV9hY3RpdmF0ZSgKIAkJCWZvbGlvX2RlYWN0aXZhdGUoZm9saW8pOwogCQlhcHBsaWVkICYjNDM7PSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7CiBwdXRfZm9saW86Ci0JCWFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pOwomIzQzOwkJYWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pOwogCQlmb2xpb19wdXQoZm9saW8pOwogCX0KIAlzLSZndDtsYXN0X2FwcGxpZWQgPSBmb2xpbzsKQEAgLTM1MCw3ICYjNDM7MzUwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCQkJCWZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7CiAJCWxpc3RfYWRkKCZhbXA7Zm9saW8tJmd0O2xydSwgJmFtcDtmb2xpb19saXN0KTsKIHB1dF9mb2xpbzoKLQkJYWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7CiYjNDM7CQlhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CiAJfQogCWFwcGxpZWQgPSBkYW1vbl9taWdyYXRlX3BhZ2VzKCZhbXA7Zm9saW9fbGlzdCwgcy0mZ3Q7dGFyZ2V0X25pZCk7CkBAIC0zNzksNyAmIzQzOzM3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX3N0YXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwKIAogCQlpZiAoIWRhbW9zX3BhX2ZpbHRlcl9vdXQocywgZm9saW8pKQogCQkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pIC8gYWRkcl91bml0OwotCQlhZGRyICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKTsKJiM0MzsJCWFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSAmIzQzOyBmb2xpb19zaXplKGZvbGlvKTsKIAkJZm9saW9fcHV0KGZvbGlvKTsKIAl9CiAJcy0mZ3Q7bGFzdF9hcHBsaWVkID0gZm9saW87CmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuYwppbmRleCAwNjQ4NDAwYjJkNjViLi5jOGMzMmIyYWUwNDAyIDEwMDY0NAotLS0gYS9tbS9kYW1vbi92YWRkci5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmMKQEAgLTY2OSw2ICYjNDM7NjY5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCXJldHVybiAwOwogCiAJZm9yICg7IGFkZHIgJmx0OyBuZXh0OyBwdGUgJiM0Mzs9IG5yLCBhZGRyICYjNDM7PSBuciAqIFBBR0VfU0laRSkgewomIzQzOwkJdW5zaWduZWQgbG9uZyBwYWdlX2lkeDsKJiM0MzsKIAkJbnIgPSAxOwogCQlwdGVudCA9IHB0ZXBfZ2V0KHB0ZSk7CiAKQEAgLTY4MSw3ICYjNDM7NjgzLDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCQljb250aW51ZTsKIAkJZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstJmd0O3ZtYSwgYWRkciwgZGVzdHMsCiAJCQkJbWlncmF0aW9uX2xpc3RzKTsKLQkJbnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7CiYjNDM7CQlwYWdlX2lkeCA9IGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBwdGVfcGFnZShwdGVudCkpOwomIzQzOwkJbnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDsKIAl9CiAJcHRlX3VubWFwX3VubG9jayhzdGFydF9wdGUsIHB0bCk7CiAJcmV0dXJuIDA7CkBAIC04MzEsNiAmIzQzOzgzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQlyZXR1cm4gMDsKIAogCWZvciAoOyBhZGRyICZsdDsgbmV4dDsgcHRlICYjNDM7PSBuciwgYWRkciAmIzQzOz0gbnIgKiBQQUdFX1NJWkUpIHsKJiM0MzsJCXVuc2lnbmVkIGxvbmcgcGFnZV9pZHg7CiYjNDM7CiAJCW5yID0gMTsKIAkJcHRlbnQgPSBwdGVwX2dldChwdGUpOwogCkBAIC04NDQsNyAmIzQzOzg0OSw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCiAJCWlmICghZGFtb3NfdmFfZmlsdGVyX291dChzLCBmb2xpbywgdm1hLCBhZGRyLCBwdGUsIE5VTEwpKQogCQkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pOwotCQluciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTsKJiM0MzsJCXBhZ2VfaWR4ID0gZm9saW9fcGFnZV9pZHgoZm9saW8sIHB0ZV9wYWdlKHB0ZW50KSk7CiYjNDM7CQluciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4OwogCQlzLSZndDtsYXN0X2FwcGxpZWQgPSBmb2xpbzsKIAl9CiAJcHRlX3VubWFwX3VubG9jayhzdGFydF9wdGUsIHB0bCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gVGhlIGNoYW5nZXMgYXJlIGNvbmNlbnRyYXRlZCB3aXRoaW4gdGhlIGBtbS9kYW1vbi9gIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBjb3JlLmNgLCBgcGFkZHIuY2AsIGFuZCBgdmFkZHIuY2AuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IHN0ZXAgaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIERBTU9OLCB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvciwgaW4gdGhlIExpbnV4IGtlcm5lbCBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdXAtdG8tZGF0ZSBvbiBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLCBhc3NvY2lhdGVkIGZpbGVzLCBhbmQgc2VlIHdoYXQgY29kZSBpcyBjYWxsaW5nIERBTU9OIGZ1bmN0aW9ucy4gSSYjMzk7bGwgc2VhcmNoIGZvciByZWxhdGVkIEtjb25maWcgZW50cmllcyB0byBnZXQgdGhlIGNvbnRleHQgcmlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9Mz1tZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbm1tL2RhbW9uL0tjb25maWctNC1cbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cbm1tL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xNC1cbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctMzctXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxubW0vZGFtb24vS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy00Ni1cbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy04Ny1cbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTE1LVxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NDQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGNvcmUuY2AsIGBwYWRkci5jYCwgYW5kIGB2YWRkci5jYCBnZXQgYnVpbHQgd2l0aGluIHRoaXMgREFNT04gc3lzdGVtIGFuZCB3aGF0IHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSBsb29rcyBsaWtlLiBNeSBmaXJzdCBzdG9wIGhhcyB0byBiZSB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdGhlIE1ha2VmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0IGBtbS9kYW1vbi9LY29uZmlnYCBhbmQgYG1tL2RhbW9uL01ha2VmaWxlYC4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBLY29uZmlnIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoZXNlIGZpbGVzIOKAkyBhcmUgdGhlcmUgc3BlY2lmaWMgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBvciBmZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhlbSB0byBiZSBpbmNsdWRlZD8gVGhlbiBJJiMzOTtsbCBoaXQgdGhlIE1ha2VmaWxlIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHJ1bGVzIHRoZW1zZWx2ZXMsIGhvdyB0aGVzZSBzcGVjaWZpYyBzb3VyY2UgZmlsZXMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQuIEZ1cnRoZXJtb3JlLCBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBNYWtlZmlsZSYjMzk7cyBydWxlcyB0aGF0IGhhbmRsZSB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2VzLiBBcmUgdGhlc2UgZmlsZXMgZXhwb3NlZCB0aHJvdWdoIHN5c2ZzLCBkZWJ1Z2ZzLCBvciBwZXJoYXBzIGV2ZW4gc29tZXRoaW5nIGN1c3RvbT8gVW5kZXJzdGFuZGluZyB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UgaXMgY3JpdGljYWwgZm9yIGZpZ3VyaW5nIG91dCBob3cgdXNlcnMgd291bGQgaW50ZXJhY3Qgd2l0aCB0aGUgbW9uaXRvcmluZyBjYXBhYmlsaXRpZXMgb2YgdGhlc2UgZmlsZXMuIEVzc2VudGlhbGx5LCBJIG5lZWQgdGhlIGNvbXBsZXRlIHBpY3R1cmUg4oCTIGZyb20gYnVpbGQgY29uZmlndXJhdGlvbnMgdG8gZXh0ZXJuYWwgYWNjZXNzaWJpbGl0eSDigJMgdG8gZ3Jhc3AgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlaXIgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdG9iai15XHRcdFx0XHQ6PSBjb3JlLm9cbiAgIDQ6XHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cbiAgIDU6XHRvYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbiAgIDY6XHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXHQmIzQzOz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cbiAgIDc6XHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xuICAgODpcdG9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cbiAgIDk6XHRvYmotJChDT05GSUdfREFNT05fU1RBVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uIERlcHRocyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXQgcGxheS4gTGV0JiMzOTtzIG5vdCByZWx5IG9uIGludHVpdGlvbiBoZXJlIOKAkyB0aGF0JiMzOTtzIGEgcmVjaXBlIGZvciBoZWFkYWNoZXMgZG93biB0aGUgcm9hZCEgVGhlIGJlc3QgYXBwcm9hY2ggaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdG8gdGhlIGF1dGhvcml0YXRpdmUgZGVmaW5pdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgdHJ1dGggaXMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZnVsbCBwaWN0dXJlIGxvb2tzIGxpa2UuIE5vIHNob3J0Y3V0cywganVzdCBhIGNsZWFuIHZpZXcgb2YgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdFxuICAgMzpcdG1lbnUgXCYjMzQ7RGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1wmIzM0O1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBEQU1PTlxuICAgNjpcdFx0Ym9vbCBcJiMzNDtEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcJiMzNDtcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxuICAgOTpcdFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcbiAgMTA6XHRcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgU2VlIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L21tL2RhbW9uL2luZGV4Lmh0bWwgZm9yXG4gIDEzOlx0XHQgIG1vcmUgaW5mb3JtYXRpb24uXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxuICAxNjpcdFx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xuICAxNzpcdFx0ZGVwZW5kcyBvbiBEQU1PTlxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBUaGlzIGVuYWJsZXMgYWRkaXRpb25hbCBEQU1PTiBkZWJ1Z2dpbmctcHVycG9zZSBzYW5pdHkgY2hlY2tzIGluXG4gIDIwOlx0XHQgIERBTU9OIGNvZGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGZpbmRpbmcgYnVncywgYnV0IGltcG9zZVxuICAyMTpcdFx0ICBhZGRpdGlvbmFsIG92ZXJoZWFkLiAgVGhpcyBpcyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gYmUgZW5hYmxlZCBvblxuICAyMjpcdFx0ICBvbmx5IGRldmVsb3BtZW50IGFuZCB0ZXN0IHNldHVwcy5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgREFNT05fS1VOSVRfVEVTVFxuICAyNzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDI4Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBLVU5JVD15XG4gIDI5Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cbiAgMzI6XHRcbiAgMzM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDM0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICAzNTpcdFxuICAzNjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBEQU1PTl9WQUREUlxuICAzOTpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA0MTpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDQyOlx0XHRkZWZhdWx0IERBTU9OXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNDU6XHRcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBEQU1PTl9QQUREUlxuICA0ODpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNTA6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA1MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDU0Olx0XHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4gIDU3Olx0XHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA1OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgNjA6XHRcdGhlbHBcbiAgNjE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDY0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA3OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgODA6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzI2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFuZHNjYXBlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcg4oCTIG1vc3QgbGlrZWx5LCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1NL0RBTU9OIHN1YnN5c3RlbS4gSSBzZWUgdGhlIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGRpdmUgaW50byB0aGUgcmVzdCBvZiB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3Mgc29tZSBpbnRlcmVzdGluZyBkZXRhaWwgdGhlcmUgdGhhdCB3YXJyYW50cyBhIGRlZXBlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCBmZWF0dXJlcywgb3IgbWF5YmUgZXZlbiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB3aXRoaW4gREFNT04mIzM5O3MgS2NvbmZpZyBmaWxlLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQ7IGlkZW50aWZ5IHBvdGVudGlhbCBjdXN0b21pemF0aW9uIHBvaW50cyBmb3IgdGhpcyBzdWJzeXN0ZW0uIEdpdmVuIHRoaXMgaXMgYSBLY29uZmlnIGZpbGUsIGl0IGNvbnRhaW5zIHRoZSBidWlsZCBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGFuZCB3aGF0IGxvZ2ljIGdvdmVybnMgdGhlbSB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbmQgYmVoYXZpb3Igb2YgREFNT04uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb21wbGV4IGRlcGVuZGVuY3kgdHJlZSwgd2l0aCBwb3RlbnRpYWwgY3Jvc3MtYXJjaGl0ZWN0dXJhbCBjb25zaWRlcmF0aW9ucy4gSSBhbSBpbnRlcmVzdGVkIHRvIHNlZSB3aGF0IG9wdGlvbnMgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgYXJlYSBvZiBmb2N1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MTpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIEt1bml0IHRlc3Qgc3VpdGUuXG4gIDgyOlx0XG4gIDgzOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxuICA4NDpcdFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cbiAgODU6XHRcbiAgODY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgODc6XHRcbiAgODg6XHRjb25maWcgREFNT05fUkVDTEFJTVxuICA4OTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuICA5MDpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxuICA5MTpcdFx0aGVscFxuICA5MjpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgcmVjbGFtYXRpb24gc3Vic3lzdGVtLiAgSXQgZmluZHMgcGFnZXNcbiAgOTM6XHRcdCAgdGhhdCBub3QgYWNjZXNzZWQgZm9yIGEgbG9uZyB0aW1lIChjb2xkKSB1c2luZyBEQU1PTiBhbmQgcmVjbGFpbVxuICA5NDpcdFx0ICB0aG9zZS5cbiAgOTU6XHRcbiAgOTY6XHRcdCAgVGhpcyBpcyBzdWdnZXN0ZWQgdG8gYmUgdXNlZCBhcyBhIHByb2FjdGl2ZSBhbmQgbGlnaHR3ZWlnaHRcbiAgOTc6XHRcdCAgcmVjbGFtYXRpb24gdW5kZXIgbGlnaHQgbWVtb3J5IHByZXNzdXJlLCB3aGlsZSB0aGUgdHJhZGl0aW9uYWwgcGFnZVxuICA5ODpcdFx0ICBzY2FubmluZy1iYXNlZCByZWNsYW1hdGlvbiBpcyB1c2VkIGZvciBoZWF2eSBwcmVzc3VyZS5cbiAgOTk6XHRcbiAxMDA6XHRjb25maWcgREFNT05fTFJVX1NPUlRcbiAxMDE6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xuIDEwMjpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxuIDEwMzpcdFx0aGVscFxuIDEwNDpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgc3Vic3lzdGVtLiAgSXQgdHJpZXMgdG9cbiAxMDU6XHRcdCAgcHJvdGVjdCBmcmVxdWVudGx5IGFjY2Vzc2VkIChob3QpIHBhZ2VzIHdoaWxlIHJhcmVseSBhY2Nlc3NlZCAoY29sZClcbiAxMDY6XHRcdCAgcGFnZXMgcmVjbGFpbWVkIGZpcnN0IHVuZGVyIG1lbW9yeSBwcmVzc3VyZS5cbiAxMDc6XHRcbiAxMDg6XHRjb25maWcgREFNT05fU1RBVFxuIDEwOTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXCYjMzQ7XG4gMTEwOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gMTExOlx0XHRoZWxwXG4gMTEyOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0aXN0aWNzIHN1YnN5c3RlbS5cbiAxMTM6XHRcdCAgSXQgcnVucyBEQU1PTiBhbmQgZXhwb3NlIGFjY2VzcyBtb25pdG9yaW5nIHJlc3VsdHMgaW4gc2ltcGxlIHN0YXRcbiAxMTQ6XHRcdCAgbWV0cmljcy5cbiAxMTU6XHRcbiAxMTY6XHRjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcbiAxMTc6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuIDExODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9TVEFUXG4gMTE5Olx0XHRkZWZhdWx0IERBTU9OX1NUQVRcbiAxMjA6XHRcdGhlbHBcbiAxMjE6XHRcdCAgV2hldGhlciB0byBlbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0LiAgVXNlcnMgY2FuIGRpc2FibGUgaXQgaW5cbiAxMjI6XHRcdCAgYm9vdCBvciBydW50aW1lIHVzaW5nIGl0cyAmIzM5O2VuYWJsZWQmIzM5OyBwYXJhbWV0ZXIuXG4gMTIzOlx0XG4gMTI0Olx0ZW5kbWVudVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjM2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gZmluZGluZyB0aGUgcGFyZW50IEtjb25maWcgZm9yIERBTU9OLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkZpbmRpbmcgREFNT04mIzM5O3MgUGFyZW50IEtjb25maWcqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQgZm9yIERBTU9OLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgbW0vZGFtb24vS2NvbmZpZ2AgZmlsZSBpcyBhY3R1YWxseSAqaW5jbHVkZWQqLiBJdCYjMzk7cyBub3QgZW5vdWdoIHRvIGp1c3QgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGl0c2VsZjsgSSBuZWVkIHRvIHRyYWNlIGl0cyBpbmNsdXNpb24gcGF0aCB0byBzZWUgd2hlcmUgaXQgc2l0cyB3aXRoaW4gdGhlIGxhcmdlciBjb25maWd1cmF0aW9uIGhpZXJhcmNoeS4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIGRvIHNvbWUgc2VhcmNoaW5nIGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgdGhhdCBicmluZyBgbW0vZGFtb24vS2NvbmZpZ2AgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBUaW1lIHRvIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlLiptbS9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTQ4NT1jb25maWcgTEFaWV9NTVVfTU9ERV9LVU5JVF9URVNUXG4tLVxubW0vS2NvbmZpZy0xNDk2LVxubW0vS2NvbmZpZzoxNDk3OnNvdXJjZSBcJiMzNDttbS9kYW1vbi9LY29uZmlnXCYjMzQ7XG5tbS9LY29uZmlnLTE0OTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MzIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIFBhdGNoIEFuYWx5c2lzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBEQU1PTiBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlcmUgYXJlIG5vIHNpZ25pZmljYW50IGRlcGVuZGVuY3kgaXNzdWVzIGZvciB0aGUgYERBTU9OYCBzdWJzeXN0ZW0gaXRzZWxmIGluIGBtbS9LY29uZmlnYCwgYW5kIGl0IGFwcGVhcnMgSSYjMzk7bSByaWdodDogdGhlcmUgYXJlIG5vbmUgYmV5b25kIHRoZSBiYXNpYyBgTU1VYCwgYFNZU0ZTYCwgZXRjLiB3aGljaCBhcmUgc3RhbmRhcmQuIEdvb2QuCgpOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBjb2RlIGNoYW5nZXMuIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBpbXBhY3Qgb2YgZWFjaCBtb2RpZmljYXRpb24gYW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0LgoKSW4gYG1tL2RhbW9uL2NvcmUuY2AsIHRoZSBkaWZmIGluIGBkYW1vc19hcHBseV9zY2hlbWUoKWAgaXMgbm90aWNlYWJsZS4gVGhlIGFkZGVkIGNvbmRpdGlvbmFsIGluIHRoZSBgZGFtb25fc3BsaXRfcmVnaW9uX2F0KClgIGNhbGw6IGBpZiAoZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KSlgIGluZGljYXRlcyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gY29udHJvbCBmbG93IGJhc2VkIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhhdCBmdW5jdGlvbi4gVGhlIGBnb3RvIHVwZGF0ZV9zdGF0YCBjbGF1c2Ugc3VnZ2VzdHMgdGhlIHNwbGl0JiMzOTtzIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBpcyBub3cgZGlyZWN0bHkgYWZmZWN0aW5nIHN0YXRpc3RpYyB1cGRhdGVzLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyBhcHBlYXJzIHRoZSBmdW5jdGlvbiBgZGFtb3NfY29yZV9maWx0ZXJfb3V0YCBpcyB0aGUgcHJpbWFyeSBmaWx0ZXIgb2YgYGNvcmUuY2AuCgpUaGUgYWRkaXRpb25zIGluIGBkYW1vc19nZXRfbm9kZV9tZW1fYnAoKWAgYW5kIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKClgIHNlZW0gcmVsYXRlZCB0byBtb3JlIHJvYnVzdCBtZW1vcnkgc3RhdGlzdGljcyBjb2xsZWN0aW9uLiBDaGVja2luZyBpZiBgaS50b3RhbHJhbWAgaXMgdmFsaWQgKGAhaS50b3RhbHJhbWApIG9yIGlmIGB0b3RhbHJhbWAgaXMgc21hbGxlciB0aGFuIGBmcmVlcmFtYCBzaG91bGQgcHJldmVudCBkaXZpc2lvbi1ieS16ZXJvIGVycm9ycyBvciB1bnJlYXNvbmFibGUgY2FsY3VsYXRpb25zLiBUaGUgYWRkZWQgY2hlY2tzIGFwcGVhciB0byBiZSBmb3IgdGhlc2UgdW5saWtlbHkgY2FzZXMsIHJldHVybmluZyBhIGZpeGVkIHZhbHVlICgxMDAwMCBvciAwKSBpbiBjYXNlcyB3aGVyZSBtZW1vcnkgaW5mb3JtYXRpb24gaXNuJiMzOTt0IGF2YWlsYWJsZSBvciB3b3VsZCBnaXZlIGFuIG5vbnNlbnNpY2FsIHJlc3VsdC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgYDEwMDAwYCBjb3JyZXNwb25kcyB0byBhIHBlcmNlbnRhZ2UsIGZvciBpbnN0YW5jZSwgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUuCgpUaGUgY2hhbmdlIGluIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icCgpYCB3aGVyZSBgdG90YWwgPSBhY3RpdmUgJiM0MzsgaW5hY3RpdmVgIGlzIG5vdyBgdG90YWwgPSBtYXgoYWN0aXZlICYjNDM7IGluYWN0aXZlLCAxKWAgaXMgYSBzb2xpZCBzYWZldHkgbmV0LiBUaGlzIGd1YXJhbnRlZXMgYSBub24temVybyBkZW5vbWluYXRvciB3aGVuIGNhbGN1bGF0aW5nIHJhdGlvcywgd2hpY2ggaXMgYSBrZXkgaW1wcm92ZW1lbnQuIFRoaXMgbG9va3MgbGlrZSBhIG5lY2Vzc2FyeSBjaGVjayB0byBwcmV2ZW50IGRpdmlkZS1ieS16ZXJvIGVycm9ycy4KCk1vdmluZyB0byBgbW0vZGFtb24vcGFkZHIuY2AsIHRoZSBjaGFuZ2VzIGFyZSBhbGwgaW4gZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2l0aCB0aGUgc2FtZSBsaW5lIGFkZGVkOiBgYWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pO2AuIFRoaXMgYWRkaXRpb24gaXMgaW4gc2V2ZXJhbCBmdW5jdGlvbnMsIGJ1dCB0aGV5IGFsbCBhcHBlYXIgdG8gcGVyZm9ybSB0aGUgc2FtZSBvcGVyYXRpb24uCgpGaW5hbGx5LCBpbiBgbW0vZGFtb24vdmFkZHIuY2AsIHRoZSB1c2Ugb2YgYGZvbGlvX3BhZ2VfaWR4KClgIGFuZCBgZm9saW9fbnJfcGFnZXMoKWAgaXMgYmVpbmcgYWRvcHRlZCB0byBjYWxjdWxhdGUgdGhlIHBhZ2UgaW5kZXggYW5kIG51bWJlciBvZiBwYWdlcy4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlcyBpbnZvbHZlIHVzaW5nIGZvbGlvIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGZvciBwbWQgYW5kIHB0ZSBlbnRyaWVzLCBzdWdnZXN0cyB0aGUgcGF0Y2ggaXMgdXBncmFkaW5nIHRoZSBjb2RlIHRvIHVzZSB0aGUgbW9kZXJuIGZvbGlvIGludGVyZmFjZSBtb3JlIGNvbnNpc3RlbnRseS4KCk5vdywgbGV0JiMzOTtzIHNlZSBob3cgdGhlc2UgdXBkYXRlZCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHVzZXJzcGFjZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3BlcmF0aW9uIGluIHRoZSBgcGFkZHIuY2AsIGB2YWRkci5jYCwgYW5kIGBjb3JlLmNgIGFyZSByZWdpc3RlcmVkLCBhbmQgaG93IHRoZSBmdW5jdGlvbnMgYXJlIGludm9rZWQuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIG92ZXJhbGwgaW1wYWN0IG9uIERBTU9OJiMzOTtzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc19hcHBseV9zY2hlbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTI1NDk9c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNTYyLVxubW0vZGFtb24vY29yZS5jOjI1NjM6c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG5tbS9kYW1vbi9jb3JlLmMtMjU2NC1cdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNjM0PXN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjY2MC1cdFx0aWYgKGRhbW9zX3ZhbGlkX3RhcmdldChjLCByLCBzKSlcbm1tL2RhbW9uL2NvcmUuYzoyNjYxOlx0XHRcdGRhbW9zX2FwcGx5X3NjaGVtZShjLCB0LCByLCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0yNjYyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTc5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBBZGRyZXNzIFRyYW5zbGF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIGhvdyBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgYXJlIG1hbmFnZWQgd2l0aGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmRhbWVudGFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuIExldCYjMzk7cyBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBwYWRkci5jYCBhbmQgYHZhZGRyLmNgIHNvdXJjZSBmaWxlcy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHBoeXNpY2FsIGFkZHJlc3MgKFBBKSBhbmQgdmlydHVhbCBhZGRyZXNzIChWQSkgc3BhY2VzIGFyZSBkZWZpbmVkLCBhbmQgaG93IHRoZSBtYXBwaW5ncyBiZXR3ZWVuIHRoZW0gYXJlIGVzdGFibGlzaGVkIGFuZCBtYWludGFpbmVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCBmb3IgcGFnZSB0YWJsZSBtYW5hZ2VtZW50LCBsaWtlIGhvdyB0aGUgcGFnZSB0YWJsZXMgYXJlIG9yZ2FuaXplZCwgYW5kIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYWRkcmVzcyB0cmFuc2xhdGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1hY3JvcyB1c2VkIHRvIGFjY2VzcyBhbmQgbWFuaXB1bGF0ZSBwYWdlIHRhYmxlIGVudHJpZXMsIGFuZCB3aGF0IGxvY2tpbmcgbWVjaGFuaXNtcyBhcmUgZW1wbG95ZWQgZm9yIGNvbmN1cnJlbnQgYWNjZXNzLiBJIGFsc28gaG9wZSB0byBnYWluIGEgYmV0dGVyIGdyYXNwIG9mIG1lbW9yeSBtYW5hZ2VtZW50LCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIG9wZXJhdGlvbnMuIEkgZXhwZWN0IGEgZ29vZCBsb29rIGF0IGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IG1hcHBpbmdzLCBhcyB3ZWxsIGFzIHRoZSBwb3RlbnRpYWwgZm9yIGlzc3VlcyB3aXRoIGFkZHJlc3MgYWxpYXNpbmcgb3IgZnJhZ21lbnRhdGlvbi4gSG9wZWZ1bGx5LCBgcGFkZHIuY2AgcmV2ZWFscyBob3cgdGhlIHBoeXNpY2FsIG1lbW9yeSBpcyByZXByZXNlbnRlZCwgYW5kIGhvdyB0aGUga2VybmVsIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyBtZW1vcnkgY29udHJvbGxlci4gQW5kIHRoZSBgdmFkZHIuY2Agc2hvdWxkIHNob3cgaG93IHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMgYXJlIHN0cnVjdHVyZWQsIGFuZCBob3cgcHJvY2Vzc2VzIGFyZSBpc29sYXRlZCBmcm9tIGVhY2ggb3RoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBkYW1vbl9vcGVyYXRpb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0zMD1zdGF0aWMgREVGSU5FX01VVEVYKGRhbW9uX29wc19sb2NrKTtcbm1tL2RhbW9uL2NvcmUuYzozMTpzdGF0aWMgc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgZGFtb25fcmVnaXN0ZXJlZF9vcHNbTlJfREFNT05fT1BTXTtcbm1tL2RhbW9uL2NvcmUuYy0zMi1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzY9c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0zNy17XG5tbS9kYW1vbi9jb3JlLmM6Mzg6XHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBlbXB0eV9vcHMgPSB7fTtcbm1tL2RhbW9uL2NvcmUuYy0zOS1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxubW0vZGFtb24vY29yZS5jLTczLXtcbi0tXG5tbS9kYW1vbi9wYWRkci5jPTQzNz1zdGF0aWMgaW50IF9faW5pdCBkYW1vbl9wYV9pbml0Y2FsbCh2b2lkKVxubW0vZGFtb24vcGFkZHIuYy00Mzgte1xubW0vZGFtb24vcGFkZHIuYzo0Mzk6XHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7XG5tbS9kYW1vbi9wYWRkci5jLTQ0MC1cdFx0LmlkID0gREFNT05fT1BTX1BBRERSLFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD00MTg9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9vcHNfcmVnaXN0cmF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDIwLVx0c3RydWN0IGRhbW9uX2N0eCAqYyA9IGRhbW9uX25ld19jdHgoKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo0MjE6XHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7LmlkID0gREFNT05fT1BTX1ZBRERSfSwgYmFrO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQyMi1cdGJvb2wgbmVlZF9jbGVhbnVwID0gZmFsc2U7XG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQ0Ni1cdFx0ZGFtb25fcmVnaXN0ZXJlZF9vcHNbREFNT05fT1BTX1ZBRERSXSA9XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NDQ3Olx0XHRcdChzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyl7fTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00NDgtXHR9XG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQ2My1cdFx0XHRkYW1vbl9yZWdpc3RlcmVkX29wc1tEQU1PTl9PUFNfVkFERFJdID1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo0NjQ6XHRcdFx0XHQoc3RydWN0IGRhbW9uX29wZXJhdGlvbnMpe307XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDY1LVx0fVxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9OTQzPXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3ZhX2luaXRjYWxsKHZvaWQpXG5tbS9kYW1vbi92YWRkci5jLTk0NC17XG5tbS9kYW1vbi92YWRkci5jOjk0NTpcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wcyA9IHtcbm1tL2RhbW9uL3ZhZGRyLmMtOTQ2LVx0XHQuaWQgPSBEQU1PTl9PUFNfVkFERFIsXG4tLVxubW0vZGFtb24vdmFkZHIuYy05NTYtXHQvKiBvcHMgZm9yIGZpeGVkIHZpcnR1YWwgYWRkcmVzcyByYW5nZXMgKi9cbm1tL2RhbW9uL3ZhZGRyLmM6OTU3Olx0c3RydWN0IGRhbW9uX29wZXJhdGlvbnMgb3BzX2Z2YWRkciA9IG9wcztcbm1tL2RhbW9uL3ZhZGRyLmMtOTU4LVx0aW50IGVycjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCBzdWl0YWJsZSBmb3IgYSBmaWVsZCBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBZGRyZXNzIFRyYW5zbGF0aW9uIE9wZXJhdGlvbnMqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mIGhvdyBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzIHNwYWNlcyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhpcyBzeXN0ZW0uIEkmIzM5O2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AuIE15IGZvY3VzIGlzbiYjMzk7dCBuZWNlc3NhcmlseSBvbiB0aGUgaGlnaC1sZXZlbCBhcmNoaXRlY3R1cmUgYXQgdGhpcyBzdGFnZSwgSSBhbHJlYWR5IGhhdmUgYSBmaXJtIGdyYXNwIG9mIHRoYXQuIEluc3RlYWQsIEkmIzM5O20gemVyb2luZyBpbiBvbiB0aGUgKmltcGxlbWVudGF0aW9uIGRldGFpbHMqLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY2FsbGJhY2tzIGZvciB0aGUgYWRkcmVzcyB0cmFuc2xhdGlvbiBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGFuZCB1c2VkLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25zIGhlcmU6IHRoZSBjb3JlIHJvdXRpbmVzIHJlc3BvbnNpYmxlIGZvciBtYXBwaW5nIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHBoeXNpY2FsIGFkZHJlc3NlcyBhbmQgdmljZS12ZXJzYS4gSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBpbnRyaWNhY2llcyBvZiBwYWdlIHRhYmxlIHdhbGtzLCB0aGUgaGFuZGxpbmcgb2YgZGlmZmVyZW50IG1lbW9yeSByZWdpb25zLCBhbmQgYW55IG9wdGltaXphdGlvbnMgdGhleSYjMzk7dmUgaW1wbGVtZW50ZWQuIFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIG1hbmlwdWxhdGVkPyBBcmUgdGhleSB1c2luZyBhbnkgY2xldmVyIHRyaWNrcyBmb3IgcGVyZm9ybWFuY2Ugb3IgbWVtb3J5IGVmZmljaWVuY3k/IFdoYXQgZXJyb3IgY29uZGl0aW9ucyBhcmUgYmVpbmcgaGFuZGxlZD8gQW5kIGhvdyB0aGV5IGFyZSBhbGwgbGlua2VkIHRvZ2V0aGVyLiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgZXhlY3V0aW9uIHBhdGhzLCB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkIGFuZCBkZWFsbG9jYXRlZCBhcyBwYXJ0IG9mIHRoZSB0cmFuc2xhdGlvbiBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL3BhZGRyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQzMDpcdFx0ZGVmYXVsdDpcbiA0MzE6XHRcdFx0YnJlYWs7XG4gNDMyOlx0XHR9XG4gNDMzOlx0XG4gNDM0Olx0XHRyZXR1cm4gREFNT1NfTUFYX1NDT1JFO1xuIDQzNTpcdH1cbiA0MzY6XHRcbiA0Mzc6XHRzdGF0aWMgaW50IF9faW5pdCBkYW1vbl9wYV9pbml0Y2FsbCh2b2lkKVxuIDQzODpcdHtcbiA0Mzk6XHRcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wcyA9IHtcbiA0NDA6XHRcdFx0LmlkID0gREFNT05fT1BTX1BBRERSLFxuIDQ0MTpcdFx0XHQuaW5pdCA9IE5VTEwsXG4gNDQyOlx0XHRcdC51cGRhdGUgPSBOVUxMLFxuIDQ0MzpcdFx0XHQucHJlcGFyZV9hY2Nlc3NfY2hlY2tzID0gZGFtb25fcGFfcHJlcGFyZV9hY2Nlc3NfY2hlY2tzLFxuIDQ0NDpcdFx0XHQuY2hlY2tfYWNjZXNzZXMgPSBkYW1vbl9wYV9jaGVja19hY2Nlc3NlcyxcbiA0NDU6XHRcdFx0LmFwcGx5X3Byb2JlcyA9IGRhbW9uX3BhX2FwcGx5X3Byb2JlcyxcbiA0NDY6XHRcdFx0LnRhcmdldF92YWxpZCA9IE5VTEwsXG4gNDQ3Olx0XHRcdC5hcHBseV9zY2hlbWUgPSBkYW1vbl9wYV9hcHBseV9zY2hlbWUsXG4gNDQ4Olx0XHRcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fcGFfc2NoZW1lX3Njb3JlLFxuIDQ0OTpcdFx0fTtcbiA0NTA6XHRcbiA0NTE6XHRcdHJldHVybiBkYW1vbl9yZWdpc3Rlcl9vcHMoXHUwMDI2b3BzKTtcbiA0NTI6XHR9XG4gNDUzOlx0XG4gNDU0Olx0c3Vic3lzX2luaXRjYWxsKGRhbW9uX3BhX2luaXRjYWxsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4MzMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IGRlZXAgaW4ga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50LgoKKipEaXZpbmcgaW50byBEQU1PTiYjMzk7cyBQaHlzaWNhbCBBZGRyZXNzIEFwcGxpY2F0aW9uKioKClJpZ2h0LCBsZXQgbWUgcHVsbCB1cCB0aGUgY29kZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGhvdyBEQU1PTiwgc3BlY2lmaWNhbGx5IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFwcGxpY2F0aW9uIHNjaGVtZSAoYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWApLCBhY3R1YWxseSB3b3Jrcy4gVGhhdCYjMzk7cyBnb2luZyB0byBiZSBpbiBgbW0vZGFtb24vcGFkZHIuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgd2hlcmUgREFNT04gdGFrZXMgdGhvc2UgY29sbGVjdGVkIG1vbml0b3JpbmcgcmVzdWx0cyBhbmQsIHByZXN1bWFibHksIGludGVyYWN0cyB3aXRoIHRoZSBhY3R1YWwgcGh5c2ljYWwgbWVtb3J5IG1hcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaWRlbnRpZmllcyB0aGUgcGh5c2ljYWwgcGFnZXMgdG8gYmUgbWFuYWdlZCBhbmQgd2hhdCBhY3Rpb25zIGl0JiMzOTtzIHBlcmZvcm1pbmcgb24gdGhlbS4gSSB3YW50IHRvIHNlZSBpZiB0aGUgaW1wbGVtZW50YXRpb24gbG9naWMgbWVldHMgdGhlIGRlc2lnbiwgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgb3B0aW1pemF0aW9uIGlzc3VlcyBvciBjb25jdXJyZW5jeSBjb25jZXJucy4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBoYW5kbGUgbWVtb3J5IG1hcHBpbmcgdXBkYXRlcywgcGFnZSBmYXVsdCBhbmQgb3RoZXIgaW1wb3J0YW50IG9wZXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vcGFkZHIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzkwOlx0XHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gMzkxOlx0XHRcdHN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuIDM5MjpcdHtcbiAzOTM6XHRcdHVuc2lnbmVkIGxvbmcgYXVuaXQgPSBjdHgtXHUwMDNlYWRkcl91bml0O1xuIDM5NDpcdFxuIDM5NTpcdFx0c3dpdGNoIChzY2hlbWUtXHUwMDNlYWN0aW9uKSB7XG4gMzk2Olx0XHRjYXNlIERBTU9TX1BBR0VPVVQ6XG4gMzk3Olx0XHRcdHJldHVybiBkYW1vbl9wYV9wYWdlb3V0KHIsIGF1bml0LCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIDM5ODpcdFx0Y2FzZSBEQU1PU19MUlVfUFJJTzpcbiAzOTk6XHRcdFx0cmV0dXJuIGRhbW9uX3BhX2FjdGl2YXRlX3BhZ2VzKHIsIGF1bml0LCBzY2hlbWUsXG4gNDAwOlx0XHRcdFx0XHRzel9maWx0ZXJfcGFzc2VkKTtcbiA0MDE6XHRcdGNhc2UgREFNT1NfTFJVX0RFUFJJTzpcbiA0MDI6XHRcdFx0cmV0dXJuIGRhbW9uX3BhX2RlYWN0aXZhdGVfcGFnZXMociwgYXVuaXQsIHNjaGVtZSxcbiA0MDM6XHRcdFx0XHRcdHN6X2ZpbHRlcl9wYXNzZWQpO1xuIDQwNDpcdFx0Y2FzZSBEQU1PU19NSUdSQVRFX0hPVDpcbiA0MDU6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxuIDQwNjpcdFx0XHRyZXR1cm4gZGFtb25fcGFfbWlncmF0ZShyLCBhdW5pdCwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcbiA0MDc6XHRcdGNhc2UgREFNT1NfU1RBVDpcbiA0MDg6XHRcdFx0cmV0dXJuIGRhbW9uX3BhX3N0YXQociwgYXVuaXQsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gNDA5Olx0XHRkZWZhdWx0OlxuIDQxMDpcdFx0XHQvKiBEQU1PUyBhY3Rpb25zIHRoYXQgbm90IHlldCBzdXBwb3J0ZWQgYnkgJiMzOTtwYWRkciYjMzk7LiAqL1xuIDQxMTpcdFx0XHRicmVhaztcbiA0MTI6XHRcdH1cbiA0MTM6XHRcdHJldHVybiAwO1xuIDQxNDpcdH1cbiA0MTU6XHRcbiA0MTY6XHRzdGF0aWMgaW50IGRhbW9uX3BhX3NjaGVtZV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjb250ZXh0LFxuIDQxNzpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnNjaGVtZSlcbiA0MTg6XHR7XG4gNDE5Olx0XHRzd2l0Y2ggKHNjaGVtZS1cdTAwM2VhY3Rpb24pIHtcbiA0MjA6XHRcdGNhc2UgREFNT1NfUEFHRU9VVDpcbiA0MjE6XHRcdFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA0MjI6XHRcdGNhc2UgREFNT1NfTFJVX1BSSU86XG4gNDIzOlx0XHRcdHJldHVybiBkYW1vbl9ob3Rfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA0MjQ6XHRcdGNhc2UgREFNT1NfTFJVX0RFUFJJTzpcbiA0MjU6XHRcdFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA0MjY6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XG4gNDI3Olx0XHRcdHJldHVybiBkYW1vbl9ob3Rfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA0Mjg6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxuIDQyOTpcdFx0XHRyZXR1cm4gZGFtb25fY29sZF9zY29yZShjb250ZXh0LCByLCBzY2hlbWUpO1xuIDQzMDpcdFx0ZGVmYXVsdDpcbiA0MzE6XHRcdFx0YnJlYWs7XG4gNDMyOlx0XHR9XG4gNDMzOlx0XG4gNDM0Olx0XHRyZXR1cm4gREFNT1NfTUFYX1NDT1JFO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgyNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBWaXJ0dWFsIEFkZHJlc3MgTGFuZHNjYXBlKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBtbS9kYW1vbi92YWRkci5jYC4gVGhpcyBzdWdnZXN0cyBJJiMzOTttIGFib3V0IHRvIHNjcnV0aW5pemUgdGhlIHZpcnR1YWwgYWRkcmVzcy1yZWxhdGVkIGNvZGUgd2l0aGluIERBTU9OIOKAkyB0aGUgRGF0YSBBY2Nlc3MgTU9OaXRvci4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGxpa2VseSBsb29raW5nIGZvciBzb21ldGhpbmcgc3BlY2lmaWMsIG9yIHBlcmhhcHMgYWltaW5nIGZvciBhIGdlbmVyYWwgdW5kZXJzdGFuZGluZyBvZiBob3cgREFNT04gaW50ZXJhY3RzIHdpdGggdmlydHVhbCBtZW1vcnkgc3BhY2VzLiBJIGNvdWxkIGJlIGludmVzdGlnYXRpbmcgaG93IGl0IGlkZW50aWZpZXMsIHRyYWNrcywgYW5kIHBvdGVudGlhbGx5IG1hbmlwdWxhdGVzIHZpcnR1YWwgYWRkcmVzc2VzIGZvciBpdHMgZGF0YSBtb25pdG9yaW5nIGFuZCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcy4gSSYjMzk7bSBwcm9iYWJseSBpbnRlcmVzdGVkIGluIGRldGFpbHMgYWJvdXQgaXRzIGhhbmRsaW5nIG9mIGFkZHJlc3MgdHJhbnNsYXRpb24sIHBhZ2UgZmF1bHRzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBwYWdlIHRhYmxlIHN0cnVjdHVyZXMuIFBlcmhhcHMgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIHBhdGggYSB2aXJ0dWFsIGFkZHJlc3MgdGFrZXMgdGhyb3VnaCBEQU1PTiYjMzk7cyBtb25pdG9yaW5nIHByb2Nlc3MsIGZyb20gaW5pdGlhbCBhY2Nlc3MgdG8gYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIHRyaWdnZXJlZC4gSSBleHBlY3QgdG8gc2VlIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyBoYW5kbGluZyB0aGluZ3MgbGlrZSBhZGRyZXNzIHJhbmdlcywgcmVnaW9ucywgYW5kIG1heWJlIGV2ZW4gY2FjaGUgbGluZXMsIGFsbCBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50LiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIERBTU9OJiMzOTtzIGFwcHJvYWNoIGlzIGVmZmljaWVudCwgYWNjdXJhdGUsIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgZXhjZXNzaXZlIG92ZXJoZWFkLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9mIERBTU9OJiMzOTtzIHZpcnR1YWwgYWRkcmVzcyBtYW5pcHVsYXRpb24gbGl2ZXMsIHNvIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQga2V5IHRvIGl0cyBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkwMDpcdFx0XHRicmVhaztcbiA5MDE6XHRcdGNhc2UgREFNT1NfSFVHRVBBR0U6XG4gOTAyOlx0XHRcdG1hZHZfYWN0aW9uID0gTUFEVl9IVUdFUEFHRTtcbiA5MDM6XHRcdFx0YnJlYWs7XG4gOTA0Olx0XHRjYXNlIERBTU9TX05PSFVHRVBBR0U6XG4gOTA1Olx0XHRcdG1hZHZfYWN0aW9uID0gTUFEVl9OT0hVR0VQQUdFO1xuIDkwNjpcdFx0XHRicmVhaztcbiA5MDc6XHRcdGNhc2UgREFNT1NfQ09MTEFQU0U6XG4gOTA4Olx0XHRcdG1hZHZfYWN0aW9uID0gTUFEVl9DT0xMQVBTRTtcbiA5MDk6XHRcdFx0YnJlYWs7XG4gOTEwOlx0XHRjYXNlIERBTU9TX01JR1JBVEVfSE9UOlxuIDkxMTpcdFx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XG4gOTEyOlx0XHRcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gOTEzOlx0XHRjYXNlIERBTU9TX1NUQVQ6XG4gOTE0Olx0XHRcdHJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gOTE1Olx0XHRkZWZhdWx0OlxuIDkxNjpcdFx0XHQvKlxuIDkxNzpcdFx0XHQgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICYjMzk7dmFkZHImIzM5Oy5cbiA5MTg6XHRcdFx0ICovXG4gOTE5Olx0XHRcdHJldHVybiAwO1xuIDkyMDpcdFx0fVxuIDkyMTpcdFxuIDkyMjpcdFx0cmV0dXJuIGRhbW9zX21hZHZpc2UodCwgciwgbWFkdl9hY3Rpb24pO1xuIDkyMzpcdH1cbiA5MjQ6XHRcbiA5MjU6XHRzdGF0aWMgaW50IGRhbW9uX3ZhX3NjaGVtZV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjb250ZXh0LFxuIDkyNjpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnNjaGVtZSlcbiA5Mjc6XHR7XG4gOTI4Olx0XG4gOTI5Olx0XHRzd2l0Y2ggKHNjaGVtZS1cdTAwM2VhY3Rpb24pIHtcbiA5MzA6XHRcdGNhc2UgREFNT1NfUEFHRU9VVDpcbiA5MzE6XHRcdFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA5MzI6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XG4gOTMzOlx0XHRcdHJldHVybiBkYW1vbl9ob3Rfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcbiA5MzQ6XHRcdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxuIDkzNTpcdFx0XHRyZXR1cm4gZGFtb25fY29sZF9zY29yZShjb250ZXh0LCByLCBzY2hlbWUpO1xuIDkzNjpcdFx0ZGVmYXVsdDpcbiA5Mzc6XHRcdFx0YnJlYWs7XG4gOTM4Olx0XHR9XG4gOTM5Olx0XG4gOTQwOlx0XHRyZXR1cm4gREFNT1NfTUFYX1NDT1JFO1xuIDk0MTpcdH1cbiA5NDI6XHRcbiA5NDM6XHRzdGF0aWMgaW50IF9faW5pdCBkYW1vbl92YV9pbml0Y2FsbCh2b2lkKVxuIDk0NDpcdHtcbiA5NDU6XHRcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wcyA9IHtcbiA5NDY6XHRcdFx0LmlkID0gREFNT05fT1BTX1ZBRERSLFxuIDk0NzpcdFx0XHQuaW5pdCA9IGRhbW9uX3ZhX2luaXQsXG4gOTQ4Olx0XHRcdC51cGRhdGUgPSBkYW1vbl92YV91cGRhdGUsXG4gOTQ5Olx0XHRcdC5wcmVwYXJlX2FjY2Vzc19jaGVja3MgPSBkYW1vbl92YV9wcmVwYXJlX2FjY2Vzc19jaGVja3MsXG4gOTUwOlx0XHRcdC5jaGVja19hY2Nlc3NlcyA9IGRhbW9uX3ZhX2NoZWNrX2FjY2Vzc2VzLFxuIDk1MTpcdFx0XHQudGFyZ2V0X3ZhbGlkID0gZGFtb25fdmFfdGFyZ2V0X3ZhbGlkLFxuIDk1MjpcdFx0XHQuY2xlYW51cF90YXJnZXQgPSBkYW1vbl92YV9jbGVhbnVwX3RhcmdldCxcbiA5NTM6XHRcdFx0LmFwcGx5X3NjaGVtZSA9IGRhbW9uX3ZhX2FwcGx5X3NjaGVtZSxcbiA5NTQ6XHRcdFx0LmdldF9zY2hlbWVfc2NvcmUgPSBkYW1vbl92YV9zY2hlbWVfc2NvcmUsXG4gOTU1Olx0XHR9O1xuIDk1NjpcdFx0Lyogb3BzIGZvciBmaXhlZCB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2VzICovXG4gOTU3Olx0XHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHNfZnZhZGRyID0gb3BzO1xuIDk1ODpcdFx0aW50IGVycjtcbiA5NTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQwNTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdW5kZXJzdGFuZGluZyBob3cgREFNT1Mgc2NoZW1lcyBhcmUgaW5pdGlhdGVkIGZyb20gdGhlIHVzZXIgc3BhY2UgdmlhIHN5c2ZzLCBhcyBpZiBpdCYjMzk7cyBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIFVzZXItU3BhY2UgSW50ZXJhY3Rpb24gd2l0aCBEQU1PTiBTY2hlbWVzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gaG93IHVzZXJzcGFjZSBwcm9ncmFtcyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBEQU1PTiBzY2hlbWVzLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgbGlmZWN5Y2xlIG9mIGEgREFNT1Mgc2NoZW1lIOKAkyBmcm9tIGl0cyBjb25maWd1cmF0aW9uLCBhbGwgdGhlIHdheSB0byBpdHMgaW5pdGlhdGlvbiBhbmQgc3Vic2VxdWVudCBydW5uaW5nIHN0YXRlLiBUaGUga2V5IGhlcmUgaXMgdG8gc2VlIHdoYXQgc3lzZnMgZW50cmllcyBhcmUgaW52b2x2ZWQuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyBhbmQgZmlndXJlIG91dCB3aGljaCBzeXNmcyBhdHRyaWJ1dGVzIGFyZSB3cml0dGVuIHRvLCBhbmQgd2hhdCB0cmlnZ2VycyB0aGUgYWN0dWFsIGxhdW5jaCBvciBzdGFydCBvZiB0aGUgREFNT1Mgc2NoZW1lLiBXaGVyZSBhcmUgdGhlIHBhcmFtZXRlcnMgcGFzc2VkPyBIb3cgYXJlIHRoZSBtb25pdG9yaW5nIHRhcmdldHMgZGVmaW5lZCwgYW5kIGFyZSB0aG9zZSBkeW5hbWljPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNwZWNpZmljIHN5c2ZzIGZpbGVzIHJlbGF0ZWQgdG8gc2NoZW1lIGNyZWF0aW9uLCBlbmFibGluZywgYW5kIHBvdGVudGlhbGx5IGZvciBjb250cm9sbGluZyB2YXJpb3VzIG9wZXJhdGlvbmFsIGFzcGVjdHMuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHNvdXJjZSBjb2RlIHRvIHRyYWNlIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3N5c2ZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTA5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA6REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTEtXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxNjpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTctXHRcdHVuc2lnbmVkIGxvbmcgbWluLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE5LXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjIwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGttYWxsb2Nfb2JqKCpyYW5nZSk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0yMS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz0zMT1zdGF0aWMgc3NpemVfdCBtaW5fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTMzLXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjM0Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MzU6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTM2LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTQwPXN0YXRpYyBzc2l6ZV90IG1pbl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTQyLXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjQzOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NDQ6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTQ1LVx0dW5zaWduZWQgbG9uZyBtaW47XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9NTY9c3RhdGljIHNzaXplX3QgbWF4X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy01OC17XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo1OTpcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqcmFuZ2UgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjYwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy02MS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy02Ny17XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo2ODpcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqcmFuZ2UgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjY5Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy03MC1cdHVuc2lnbmVkIGxvbmcgbWF4O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODE6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODIte1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODM6XHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKSk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04NC19XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04NS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjg2OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfdWxfcmFuZ2VfbWluX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODctXHRcdF9fQVRUUl9SV19NT0RFKG1pbiwgMDYwMCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04OC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjg5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfdWxfcmFuZ2VfbWF4X2F0dHIgPVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTAtXHRcdF9fQVRUUl9SV19NT0RFKG1heCwgMDYwMCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05MS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjkyOnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hdHRyc1tdID0ge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTM6XHRcdTAwMjZkYW1vbl9zeXNmc191bF9yYW5nZV9taW5fYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTQ6XHRcdTAwMjZkYW1vbl9zeXNmc191bF9yYW5nZV9tYXhfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTUtXHROVUxMLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTYtfTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk3OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfdWxfcmFuZ2UpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTgtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo5OTpjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlID0ge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTAwOlx0LnJlbGVhc2UgPSBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTAxLVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTAyOlx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfZ3JvdXBzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTAzLX07XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTA1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA2OnN0YXRpYyBib29sIGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTA3LVx0XHRjaGFyICptZW1jZ19wYXRoX2J1ZiwgY2hhciAqcGF0aClcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMTc6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZClcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExOC17XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTM0LVx0XHRcdGNvbnRpbnVlO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTM1Olx0XHRpZiAoZGFtb25fc3lzZnNfbWVtY2dfcGF0aF9lcShtZW1jZywgcGF0aCwgbWVtY2dfcGF0aCkpIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEzNi1cdFx0XHQqaWQgPSBtZW1fY2dyb3VwX2lkKG1lbWNnKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC04LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6OTpleHRlcm4gc3RydWN0IG11dGV4IGRhbW9uX3N5c2ZzX2xvY2s7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjExOnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTgtXHRcdHVuc2lnbmVkIGxvbmcgbWluLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTktXHRcdHVuc2lnbmVkIGxvbmcgbWF4KTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjIwOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iaik7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yMS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjIyOmV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjMtXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyODpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yOS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozMDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKipzY2hlbWVzX2Fycjtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMxLVx0aW50IG5yO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMzLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcyk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM3OmV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZXNfa3R5cGU7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zOC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM5OmludCBkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0MDpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDEtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Mjp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfdXBkYXRlX3N0YXRzKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDM6XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDQtXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQ2OnZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQ3LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MTppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTI6XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTQ6aW50IGRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01NS1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD01Nz12b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTg6XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTktXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTYwOnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjEtXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnJlZ2lvbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2Mi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTYzOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnN5c2ZzX3JlZ2lvbiA9IGttYWxsb2Nfb2JqKCpzeXNmc19yZWdpb24pO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2NC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTc2PXN0YXRpYyBpbnQgZGFtb3Nfc3lzZnNfcmVnaW9uX2FkZF9kaXJzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NzpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzgtXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjAyPXN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3JlZ2lvbl9ybV9kaXJzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIwMzpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbilcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDQte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMDk9c3RhdGljIHNzaXplX3Qgc3RhcnRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIxMjpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTM6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIxNC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjE4PXN0YXRpYyBzc2l6ZV90IGVuZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyMC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIxOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIyMjpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIzLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMjc9c3RhdGljIHNzaXplX3QgbnJfYWNjZXNzZXNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI5LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMzA6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjMxOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMzItXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIzNj1zdGF0aWMgc3NpemVfdCBhZ2Vfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMzgte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzOTpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDA6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI0MS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjQ1PXN0YXRpYyBzc2l6ZV90IHN6X2ZpbHRlcl9wYXNzZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjQ3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDg6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjQ5Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTAtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI1My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTQ6c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI1NS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjU2Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI1NzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjU4LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjYyOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9zdGFydF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjMtXHRcdF9fQVRUUl9ST19NT0RFKHN0YXJ0LCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9lbmRfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY2LVx0XHRfX0FUVFJfUk9fTU9ERShlbmQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX25yX2FjY2Vzc2VzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2OS1cdFx0X19BVFRSX1JPX01PREUobnJfYWNjZXNzZXMsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3MC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzE6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FnZV9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzItXHRcdF9fQVRUUl9ST19NT0RFKGFnZSwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjczLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3NDpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3pfZmlsdGVyX3Bhc3NlZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzUtXHRcdF9fQVRUUl9ST19NT0RFKHN6X2ZpbHRlcl9wYXNzZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzc6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzg6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzk6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2VuZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjgwOlx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9ucl9hY2Nlc3Nlc19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjgxOlx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hZ2VfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MjpcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3pfZmlsdGVyX3Bhc3NlZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjgzLVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODQtfTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODU6QVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fa3R5cGUgPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg4Olx0LnJlbGVhc2UgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjg5LVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5MDpcdC5kZWZhdWx0X2dyb3VwcyA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fZ3JvdXBzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5MS19O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjk3OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk4LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzAzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNDpzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDU6ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDYte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNzpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqcmVnaW9ucyA9IGttYWxsb2Nfb2JqKCpyZWdpb25zKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTMxOT1zdGF0aWMgc3NpemVfdCB0b3RhbF9ieXRlc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMjEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyMjpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqcmVnaW9ucyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyMzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMyNC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzI3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyODpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19ybV9kaXJzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyOTpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzMxOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnIsICpuZXh0O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0MjpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM0My17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQ0Olx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucywga29iaikpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM0NS19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQ2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0NzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3RvdGFsX2J5dGVzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM0OC1cdFx0X19BVFRSX1JPX01PREUodG90YWxfYnl0ZXMsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM0OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTA6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX2F0dHJzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzUxOlx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfdG90YWxfYnl0ZXNfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1Mi1cdE5VTEwsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzUzLX07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU0OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTY6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfa3R5cGUgPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU3Olx0LnJlbGVhc2UgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1OC1cdC5zeXNmc19vcHMgPSBcdTAwMjZrb2JqX3N5c2ZzX29wcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTk6XHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19ncm91cHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzYwLX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNjY6c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNjctXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNzctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzc4OnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKmRhbW9uX3N5c2ZzX3N0YXRzX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzc5LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozODA6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODEtfVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zODM9c3RhdGljIHNzaXplX3QgbnJfdHJpZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NjpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozODc6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTM5Mj1zdGF0aWMgc3NpemVfdCBzel90cmllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM5NC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzk1Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM5NjpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM5Ny1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDAxPXN0YXRpYyBzc2l6ZV90IG5yX2FwcGxpZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDAzLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MDQ6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA1Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDA2LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00MTA9c3RhdGljIHNzaXplX3Qgc3pfYXBwbGllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MTIte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxMzpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MTQ6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MTUtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQxOT1zdGF0aWMgc3NpemVfdCBzel9vcHNfZmlsdGVyX3Bhc3NlZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MjEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQyMjpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MjM6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MjQtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQyOD1zdGF0aWMgc3NpemVfdCBxdF9leGNlZWRzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzMC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDMxOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMjpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzMy1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDM3PXN0YXRpYyBzc2l6ZV90IG5yX3NuYXBzaG90c19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00Mzkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NDE6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDItXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQ0Nj1zdGF0aWMgc3NpemVfdCBtYXhfbnJfc25hcHNob3RzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ0OC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDQ5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1MDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ1MS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDU1PXN0YXRpYyBzc2l6ZV90IG1heF9ucl9zbmFwc2hvdHNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ1Ny17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDU4Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1OTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ2MC1cdHVuc2lnbmVkIGxvbmcgbWF4X25yX3NuYXBzaG90cywgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZtYXhfbnJfc25hcHNob3RzKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDY3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ2ODpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zdGF0c19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ2OS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDcwOlx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaikpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3MS19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDcyLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3MzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3RyaWVkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3NC1cdFx0X19BVFRSX1JPX01PREUobnJfdHJpZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NzY6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19zel90cmllZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzctXHRcdF9fQVRUUl9ST19NT0RFKHN6X3RyaWVkLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDc5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbnJfYXBwbGllZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00ODAtXHRcdF9fQVRUUl9ST19NT0RFKG5yX2FwcGxpZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4MS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19zel9hcHBsaWVkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4My1cdFx0X19BVFRSX1JPX01PREUoc3pfYXBwbGllZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg0LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ4NTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X29wc19maWx0ZXJfcGFzc2VkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ni1cdFx0X19BVFRSX1JPX01PREUoc3pfb3BzX2ZpbHRlcl9wYXNzZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19xdF9leGNlZWRzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4OS1cdFx0X19BVFRSX1JPX01PREUocXRfZXhjZWVkcywgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDkwLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3NuYXBzaG90c19hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTItXHRcdF9fQVRUUl9ST19NT0RFKG5yX3NuYXBzaG90cywgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDkzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5NDpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX21heF9ucl9zbmFwc2hvdHNfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDk1LVx0XHRfX0FUVFJfUldfTU9ERShtYXhfbnJfc25hcHNob3RzLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk3OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zdGF0c19hdHRyc1tdID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5ODpcdFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX25yX3RyaWVkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0OTk6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19zel90cmllZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAwOlx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfbnJfYXBwbGllZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAxOlx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfc3pfYXBwbGllZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAyOlx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfc3pfb3BzX2ZpbHRlcl9wYXNzZWRfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwMzpcdFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3F0X2V4Y2VlZHNfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwNDpcdFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX25yX3NuYXBzaG90c19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTA1Olx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfbWF4X25yX3NuYXBzaG90c19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA2LVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDctfTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDg6QVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc19zdGF0cyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMDpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zdGF0c19rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTE6XHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3N0YXRzX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTEyLVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMzpcdC5kZWZhdWx0X2dyb3VwcyA9IGRhbW9uX3N5c2ZzX3N0YXRzX2dyb3Vwcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MTQtfTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUyOC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0MC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDE6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0Mi1cdFx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGxheWVyKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0My17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ0Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlcjtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NDUtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ2Olx0ZmlsdGVyID0ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0Ny1cdGlmIChmaWx0ZXIpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTU5Mz1zdGF0aWMgc3NpemVfdCB0eXBlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU5NS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTk2Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU5NzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTk4LVx0aW50IGk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTYyNz1zdGF0aWMgc3NpemVfdCB0eXBlX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02Mjkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzMDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MzE6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYzMi1cdHNzaXplX3QgcmV0ID0gLUVJTlZBTDtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjUyPXN0YXRpYyBzc2l6ZV90IG1hdGNoaW5nX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY1NC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjU1Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY1NjpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjU3LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NjE9c3RhdGljIHNzaXplX3QgbWF0Y2hpbmdfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2My17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjY0Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjY2LVx0Ym9vbCBtYXRjaGluZztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Njc2PXN0YXRpYyBzc2l6ZV90IGFsbG93X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY3OC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njc5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY4MDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjgxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02ODU9c3RhdGljIHNzaXplX3QgYWxsb3dfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY4Ny17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg4Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY4OTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjkwLVx0Ym9vbCBhbGxvdztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzAwPXN0YXRpYyBzc2l6ZV90IG1lbWNnX3BhdGhfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzAyLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDM6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzA0Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDUtXHRpbnQgbGVuO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcwNi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDc6XHRpZiAoIW11dGV4X3RyeWxvY2soXHUwMDI2ZGFtb25fc3lzZnNfbG9jaykpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA4LVx0XHRyZXR1cm4gLUVCVVNZO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MTAtXHRcdFx0ZmlsdGVyLVx1MDAzZW1lbWNnX3BhdGggPyBmaWx0ZXItXHUwMDNlbWVtY2dfcGF0aCA6IFwmIzM0O1wmIzM0Oyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzExOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRhbW9uX3N5c2ZzX2xvY2spO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxMi1cdHJldHVybiBsZW47XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTcxNT1zdGF0aWMgc3NpemVfdCBtZW1jZ19wYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MTcte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxODpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MTk6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyMC1cdGNoYXIgKnBhdGggPSBrbWFsbG9jX2FycmF5KHNpemVfYWRkKGNvdW50LCAxKSwgc2l6ZW9mKCpwYXRoKSxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzI2LVx0c3Ryc2NweShwYXRoLCBidWYsIGNvdW50ICYjNDM7IDEpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcyNzpcdGlmICghbXV0ZXhfdHJ5bG9jayhcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSkge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyOC1cdFx0a2ZyZWUocGF0aCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTczMi1cdGZpbHRlci1cdTAwM2VtZW1jZ19wYXRoID0gcGF0aDtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MzM6XHRtdXRleF91bmxvY2soXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzM0LVx0cmV0dXJuIGNvdW50O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03Mzc9c3RhdGljIHNzaXplX3QgYWRkcl9zdGFydF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03Mzkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc0MDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NDE6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc0Mi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzQ2PXN0YXRpYyBzc2l6ZV90IGFkZHJfc3RhcnRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc0OC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQ5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc1MDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzUxLVx0aW50IGVyciA9IGtzdHJ0b3VsKGJ1ZiwgMCwgXHUwMDI2ZmlsdGVyLVx1MDAzZWFkZHJfcmFuZ2Uuc3RhcnQpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03NTY9c3RhdGljIHNzaXplX3QgYWRkcl9lbmRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzU4LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NTk6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzYwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NjEtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTc2NT1zdGF0aWMgc3NpemVfdCBhZGRyX2VuZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzY3LXtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE2NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEZhaWx1cmUgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0IGhhbmRsZXMgZmFpbHVyZXMgaW4gYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAgd2l0aGluIHRoZSBgZGFtb3NfYXBwbHlfc2NoZW1lYCBmdW5jdGlvbi4gSSBzZWUgdGhlIGtleSBjaGFuZ2UgaXMgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyNjAwLiBUaGUgb3JpZ2luYWwgY29kZSB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgLCBidXQgbm93IHRoZXJlJiMzOTtzIGFuIGBpZmAgc3RhdGVtZW50IGNoZWNraW5nIGl0cyByZXR1cm4gdmFsdWUuIEEgbm9uLXplcm8gcmV0dXJuIHZhbHVlLCBpbmRpY2F0aW5nIGZhaWx1cmUsIHdpbGwgbm93IHRyaWdnZXIgYSBgZ290byB1cGRhdGVfc3RhdGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2guIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZmFpbHVyZSBwYXRoLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGZhaWx1cmUgc2NlbmFyaW9zIG9mIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGFuZCBob3cgYXJlIHRoZXkgYmVpbmcgYWRkcmVzc2VkPyBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIHN0YXRpc3RpY3MgdXBkYXRlcyBhbmQgb3ZlcmFsbCBzY2hlbWUgYXBwbGljYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBtb2RpZmljYXRpb25zIHRoYXQgdGhpcyBpcyBsaW5rZWQgdG8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjU5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNTkwOlx0XHRcdH1cbjI1OTE6XHRcdFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHRpdGVyLCBjKSB7XG4yNTkyOlx0XHRcdFx0aWYgKHRpdGVyID09IHQpXG4yNTkzOlx0XHRcdFx0XHRicmVhaztcbjI1OTQ6XHRcdFx0XHR0aWR4JiM0MzsmIzQzOztcbjI1OTU6XHRcdFx0fVxuMjU5NjpcdFx0XHRucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX212c3VtKHIsIGMpO1xuMjU5NzpcdFx0XHRkb190cmFjZSA9IHRydWU7XG4yNTk4Olx0XHR9XG4yNTk5Olx0XG4yNjAwOlx0XHRpZiAoYy1cdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XG4yNjAxOlx0XHRcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFx1MDAyNlx1MDAyNlxuMjYwMjpcdFx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOyBzeiBcdTAwM2UgcXVvdGEtXHUwMDNlZXN6KSB7XG4yNjAzOlx0XHRcdFx0c3ogPSBBTElHTl9ET1dOKHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3osXG4yNjA0Olx0XHRcdFx0XHRcdGMtXHUwMDNlbWluX3JlZ2lvbl9zeik7XG4yNjA1Olx0XHRcdFx0aWYgKCFzeilcbjI2MDY6XHRcdFx0XHRcdGdvdG8gdXBkYXRlX3N0YXQ7XG4yNjA3Olx0XHRcdFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXG4yNjA4Olx0XHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuMjYwOTpcdFx0XHR9XG4yNjEwOlx0XHRcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXG4yNjExOlx0XHRcdFx0cmV0dXJuO1xuMjYxMjpcdFx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2YmVnaW4pO1xuMjYxMzpcdFx0XHR0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHkoY2lkeCwgc2lkeCwgdGlkeCwgciwgbnJfYWNjZXNzZXMsXG4yNjE0Olx0XHRcdFx0XHRkYW1vbl9ucl9yZWdpb25zKHQpLCBkb190cmFjZSk7XG4yNjE1Olx0XHRcdHN6X2FwcGxpZWQgPSBjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcbjI2MTY6XHRcdFx0XHRcdFx1MDAyNnN6X29wc19maWx0ZXJfcGFzc2VkKTtcbjI2MTc6XHRcdFx0ZGFtb3Nfd2Fsa19jYWxsX3dhbGsoYywgdCwgciwgcywgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xuMjYxODpcdFx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2ZW5kKTtcbjI2MTk6XHRcdFx0cXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucyAmIzQzOz0gdGltZXNwZWM2NF90b19ucyhcdTAwMjZlbmQpIC1cbjI2MjA6XHRcdFx0XHR0aW1lc3BlYzY0X3RvX25zKFx1MDAyNmJlZ2luKTtcbjI2MjE6XHRcdFx0ZGFtb3NfY2hhcmdlX3F1b3RhKHF1b3RhLCBzeiwgc3pfYXBwbGllZCk7XG4yNjIyOlx0XHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKSB7XG4yNjIzOlx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gdDtcbjI2MjQ6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG4yNjI1Olx0XHRcdH1cbjI2MjY6XHRcdH1cbjI2Mjc6XHRcdGlmIChzLVx1MDAzZWFjdGlvbiAhPSBEQU1PU19TVEFUKVxuMjYyODpcdFx0XHRyLVx1MDAzZWFnZSA9IDA7XG4yNjI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjgxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIFJlY2VudCBEQU1PTiBDb3JlIE1vZGlmaWNhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgYmFjayBpbnRvIHRoZSByZWNlbnQgY2hhbmdlcyB3aXRoaW4gdGhlIERBTU9OIGNvcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcsIHNvIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiBgbW0vZGFtb24vY29yZS5jYCB0aGF0IHdlcmUgdG91Y2hlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCByZWZyZXNoIG15IG1lbW9yeSBvbiBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBhbmQgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYC4gS25vd2luZyB0aGUgY29udGV4dCBhbmQgaW50ZW50IG9mIHRoZSBtb2RpZmljYXRpb25zIHRoZXJlIGlzIGNydWNpYWwuCgpUaGVuLCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBsb2dpYyBzdXJyb3VuZGluZyB0aG9zZSBmdW5jdGlvbnMgaW4gdGhlIGJyb2FkZXIgY29udGV4dCwgSSB0aGluayBJJiMzOTtsbCByZS1yZWFkIHRoZSBjb2RlIGFyb3VuZCBsaW5lcyAyODAwIHRvIDMwMjAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIEhvcGVmdWxseSwgdGhhdCB3aWxsIHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBhbmQgaG93IHRoZSBwaWVjZXMgZml0IHRvZ2V0aGVyLiBJIHdhbnQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgaXMgY29tcGxldGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyODAwOlx0XHRfX2tlcm5lbF91bG9uZ190IG51bWVyYXRvcjtcbjI4MDE6XHRcbjI4MDI6XHRcdGlmIChpbnZhbGlkX21lbV9ub2RlKGdvYWwtXHUwMDNlbmlkKSkge1xuMjgwMzpcdFx0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcbjI4MDQ6XHRcdFx0XHRyZXR1cm4gMDtcbjI4MDU6XHRcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqL1xuMjgwNjpcdFx0XHRcdHJldHVybiAxMDAwMDtcbjI4MDc6XHRcdH1cbjI4MDg6XHRcbjI4MDk6XHRcdHNpX21lbWluZm9fbm9kZShcdTAwMjZpLCBnb2FsLVx1MDAzZW5pZCk7XG4yODEwOlx0XHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcdTAwM2MgaS5mcmVlcmFtKSB7XG4yODExOlx0XHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxuMjgxMjpcdFx0XHRcdHJldHVybiAxMDAwMDtcbjI4MTM6XHRcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqL1xuMjgxNDpcdFx0XHRcdHJldHVybiAwO1xuMjgxNTpcdFx0fVxuMjgxNjpcdFxuMjgxNzpcdFx0aWYgKGdvYWwtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlApXG4yODE4Olx0XHRcdG51bWVyYXRvciA9IGkudG90YWxyYW0gLSBpLmZyZWVyYW07XG4yODE5Olx0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQICovXG4yODIwOlx0XHRcdG51bWVyYXRvciA9IGkuZnJlZXJhbTtcbjI4MjE6XHRcdHJldHVybiBtdWx0X2ZyYWMobnVtZXJhdG9yLCAxMDAwMCwgaS50b3RhbHJhbSk7XG4yODIyOlx0fVxuMjgyMzpcdFxuMjgyNDpcdHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXG4yODI1Olx0XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxuMjgyNjpcdHtcbjI4Mjc6XHRcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcbjI4Mjg6XHRcdHN0cnVjdCBscnV2ZWMgKmxydXZlYztcbjI4Mjk6XHRcdHVuc2lnbmVkIGxvbmcgdXNlZF9wYWdlcywgbnVtZXJhdG9yO1xuMjgzMDpcdFx0c3RydWN0IHN5c2luZm8gaTtcbjI4MzE6XHRcbjI4MzI6XHRcdGlmIChpbnZhbGlkX21lbV9ub2RlKGdvYWwtXHUwMDNlbmlkKSkge1xuMjgzMzpcdFx0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuMjgzNDpcdFx0XHRcdHJldHVybiAwO1xuMjgzNTpcdFx0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cbjI4MzY6XHRcdFx0XHRyZXR1cm4gMTAwMDA7XG4yODM3Olx0XHR9XG4yODM4Olx0XG4yODM5Olx0XHRtZW1jZyA9IG1lbV9jZ3JvdXBfZ2V0X2Zyb21faWQoZ29hbC1cdTAwM2VtZW1jZ19pZCk7XG4yODQwOlx0XHRpZiAoIW1lbWNnKSB7XG4yODQxOlx0XHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXG4yODQyOlx0XHRcdFx0cmV0dXJuIDA7XG4yODQzOlx0XHRcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCAqL1xuMjg0NDpcdFx0XHRcdHJldHVybiAxMDAwMDtcbjI4NDU6XHRcdH1cbjI4NDY6XHRcbjI4NDc6XHRcdG1lbV9jZ3JvdXBfZmx1c2hfc3RhdHMobWVtY2cpO1xuMjg0ODpcdFx0bHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIE5PREVfREFUQShnb2FsLVx1MDAzZW5pZCkpO1xuMjg0OTpcdFx0dXNlZF9wYWdlcyA9IGxydXZlY19wYWdlX3N0YXRlKGxydXZlYywgTlJfQUNUSVZFX0FOT04pO1xuMjg1MDpcdFx0dXNlZF9wYWdlcyAmIzQzOz0gbHJ1dmVjX3BhZ2Vfc3RhdGUobHJ1dmVjLCBOUl9JTkFDVElWRV9BTk9OKTtcbjI4NTE6XHRcdHVzZWRfcGFnZXMgJiM0Mzs9IGxydXZlY19wYWdlX3N0YXRlKGxydXZlYywgTlJfQUNUSVZFX0ZJTEUpO1xuMjg1MjpcdFx0dXNlZF9wYWdlcyAmIzQzOz0gbHJ1dmVjX3BhZ2Vfc3RhdGUobHJ1dmVjLCBOUl9JTkFDVElWRV9GSUxFKTtcbjI4NTM6XHRcbjI4NTQ6XHRcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcbjI4NTU6XHRcbjI4NTY6XHRcdHNpX21lbWluZm9fbm9kZShcdTAwMjZpLCBnb2FsLVx1MDAzZW5pZCk7XG4yODU3Olx0XHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcdTAwM2MgdXNlZF9wYWdlcykge1xuMjg1ODpcdFx0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuMjg1OTpcdFx0XHRcdHJldHVybiAxMDAwMDtcbjI4NjA6XHRcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXG4yODYxOlx0XHRcdFx0cmV0dXJuIDA7XG4yODYyOlx0XHR9XG4yODYzOlx0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuMjg2NDpcdFx0XHRudW1lcmF0b3IgPSB1c2VkX3BhZ2VzO1xuMjg2NTpcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXG4yODY2Olx0XHRcdG51bWVyYXRvciA9IGkudG90YWxyYW0gLSB1c2VkX3BhZ2VzO1xuMjg2NzpcdFx0cmV0dXJuIG11bHRfZnJhYyhudW1lcmF0b3IsIDEwMDAwLCBpLnRvdGFscmFtKTtcbjI4Njg6XHR9XG4yODY5Olx0XG4yODcwOlx0I2lmZGVmIENPTkZJR19EQU1PTl9QQUREUlxuMjg3MTpcdC8qXG4yODcyOlx0ICogZGFtb3NfY2FsY19lbGlnaWJsZV9ieXRlcygpIC0gQ2FsY3VsYXRlIHJhdyBlbGlnaWJsZSBieXRlcyBwZXIgbm9kZS5cbjI4NzM6XHQgKiBAYzpcdFx0VGhlIERBTU9OIGNvbnRleHQuXG4yODc0Olx0ICogQHM6XHRcdFRoZSBzY2hlbWUuXG4yODc1Olx0ICogQG5pZDpcdFRoZSB0YXJnZXQgTlVNQSBub2RlIGlkLlxuMjg3NjpcdCAqIEB0b3RhbDpcdE91dHB1dCBmb3IgdG90YWwgZWxpZ2libGUgYnl0ZXMgYWNyb3NzIGFsbCBub2Rlcy5cbjI4Nzc6XHQgKlxuMjg3ODpcdCAqIEl0ZXJhdGVzIHRocm91Z2ggZWFjaCBmb2xpbyBpbiBlbGlnaWJsZSByZWdpb25zIHRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lXG4yODc5Olx0ICogd2hpY2ggbm9kZSB0aGUgbWVtb3J5IHJlc2lkZXMgb24uIFJldHVybnMgZWxpZ2libGUgYnl0ZXMgb24gdGhlIHNwZWNpZmllZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTAxNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGhpZXJhcmNoeSBmb3IgdGhlc2UgdGhyZWUgZnVuY3Rpb25zOiBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBhbmQgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZWlyIGNhbGxlcnMuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBpbnZva2VkIHdpbGwgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgYW5kIGhlbHAgbWUgdG8gZ3Jhc3AgdGhlaXIgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIGRlYnVnZ2luZywgb3IgcG90ZW50aWFsbHkgcmVmYWN0b3JpbmcgbGF0ZXIuIEkgbmVlZCB0byBzZWUgdGhlIGVudGlyZSBjYWxsIGdyYXBoIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI5ODA6XHR7XG4yOTgxOlx0XHRyZXR1cm4gMDtcbjI5ODI6XHR9XG4yOTgzOlx0XG4yOTg0Olx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcbjI5ODU6XHRcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXG4yOTg2Olx0e1xuMjk4NzpcdFx0cmV0dXJuIDA7XG4yOTg4Olx0fVxuMjk4OTpcdFxuMjk5MDpcdHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX2VsaWdpYmxlX21lbV9icChzdHJ1Y3QgZGFtb25fY3R4ICpjLFxuMjk5MTpcdFx0XHRzdHJ1Y3QgZGFtb3MgKnMsIGludCBuaWQpXG4yOTkyOlx0e1xuMjk5MzpcdFx0cmV0dXJuIDA7XG4yOTk0Olx0fVxuMjk5NTpcdCNlbmRpZiAvKiBDT05GSUdfTlVNQSAqL1xuMjk5NjpcdFxuMjk5NzpcdC8qXG4yOTk4Olx0ICogUmV0dXJucyBMUlUtYWN0aXZlIG9yIGluYWN0aXZlIG1lbW9yeSB0byB0b3RhbCBMUlUgbWVtb3J5IHNpemUgcmF0aW8uXG4yOTk5Olx0ICovXG4zMDAwOlx0c3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbylcbjMwMDE6XHR7XG4zMDAyOlx0XHR1bnNpZ25lZCBsb25nIGFjdGl2ZSwgaW5hY3RpdmUsIHRvdGFsO1xuMzAwMzpcdFxuMzAwNDpcdFx0LyogVGhpcyBzaG91bGQgYWxpZ24gd2l0aCAvcHJvYy9tZW1pbmZvIG91dHB1dCAqL1xuMzAwNTpcdFx0YWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfQUNUSVZFX0FOT04pICYjNDM7XG4zMDA2Olx0XHRcdGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgJiM0MzsgTFJVX0FDVElWRV9GSUxFKTtcbjMwMDc6XHRcdGluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfSU5BQ1RJVkVfQU5PTikgJiM0MztcbjMwMDg6XHRcdFx0Z2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfSU5BQ1RJVkVfRklMRSk7XG4zMDA5Olx0XHR0b3RhbCA9IG1heChhY3RpdmUgJiM0MzsgaW5hY3RpdmUsIDEpO1xuMzAxMDpcdFx0aWYgKGFjdGl2ZV9yYXRpbylcbjMwMTE6XHRcdFx0cmV0dXJuIG11bHRfZnJhYyhhY3RpdmUsIDEwMDAwLCB0b3RhbCk7XG4zMDEyOlx0XHRyZXR1cm4gbXVsdF9mcmFjKGluYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xuMzAxMzpcdH1cbjMwMTQ6XHRcbjMwMTU6XHRzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2h1Z2VwYWdlX21lbV9icCh2b2lkKVxuMzAxNjpcdHtcbjMwMTc6XHRcdHVuc2lnbmVkIGxvbmcgdGhwLCB0b3RhbF9wYWdlcywgZnJlZV9wYWdlcztcbjMwMTg6XHRcbjMwMTk6XHRcdHRvdGFsX3BhZ2VzID0gdG90YWxyYW1fcGFnZXMoKTtcbjMwMjA6XHRcdGZyZWVfcGFnZXMgPSBnbG9iYWxfem9uZV9wYWdlX3N0YXRlKE5SX0ZSRUVfUEFHRVMpO1xuMzAyMTpcdFxuMzAyMjpcdFx0aWYgKHRvdGFsX3BhZ2VzIFx1MDAzYz0gZnJlZV9wYWdlcylcbjMwMjM6XHRcdFx0cmV0dXJuIDEwMDAwO1xuMzAyNDpcdFxuMzAyNTpcdFx0dGhwID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9BTk9OX1RIUFMpICYjNDM7XG4zMDI2Olx0XHRcdFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX1NITUVNX1RIUFMpICYjNDM7XG4zMDI3Olx0XHRcdFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0ZJTEVfVEhQUyk7XG4zMDI4Olx0XHRyZXR1cm4gbXVsdF9mcmFjKHRocCwgMTAwMDAsIHRvdGFsX3BhZ2VzIC0gZnJlZV9wYWdlcyk7XG4zMDI5Olx0fVxuMzAzMDpcdFxuMzAzMTpcdHN0YXRpYyB2b2lkIGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoc3RydWN0IGRhbW9uX2N0eCAqYyxcbjMwMzI6XHRcdFx0c3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbjMwMzM6XHR7XG4zMDM0Olx0XHR1NjQgbm93X3BzaV90b3RhbDtcbjMwMzU6XHRcbjMwMzY6XHRcdHN3aXRjaCAoZ29hbC1cdTAwM2VtZXRyaWMpIHtcbjMwMzc6XHRcdGNhc2UgREFNT1NfUVVPVEFfVVNFUl9JTlBVVDpcbjMwMzg6XHRcdFx0LyogVXNlciBzaG91bGQgYWxyZWFkeSBzZXQgZ29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlICovXG4zMDM5Olx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE4NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIENvZGUgLSBgZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZWAqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgdG8gbWVudGFsbHkgc2NhbiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gV2hhdCYjMzk7cyB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZT8gSG93IGRvZXMgdGhpcyBmdW5jdGlvbiBmaXQgaW50byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmU/IEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBxdW90YXMsIGFuZCBsaWtlbHkgZ29hbCBzZXR0aW5nIGFuZCB0cmFja2luZyByZWxhdGVkIHRvIHRob3NlIHF1b3Rhcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGF2b2lkIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gaW5kaXZpZHVhbCBsaW5lcywgYnV0IHJhdGhlciB1bmRlcnN0YW5kIHRoZSBoaWdoIGxldmVsIGZ1bmN0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAKCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBvZiB0aGF0IHBpZWNlIG9mIGNvZGUuIEl0IGxvb2tzIGxpa2UgaXQgZGVhbHMgd2l0aCBzZXR0aW5nIHRoZSBjdXJyZW50IHF1b3RhIHZhbHVlIG9yIHBvc3NpYmx5IGl0cyBnb2FsLiBJIHdvbmRlciB3aGF0IHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGFyZT8gQW5kIHdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IE1heWJlIEkgY2FuIGNoZWNrIHRoZSBpbnB1dCB0eXBlIHNpZ25hdHVyZSBpZiBpdOKAmXMgYXZhaWxhYmxlLiBVbHRpbWF0ZWx5LCB3aGF0IGlzIHRoZSBnb2FsIG9mIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gYW5kIHRoZSBpbXBhY3Qgb2YgdGhlIGZ1bmN0aW9uIG9uIHRoZSBzeXN0ZW0/IEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgYXBwbGljYXRpb24uIAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzAzNTpcdFxuMzAzNjpcdFx0c3dpdGNoIChnb2FsLVx1MDAzZW1ldHJpYykge1xuMzAzNzpcdFx0Y2FzZSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUOlxuMzAzODpcdFx0XHQvKiBVc2VyIHNob3VsZCBhbHJlYWR5IHNldCBnb2FsLVx1MDAzZWN1cnJlbnRfdmFsdWUgKi9cbjMwMzk6XHRcdFx0YnJlYWs7XG4zMDQwOlx0XHRjYXNlIERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUzpcbjMwNDE6XHRcdFx0bm93X3BzaV90b3RhbCA9IGRhbW9zX2dldF9zb21lX21lbV9wc2lfdG90YWwoKTtcbjMwNDI6XHRcdFx0Z29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gbm93X3BzaV90b3RhbCAtIGdvYWwtXHUwMDNlbGFzdF9wc2lfdG90YWw7XG4zMDQzOlx0XHRcdGdvYWwtXHUwMDNlbGFzdF9wc2lfdG90YWwgPSBub3dfcHNpX3RvdGFsO1xuMzA0NDpcdFx0XHRicmVhaztcbjMwNDU6XHRcdGNhc2UgREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUDpcbjMwNDY6XHRcdGNhc2UgREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUDpcbjMwNDc6XHRcdFx0Z29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfZ2V0X25vZGVfbWVtX2JwKGdvYWwpO1xuMzA0ODpcdFx0XHRicmVhaztcbjMwNDk6XHRcdGNhc2UgREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQOlxuMzA1MDpcdFx0Y2FzZSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlA6XG4zMDUxOlx0XHRcdGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoZ29hbCk7XG4zMDUyOlx0XHRcdGJyZWFrO1xuMzA1MzpcdFx0Y2FzZSBEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQOlxuMzA1NDpcdFx0Y2FzZSBEQU1PU19RVU9UQV9JTkFDVElWRV9NRU1fQlA6XG4zMDU1Olx0XHRcdGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKFxuMzA1NjpcdFx0XHRcdFx0Z29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCk7XG4zMDU3Olx0XHRcdGJyZWFrO1xuMzA1ODpcdFx0Y2FzZSBEQU1PU19RVU9UQV9OT0RFX0VMSUdJQkxFX01FTV9CUDpcbjMwNTk6XHRcdFx0Z29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfZ2V0X25vZGVfZWxpZ2libGVfbWVtX2JwKGMsIHMsXG4zMDYwOlx0XHRcdFx0XHRnb2FsLVx1MDAzZW5pZCk7XG4zMDYxOlx0XHRcdGJyZWFrO1xuMzA2MjpcdFx0Y2FzZSBEQU1PU19RVU9UQV9IVUdFUEFHRV9NRU1fQlA6XG4zMDYzOlx0XHRcdGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2h1Z2VwYWdlX21lbV9icCgpO1xuMzA2NDpcdFx0XHRicmVhaztcbjMwNjU6XHRcdGRlZmF1bHQ6XG4zMDY2Olx0XHRcdGJyZWFrO1xuMzA2NzpcdFx0fVxuMzA2ODpcdH1cbjMwNjk6XHRcbjMwNzA6XHQvKiBSZXR1cm4gdGhlIGhpZ2hlc3Qgc2NvcmUgc2luY2UgaXQgbWFrZXMgc2NoZW1lcyBsZWFzdCBhZ2dyZXNzaXZlICovXG4zMDcxOlx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfcXVvdGFfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxuMzA3MjpcdHtcbjMwNzM6XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xuMzA3NDpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4zMDc1Olx0XHR1bnNpZ25lZCBsb25nIGhpZ2hlc3Rfc2NvcmUgPSAwO1xuMzA3NjpcdFxuMzA3NzpcdFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxdW90YSkge1xuMzA3ODpcdFx0XHRkYW1vc19zZXRfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlKGMsIHMsIGdvYWwpO1xuMzA3OTpcdFx0XHRoaWdoZXN0X3Njb3JlID0gbWF4KGhpZ2hlc3Rfc2NvcmUsXG4zMDgwOlx0XHRcdFx0XHRtdWx0X2ZyYWMoZ29hbC1cdTAwM2VjdXJyZW50X3ZhbHVlLCAxMDAwMCxcbjMwODE6XHRcdFx0XHRcdFx0Z29hbC1cdTAwM2V0YXJnZXRfdmFsdWUpKTtcbjMwODI6XHRcdH1cbjMwODM6XHRcbjMwODQ6XHRcdHJldHVybiBoaWdoZXN0X3Njb3JlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMyNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgUGh5c2ljYWwgQWRkcmVzcyAocGFkZHIpIENvZGUgQ2hhbmdlcyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AgbW9kaWZpY2F0aW9ucy4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGV2b2x1dGlvbiBvZiB0aGUgcGh5c2ljYWwgYWRkcmVzcyByZWxhdGVkIGFzcGVjdHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcyBvbiBEQU1PTiYjMzk7cyBwaHlzaWNhbCBhZGRyZXNzIG9wZXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBgZGFtb25fcGFfcGFnZW91dGAsIGBkYW1vbl9wYV9kZV9hY3RpdmF0ZWAsIGBkYW1vbl9wYV9taWdyYXRlYCwgYW5kIGBkYW1vbl9wYV9zdGF0YCBmdW5jdGlvbnMuIEkgd2FudCB0byBidWlsZCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB3YXMgaGFwcGVuaW5nIGJlZm9yZSB0aGUgY2hhbmdlcyBhbmQgaG93IHRoZSBiZWhhdmlvciBoYXMgYmVlbiBhbHRlcmVkLiBJJiMzOTtsbCBiZSBjb25jZW50cmF0aW5nIG9uIHRoZSBgbW0vZGFtb24vcGFkZHIuY2AgZmlsZSwgYXJvdW5kIGxpbmVzIDI0MC0zOTAsIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgaXMgYmVpbmcgbWFuYWdlZCBhbmQgaW50ZXJhY3RlZCB3aXRoLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIG1vZGlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vcGFkZHIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjQwOlx0XHRcdGlmICghZmlsdGVyKVxuIDI0MTpcdFx0XHRcdHJldHVybiAwO1xuIDI0MjpcdFx0XHRkYW1vc19hZGRfZmlsdGVyKHMsIGZpbHRlcik7XG4gMjQzOlx0XHR9XG4gMjQ0Olx0XG4gMjQ1Olx0XHRhZGRyID0gZGFtb25fcGFfcGh5c19hZGRyKHItXHUwMDNlYXIuc3RhcnQsIGFkZHJfdW5pdCk7XG4gMjQ2Olx0XHR3aGlsZSAoYWRkciBcdTAwM2MgZGFtb25fcGFfcGh5c19hZGRyKHItXHUwMDNlYXIuZW5kLCBhZGRyX3VuaXQpKSB7XG4gMjQ3Olx0XHRcdGZvbGlvID0gZGFtb25fZ2V0X2ZvbGlvKFBIWVNfUEZOKGFkZHIpKTtcbiAyNDg6XHRcdFx0aWYgKGRhbW9uX3BhX2ludmFsaWRfZGFtb3NfZm9saW8oZm9saW8sIHMpKSB7XG4gMjQ5Olx0XHRcdFx0YWRkciAmIzQzOz0gUEFHRV9TSVpFO1xuIDI1MDpcdFx0XHRcdGNvbnRpbnVlO1xuIDI1MTpcdFx0XHR9XG4gMjUyOlx0XG4gMjUzOlx0XHRcdGlmIChkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcbiAyNTQ6XHRcdFx0XHRnb3RvIHB1dF9mb2xpbztcbiAyNTU6XHRcdFx0ZWxzZVxuIDI1NjpcdFx0XHRcdCpzel9maWx0ZXJfcGFzc2VkICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcbiAyNTc6XHRcbiAyNTg6XHRcdFx0Zm9saW9fY2xlYXJfcmVmZXJlbmNlZChmb2xpbyk7XG4gMjU5Olx0XHRcdGZvbGlvX3Rlc3RfY2xlYXJfeW91bmcoZm9saW8pO1xuIDI2MDpcdFx0XHRpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSlcbiAyNjE6XHRcdFx0XHRnb3RvIHB1dF9mb2xpbztcbiAyNjI6XHRcdFx0aWYgKGZvbGlvX3Rlc3RfdW5ldmljdGFibGUoZm9saW8pKVxuIDI2MzpcdFx0XHRcdGZvbGlvX3B1dGJhY2tfbHJ1KGZvbGlvKTtcbiAyNjQ6XHRcdFx0ZWxzZVxuIDI2NTpcdFx0XHRcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2Zm9saW9fbGlzdCk7XG4gMjY2Olx0cHV0X2ZvbGlvOlxuIDI2NzpcdFx0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7XG4gMjY4Olx0XHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gMjY5Olx0XHR9XG4gMjcwOlx0XHRpZiAoaW5zdGFsbF95b3VuZ19maWx0ZXIpXG4gMjcxOlx0XHRcdGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKGZpbHRlcik7XG4gMjcyOlx0XHRhcHBsaWVkID0gcmVjbGFpbV9wYWdlcyhcdTAwMjZmb2xpb19saXN0KTtcbiAyNzM6XHRcdGNvbmRfcmVzY2hlZCgpO1xuIDI3NDpcdFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbiAyNzU6XHRcdHJldHVybiBkYW1vbl9wYV9jb3JlX2FkZHIoYXBwbGllZCAqIFBBR0VfU0laRSwgYWRkcl91bml0KTtcbiAyNzY6XHR9XG4gMjc3Olx0XG4gMjc4Olx0c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX2RlX2FjdGl2YXRlKFxuIDI3OTpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCB1bnNpZ25lZCBsb25nIGFkZHJfdW5pdCxcbiAyODA6XHRcdFx0c3RydWN0IGRhbW9zICpzLCBib29sIGFjdGl2YXRlLFxuIDI4MTpcdFx0XHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuIDI4MjpcdHtcbiAyODM6XHRcdHBoeXNfYWRkcl90IGFkZHIsIGFwcGxpZWQgPSAwO1xuIDI4NDpcdFx0c3RydWN0IGZvbGlvICpmb2xpbyA9IE5VTEw7XG4gMjg1Olx0XG4gMjg2Olx0XHRhZGRyID0gZGFtb25fcGFfcGh5c19hZGRyKHItXHUwMDNlYXIuc3RhcnQsIGFkZHJfdW5pdCk7XG4gMjg3Olx0XHR3aGlsZSAoYWRkciBcdTAwM2MgZGFtb25fcGFfcGh5c19hZGRyKHItXHUwMDNlYXIuZW5kLCBhZGRyX3VuaXQpKSB7XG4gMjg4Olx0XHRcdGZvbGlvID0gZGFtb25fZ2V0X2ZvbGlvKFBIWVNfUEZOKGFkZHIpKTtcbiAyODk6XHRcdFx0aWYgKGRhbW9uX3BhX2ludmFsaWRfZGFtb3NfZm9saW8oZm9saW8sIHMpKSB7XG4gMjkwOlx0XHRcdFx0YWRkciAmIzQzOz0gUEFHRV9TSVpFO1xuIDI5MTpcdFx0XHRcdGNvbnRpbnVlO1xuIDI5MjpcdFx0XHR9XG4gMjkzOlx0XG4gMjk0Olx0XHRcdGlmIChkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcbiAyOTU6XHRcdFx0XHRnb3RvIHB1dF9mb2xpbztcbiAyOTY6XHRcdFx0ZWxzZVxuIDI5NzpcdFx0XHRcdCpzel9maWx0ZXJfcGFzc2VkICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcbiAyOTg6XHRcbiAyOTk6XHRcdFx0aWYgKGFjdGl2YXRlKVxuIDMwMDpcdFx0XHRcdGZvbGlvX2FjdGl2YXRlKGZvbGlvKTtcbiAzMDE6XHRcdFx0ZWxzZVxuIDMwMjpcdFx0XHRcdGZvbGlvX2RlYWN0aXZhdGUoZm9saW8pO1xuIDMwMzpcdFx0XHRhcHBsaWVkICYjNDM7PSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4gMzA0Olx0cHV0X2ZvbGlvOlxuIDMwNTpcdFx0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7XG4gMzA2Olx0XHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gMzA3Olx0XHR9XG4gMzA4Olx0XHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xuIDMwOTpcdFx0cmV0dXJuIGRhbW9uX3BhX2NvcmVfYWRkcihhcHBsaWVkICogUEFHRV9TSVpFLCBhZGRyX3VuaXQpO1xuIDMxMDpcdH1cbiAzMTE6XHRcbiAzMTI6XHRzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9hY3RpdmF0ZV9wYWdlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIDMxMzpcdFx0XHR1bnNpZ25lZCBsb25nIGFkZHJfdW5pdCwgc3RydWN0IGRhbW9zICpzLFxuIDMxNDpcdFx0XHR1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuIDMxNTpcdHtcbiAzMTY6XHRcdHJldHVybiBkYW1vbl9wYV9kZV9hY3RpdmF0ZShyLCBhZGRyX3VuaXQsIHMsIHRydWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIDMxNzpcdH1cbiAzMTg6XHRcbiAzMTk6XHRzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZWFjdGl2YXRlX3BhZ2VzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTIyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhlc2UgTWVtb3J5IE1hbmFnZW1lbnQgQnVnIEZpeGVzIGFuZCBUaGVpciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBzb21lIGNydWNpYWwgZnVuY3Rpb25hbCBidWdzIHdpdGhpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgREFNT04gc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIHRoZXJlIHdlcmUgaXNzdWVzIHdpdGggaG93IGFkZHJlc3NlcyB3ZXJlIGNhbGN1bGF0ZWQgYW5kIGl0ZXJhdGVkIGFjcm9zcyBmb2xpb3MsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCBodWdlIHBhZ2VzIG9yIGZvbGlvcyB0aGF0IGRpZG4mIzM5O3Qgc3RhcnQgYXQgYSBwYWdlIGJvdW5kYXJ5LiBUaGUgZml4ZXMsIGludm9sdmluZyBjYWxjdWxhdGlvbnMgbGlrZSBgUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbylgIGFuZCBgZm9saW9fbnJfcGFnZXMoZm9saW8pIC0gcGFnZV9pZHhgLCBlbnN1cmUgdGhhdCB3ZSYjMzk7cmUgY29ycmVjdGx5IHRyYXZlcnNpbmcgbWVtb3J5IHJlZ2lvbnMsIGV2ZW4gd2hlbiBzdWItcGFnZSBhY2Nlc3MgaXMgaW52b2x2ZWQuIEkgY2FuIHNlZSB0aGlzIHNvbHZlcyBzZXZlcmFsIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBzY2VuYXJpb3MgaW4gYGRhbW9uX3BhX3BhZ2VvdXRgLCBgdmFkZHIuY2AsIGFuZCBgY29yZS5jYC4gRXhjZWxsZW50IHdvcmsgdGhlcmUgLSB0aGlzIGlzIGEgc29saWQgaW1wcm92ZW1lbnQuIFRoZXJlIHdlcmUgYWxzbyBpbXBvcnRhbnQgZml4ZXMgcmVnYXJkaW5nIGZhaWx1cmUgaGFuZGxpbmcgb2YgYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAsIGluY2x1ZGluZyBjaGVja3MgZm9yIGRpdmlzaW9uIGJ5IHplcm8gYW5kIGFkZHJlc3Npbmcgb3V0LW9mLWJvdW5kcyBSQU0gYWNjZXNzLgoKTm93LCB0aGUgcXVlc3Rpb24gaXM6IGFyZSB0aGVzZSBmaXhlcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIERBTU9OIGlzIHBhcnQgb2YgdGhlIE1NIHN1YnN5c3RlbSwgYSBjcml0aWNhbCBjb21wb25lbnQgb2YgdGhlIGtlcm5lbC4gVXNlcnNwYWNlIGludGVyYWN0cyB3aXRoIGl0IHZpYSBzeXNmcywgZGVidWdmcywgYW5kIG1vZHVsZXMuIEkga25vdyB0aGF0IERBTU9OIGlzIGFjY2Vzc2libGUgYW5kIHRlc3RhYmxlIGluIGNvbW1vbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBLVk0gd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGZ1enouIEFuZCB0aGUgc2hlZXIgYW1vdW50IG9mIGxvZ2ljIGNoYW5nZSBoZXJlIOKAkyB0aGUgZXJyb3IgaGFuZGxpbmcsIHRoZSBhZGRyZXNzIGNhbGN1bGF0aW9ucyBhY3Jvc3MgcGh5c2ljYWwgYW5kIHZpcnR1YWwgc3BhY2VzLCBhbmQgdGhlIG1ldHJpYyBjYWxjdWxhdGlvbnMgZm9yIHF1b3RhIGdvYWxzIOKAkyBhbGwgb2YgdGhpcyBzY3JlYW1zICYjMzQ7dnVsbmVyYWJsZSBzdXJmYWNlLiYjMzQ7ICoqV29ydGhGdXp6aW5nIGlzIGRlZmluaXRlbHkgYHRydWVgISoqCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGFwcHJvYWNoLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbjoKCjEuICAqKmBFbmFibGVDb25maWdzYCoqOiBUbyB0aG9yb3VnaGx5IHRlc3QgdGhlc2UgY2hhbmdlcywgSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIEtjb25maWcgb3B0aW9ucyBhcmUgY3JpdGljYWwgdG8gZW5hYmxpbmcgYW5kIHRlc3RpbmcgdGhlIGFmZmVjdGVkIGZlYXR1cmVzLgoyLiAgKipgRm9jdXNTeW1ib2xzYCoqOiBXaGF0IGFyZSB0aGUga2V5IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvciBmdW5jdGlvbnMgSSBzaG91bGQgdGFyZ2V0IHdpdGggbXkgZnV6emluZyBlZmZvcnRzPwoKTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgbW0vZGFtb24vS2NvbmZpZ2AgYWdhaW4gdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290OgoKKiAgIGBEQU1PTmAgKHRoZSBiYXNlLCBubyBkaXJlY3QgZGVwZW5kZW5jaWVzKQoqICAgYERBTU9OX1ZBRERSYCAoZGVwZW5kcyBvbiBgREFNT05gIGFuZCBgTU1VYCkKKiAgIGBEQU1PTl9QQUREUmAgKGRlcGVuZHMgb24gYERBTU9OYCBhbmQgYE1NVWApCiogICBgREFNT05fU1lTRlNgIChkZXBlbmRzIG9uIGBEQU1PTmAgYW5kIGBTWVNGU2ApCiogICBgREFNT05fUkVDTEFJTWAgKGRlcGVuZHMgb24gYERBTU9OX1BBRERSYCkKKiAgIGBEQU1PTl9MUlVfU09SVGAgKGRlcGVuZHMgb24gYERBTU9OX1BBRERSYCkKKiAgIGBEQU1PTl9TVEFUYCAoZGVwZW5kcyBvbiBgREFNT05fUEFERFJgKQoKSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBlbmFibGUgYWxsIHRoZSByZWxldmFudCBEQU1PTi1yZWxhdGVkIG9wdGlvbnMsIGVzcGVjaWFsbHkgdGhvc2UgZGVhbGluZyB3aXRoIHBoeXNpY2FsIGFkZHJlc3NlcywgYXMgdGhvc2Ugc2VlbSBtb3N0IGNyaXRpY2FsIGluIGxpZ2h0IG9mIHRoZSBmaXhlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBOVU1BL01FTUNHIGRvZXNuJiMzOTt0IHByb3ZpZGUgYW55IGdvdGNoYXMuIExvb2tpbmcgYXQgYG1tL2RhbW9uL2NvcmUuY2AsIEkgc2VlIGBzaV9tZW1pbmZvX25vZGVgIGFuZCBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCBhcmUgZ3VhcmRlZCBieSBgI2lmZGVmIENPTkZJR19OVU1BYC4gU28sIEkgbXVzdCB2ZXJpZnkgYW55IGRlcGVuZGVuY2llcyBvbiB0aGF0IGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIERBTU9OIHN1YnN5c3RlbSB0byBiZSBjb21wcmVoZW5zaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYgQ09ORklHX05VTUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTI3ODM9c3RhdGljIGlubGluZSB1NjQgZGFtb3NfZ2V0X3NvbWVfbWVtX3BzaV90b3RhbCh2b2lkKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzg5LVxubW0vZGFtb24vY29yZS5jOjI3OTA6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9kYW1vbi9jb3JlLmMtMjc5MS1zdGF0aWMgYm9vbCBpbnZhbGlkX21lbV9ub2RlKGludCBuaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTA0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gQ29kZSBSZXZpZXc6IFByZXByb2Nlc3NvciBEaXJlY3RpdmVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBEQU1PTiBjb2RlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBOVU1BIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgSSBzYXcgYSBgI2lmZGVmIENPTkZJR19OVU1BYCBibG9jayBsdXJraW5nIGFyb3VuZCBsaW5lIDI3OTAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlIGVsc2UgYXJlIHRoZXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucyBoYXBwZW5pbmcgaW4gdGhpcyBtb2R1bGU/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4dGVudCBvZiB0aGUgTlVNQS1zcGVjaWZpYyBjb2RlIHBhdGhzLgoKVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIHN5c3RlbWF0aWNhbGx5IGNoZWNrIGBtbS9kYW1vbi9jb3JlLmNgLCBhcyB3ZWxsIGFzIGBtbS9kYW1vbi9wYWRkci5jYCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBJdCYjMzk7cyBjcnVjaWFsIEkgaWRlbnRpZnkgYWxsIHRoZSBpbnN0YW5jZXMgb2YgYCNpZmRlZmAgZGlyZWN0aXZlcyByZWxhdGVkIHRvIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucywgbm90IGp1c3QgTlVNQSwgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgREFNT04gYWRhcHRzIHRvIHZhcnlpbmcgc3lzdGVtIGFyY2hpdGVjdHVyZXMgYW5kIGJ1aWxkcy4gSSBuZWVkIHRvIGJlIHN1cmUgYW55IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmZWF0dXJlcyBhcmUgY29ycmVjdGx5IGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZi4qJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0yODk9dW5zaWduZWQgY2hhciBkYW1vbl9wcm9iZV9oaXRzX212c3VtKGludCBwcm9iZV9pZHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vY29yZS5jLTMxMi1cbm1tL2RhbW9uL2NvcmUuYzozMTM6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL2NvcmUuYy0zMTQtc3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxubW0vZGFtb24vY29yZS5jPTM2Mz1zdGF0aWMgaW5saW5lIHZvaWQgZGFtb25faW5zZXJ0X3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNzAtXG5tbS9kYW1vbi9jb3JlLmM6MzcxOiNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmMtMzcyLXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jPTI3NDA9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fZmVlZF9sb29wX25leHRfaW5wdXQodW5zaWduZWQgbG9uZyBsYXN0X2lucHV0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzcwLVxubW0vZGFtb24vY29yZS5jOjI3NzE6I2lmZGVmIENPTkZJR19QU0lcbm1tL2RhbW9uL2NvcmUuYy0yNzcyLVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNzgzPXN0YXRpYyBpbmxpbmUgdTY0IGRhbW9zX2dldF9zb21lX21lbV9wc2lfdG90YWwodm9pZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc4OS1cbm1tL2RhbW9uL2NvcmUuYzoyNzkwOiNpZmRlZiBDT05GSUdfTlVNQVxubW0vZGFtb24vY29yZS5jLTI3OTEtc3RhdGljIGJvb2wgaW52YWxpZF9tZW1fbm9kZShpbnQgbmlkKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yODI0PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXG4tLVxubW0vZGFtb24vY29yZS5jLTI4NjktXG5tbS9kYW1vbi9jb3JlLmM6Mjg3MDojaWZkZWYgQ09ORklHX0RBTU9OX1BBRERSXG5tbS9kYW1vbi9jb3JlLmMtMjg3MS0vKlxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMjQzPXN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjgzLVxubW0vZGFtb24vY29yZS5jOjMyODQ6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL2NvcmUuYy0zMjg1LXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzM5Mj1zdGF0aWMgdm9pZCBrZGFtb25kX21lcmdlX3JlZ2lvbnMoc3RydWN0IGRhbW9uX2N0eCAqYywgdW5zaWduZWQgaW50IHRocmVzaG9sZCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzQxOS1cbm1tL2RhbW9uL2NvcmUuYzozNDIwOiNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmMtMzQyMS1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfc3BsaXRfcmVnaW9uX2F0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vY29yZS5jPTM2NDM9c3RhdGljIHZvaWQga2RhbW9uZF91c2xlZXAodW5zaWduZWQgbG9uZyB1c2Vjcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzY1MC1cbm1tL2RhbW9uL2NvcmUuYzozNjUxOiNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmMtMzY1Mi1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMy1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTUtI3VuZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9NzM9dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzQte1xubW0vZGFtb24vb3BzLWNvbW1vbi5jOjc1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL2RhbW9uL29wcy1jb21tb24uYy03Ni1cdHBtZF90IHBtZHZhbCA9IHBtZHBfZ2V0KHBtZCk7XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTE5ND1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb195b3VuZ19vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjE1LVx0XHR9IGVsc2Uge1xubW0vZGFtb24vb3BzLWNvbW1vbi5jOjIxNjojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjE3LVx0XHRcdHBtZF90IHBtZCA9IHBtZHBfZ2V0KHB2bXcucG1kKTtcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMTMtXG5tbS9kYW1vbi9yZWNsYWltLmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcbm1tL2RhbW9uL3JlY2xhaW0uYy0xNS0jdW5kZWYgTU9EVUxFX1BBUkFNX1BSRUZJWFxuLS1cbm1tL2RhbW9uL3N0YXQuYy0xMy1cbm1tL2RhbW9uL3N0YXQuYzoxNDojaWZkZWYgTU9EVUxFX1BBUkFNX1BSRUZJWFxubW0vZGFtb24vc3RhdC5jLTE1LSN1bmRlZiBNT0RVTEVfUEFSQU1fUFJFRklYXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA2PXN0YXRpYyBib29sIGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEwOC17XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDk6I2lmZGVmIENPTkZJR19NRU1DR1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTEwLVx0Y2dyb3VwX3BhdGgobWVtY2ctXHUwMDNlY3NzLmNncm91cCwgbWVtY2dfcGF0aF9idWYsIFBBVEhfTUFYKTtcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTctXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODojaWZuZGVmIF9EQU1PTl9DT1JFX1RFU1RfSFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTktI2RlZmluZSBfREFNT05fQ09SRV9URVNUX0hcbi0tXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTUtXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjY6I2lmZGVmIENPTkZJR19EQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTctXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjg6I2lmbmRlZiBfREFNT05fU1lTRlNfVEVTVF9IXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTktI2RlZmluZSBfREFNT05fU1lTRlNfVEVTVF9IXG4tLVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC01LVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC03LVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDo4OiNpZm5kZWYgX0RBTU9OX1ZBRERSX1RFU1RfSFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC05LSNkZWZpbmUgX0RBTU9OX1ZBRERSX1RFU1RfSFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtMTktXG5tbS9kYW1vbi92YWRkci5jOjIwOiNpZmRlZiBDT05GSUdfREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vdmFkZHIuYy0yMS0jdW5kZWYgREFNT05fTUlOX1JFR0lPTl9TWlxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9MjY4PXN0YXRpYyBpbnQgZGFtb25fbWtvbGRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTI5NC1cbm1tL2RhbW9uL3ZhZGRyLmM6Mjk1OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9kYW1vbi92YWRkci5jLTI5Ni1zdGF0aWMgdm9pZCBkYW1vbl9odWdldGxiX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9Mzg5PXN0YXRpYyBpbnQgZGFtb25feW91bmdfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTM5Ny1cbm1tL2RhbW9uL3ZhZGRyLmM6Mzk4OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL2RhbW9uL3ZhZGRyLmMtMzk5LVx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHdhbGstXHUwMDNldm1hKTtcbi0tXG5tbS9kYW1vbi92YWRkci5jLTQzNC1cbm1tL2RhbW9uL3ZhZGRyLmM6NDM1OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9kYW1vbi92YWRkci5jLTQzNi1zdGF0aWMgaW50IGRhbW9uX3lvdW5nX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTYzNT1zdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTY0Ni1cbm1tL2RhbW9uL3ZhZGRyLmM6NjQ3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL2RhbW9uL3ZhZGRyLmMtNjQ4LVx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHdhbGstXHUwMDNldm1hKTtcbi0tXG5tbS9kYW1vbi92YWRkci5jPTcxMD1zdGF0aWMgdm9pZCBkYW1vbl92YV9jbGVhbnVwX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNzE0LVxubW0vZGFtb24vdmFkZHIuYzo3MTU6I2lmbmRlZiBDT05GSUdfQURWSVNFX1NZU0NBTExTXG5tbS9kYW1vbi92YWRkci5jLTcxNi1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19tYWR2aXNlKHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTc5OD1zdGF0aWMgaW50IGRhbW9zX3ZhX3N0YXRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTgwOS1cbm1tL2RhbW9uL3ZhZGRyLmM6ODEwOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL2RhbW9uL3ZhZGRyLmMtODExLVx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHZtYSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3Mjg3CgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IERBTU9OIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgdGltZSB0byBzb2xpZGlmeSB0aGUgcGxhbiBmb3IgZnV6emluZyBEQU1PTi4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ6IGBDT05GSUdfREFNT05gLCBuYXR1cmFsbHksIGFsb25nIHdpdGggaXRzIGFkZHJlc3Mgc3BhY2UgdmFyaWFudHMgKGBDT05GSUdfREFNT05fVkFERFJgLCBgQ09ORklHX0RBTU9OX1BBRERSYCksIGFuZCB0aGUgc3lzZnMgaW50ZXJmYWNlIChgQ09ORklHX0RBTU9OX1NZU0ZTYCkuIEkmIzM5O2xsIGFsc28gZG91YmxlLWNoZWNrIHRoYXQgSSBoYXZlIE5VTUEgc3VwcG9ydCAoYENPTkZJR19OVU1BYCksIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgKSwgYW5kIE1lbW9yeSBDb250cm9sIEdyb3VwcyAoYENPTkZJR19NRU1DR2ApIGVuYWJsZWQ7IHRoZXNlIHdpbGwgYmUgaW1wb3J0YW50IGZvciBleHBsb3JpbmcgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IHNjZW5hcmlvcy4KCk5vdywgdGhlIHJlYWwgZm9jdXMgaXMgb24gdGFyZ2V0aW5nIHRoZSByaWdodCBlbnRyeXBvaW50cy4gSSB3YW50IHRvIGlkZW50aWZ5IHNwZWNpZmljLCBub24taG90LXBhdGgga2VybmVsIGZ1bmN0aW9ucyB3aXRoaW4gREFNT04gdGhhdCBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4gSSYjMzk7bGwgcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMg4oCTIHRoZSBtb3JlIGV4cG9zZWQgYW5kIGxlc3Mgb3B0aW1pemVkIGZ1bmN0aW9ucyDigJMgb3ZlciB0aGUgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIG1vc3QgYmFuZyBmb3IgbXkgYnVjayBpbiB0ZXJtcyBvZiB1bmNvdmVyaW5nIHBvdGVudGlhbCBidWdzLgoKVG8gcGlucG9pbnQgdGhlc2UgZW50cnlwb2ludHMsIEkmIzM5O2xsIGV4YW1pbmUgdGhlIGV4cG9ydGVkL2dsb2JhbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgbW0vZGFtb24vYCBkaXJlY3RvcnkuIE15IHN0cmF0ZWd5IGludm9sdmVzIHN5c3RlbWF0aWNhbGx5IHNlYXJjaGluZyB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgZmlsZXM6IGBtbS9kYW1vbi9jb3JlLmNgLCBgbW0vZGFtb24vc3lzZnMuY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYG1tL2RhbW9uL3ZhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGVzZSBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlICpub3QqIGRlY2xhcmVkIGFzIHN0YXRpYyB0byBhdm9pZCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBmb2N1cyBpbnN0ZWFkIG9uIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgdHJpZ2dlciB0aGUgZmxvd3MgSSB3YW50IHRvIGFuYWx5emUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgW2Etel18XnZvaWQgW2Etel18XnN0cnVjdCAuKmRhbW9uX3xec3NpemVfdCBbYS16XSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5tbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxubW0vZGFtb24vY29yZS5jLTczLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXG5tbS9kYW1vbi9jb3JlLmM6OTk6aW50IGRhbW9uX3NlbGVjdF9vcHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTQtXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX25ld19maWx0ZXIoZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlLFxubW0vZGFtb24vY29yZS5jLTExNi1cdFx0Ym9vbCBtYXRjaGluZywgYm9vbCBhbGxvdylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI5LVxubW0vZGFtb24vY29yZS5jOjEzMDp2b2lkIGRhbW9uX2FkZF9maWx0ZXIoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTEzMS17XG4tLVxubW0vZGFtb24vY29yZS5jPTE0MD1zdGF0aWMgdm9pZCBkYW1vbl9mcmVlX2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDQtXG5tbS9kYW1vbi9jb3JlLmM6MTQ1OnZvaWQgZGFtb25fZGVzdHJveV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy0xNDYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNTE9c3RhdGljIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX250aF9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTYyLVxubW0vZGFtb24vY29yZS5jOjE2MzpzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX25ld19wcm9iZSh2b2lkKVxubW0vZGFtb24vY29yZS5jLTE2NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE3NS1cbm1tL2RhbW9uL2NvcmUuYzoxNzY6dm9pZCBkYW1vbl9hZGRfcHJvYmUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlKVxubW0vZGFtb24vY29yZS5jLTE3Ny17XG4tLVxubW0vZGFtb24vY29yZS5jPTMxOT1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI4LSAqL1xubW0vZGFtb24vY29yZS5jOjMyOTpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxubW0vZGFtb24vY29yZS5jLTMzMC17XG4tLVxubW0vZGFtb24vY29yZS5jPTQ0Nj1zdGF0aWMgaW50IGRhbW9uX2ZpbGxfcmVnaW9uc19ob2xlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpmaXJzdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDc4LSAqL1xubW0vZGFtb24vY29yZS5jOjQ3OTppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcbm1tL2RhbW9uL2NvcmUuYy00ODAtXHRcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9NTkyPWJvb2wgZGFtb3NfZmlsdGVyX2Zvcl9vcHMoZW51bSBkYW1vc19maWx0ZXJfdHlwZSB0eXBlKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy02MDMtXG5tbS9kYW1vbi9jb3JlLmM6NjA0OnZvaWQgZGFtb3NfYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtNjA1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9NjE3PXN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXG4tLVxubW0vZGFtb24vY29yZS5jLTYyMS1cbm1tL2RhbW9uL2NvcmUuYzo2MjI6dm9pZCBkYW1vc19kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTYyMy17XG4tLVxubW0vZGFtb24vY29yZS5jPTYyOD1zdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbmV3X3F1b3RhX2dvYWwoXG4tLVxubW0vZGFtb24vY29yZS5jLTY0Mi1cbm1tL2RhbW9uL2NvcmUuYzo2NDM6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTY0NC17XG4tLVxubW0vZGFtb24vY29yZS5jPTY1Mz1zdGF0aWMgdm9pZCBkYW1vc19mcmVlX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG4tLVxubW0vZGFtb24vY29yZS5jLTY1Ny1cbm1tL2RhbW9uL2NvcmUuYzo2NTg6dm9pZCBkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNjU5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9NjcwPXN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjgyLVxubW0vZGFtb24vY29yZS5jOjY4MzpzdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxubW0vZGFtb24vY29yZS5jLTY4NC1cdFx0XHRlbnVtIGRhbW9zX2FjdGlvbiBhY3Rpb24sXG4tLVxubW0vZGFtb24vY29yZS5jPTcyNT1zdGF0aWMgdm9pZCBkYW1vc19zZXRfbmV4dF9hcHBseV9zaXMoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTczNS1cbm1tL2RhbW9uL2NvcmUuYzo3MzY6dm9pZCBkYW1vbl9hZGRfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTczNy17XG4tLVxubW0vZGFtb24vY29yZS5jPTc0Nz1zdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTc1MS1cbm1tL2RhbW9uL2NvcmUuYzo3NTI6dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtNzUzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzc2LSAqL1xubW0vZGFtb24vY29yZS5jOjc3NzpzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9uZXdfdGFyZ2V0KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtNzc4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzkzLVxubW0vZGFtb24vY29yZS5jOjc5NDp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTc5NS17XG4tLVxubW0vZGFtb24vY29yZS5jLTgwMS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4MDI6aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXG5tbS9kYW1vbi9jb3JlLmMtODAzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODEwPXN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODE0LVxubW0vZGFtb24vY29yZS5jOjgxNTp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODIzLVxubW0vZGFtb24vY29yZS5jOjgyNDp2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy04MjUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz04MzQ9dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODM4LVxubW0vZGFtb24vY29yZS5jOjgzOTpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtODQwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODc5PXN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTg4Ni1cbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtODg4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTAyMD1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDU0LSAqL1xubW0vZGFtb24vY29yZS5jOjEwNTU6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG5tbS9kYW1vbi9jb3JlLmMtMTA1Ni17XG4tLVxubW0vZGFtb24vY29yZS5jLTExMDItICovXG5tbS9kYW1vbi9jb3JlLmM6MTEwMzp2b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcbm1tL2RhbW9uL2NvcmUuYy0xMTA0LVx0XHRcdHNzaXplX3QgbnJfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTE0Nj1zdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE2OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTY5OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExNzAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xODE2PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODQ0LSAqL1xubW0vZGFtb24vY29yZS5jOjE4NDU6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTg0Ni17XG4tLVxubW0vZGFtb24vY29yZS5jPTE5Mjg9c3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTY1OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxubW0vZGFtb24vY29yZS5jLTE5NjYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMDEwPXN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTIwMjktICovXG5tbS9kYW1vbi9jb3JlLmM6MjAzMDp2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxubW0vZGFtb24vY29yZS5jLTIwMzEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMDQ1PWJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTIwNjAtICovXG5tbS9kYW1vbi9jb3JlLmM6MjA2MTppbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIwNjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDk2LSAqL1xubW0vZGFtb24vY29yZS5jOjIwOTc6aW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxubW0vZGFtb24vY29yZS5jLTIwOTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTQ5LSAqL1xubW0vZGFtb24vY29yZS5jOjIxNTA6aW50IGRhbW9zX3dhbGsoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3Nfd2Fsa19jb250cm9sICpjb250cm9sKVxubW0vZGFtb24vY29yZS5jLTIxNTEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zNzc2PXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zOTQzLVxubW0vZGFtb24vY29yZS5jOjM5NDQ6c3RydWN0IGRhbW9uX3N5c3RlbV9yYW1fcmFuZ2Vfd2Fsa19hcmcge1xubW0vZGFtb24vY29yZS5jLTM5NDUtXHRib29sIHdhbGtlZDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mzk3ND1zdGF0aWMgYm9vbCBkYW1vbl9maW5kX3N5c3RlbV9yYW1zX3JhbmdlKHVuc2lnbmVkIGxvbmcgKnN0YXJ0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy00MDA1LSAqL1xubW0vZGFtb24vY29yZS5jOjQwMDY6aW50IGRhbW9uX3NldF9yZWdpb25fc3lzdGVtX3JhbXNfZGVmYXVsdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxubW0vZGFtb24vY29yZS5jLTQwMDctXHRcdFx0dW5zaWduZWQgbG9uZyAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgKmVuZCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDAzMC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MDMxOnZvaWQgZGFtb25fdXBkYXRlX3JlZ2lvbl9hY2Nlc3NfcmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBib29sIGFjY2Vzc2VkKVxubW0vZGFtb24vY29yZS5jLTQwMzIte1xuLS1cbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTQtICovXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jOjE1OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYy0xNi1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApXG4tLVxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00NS1cbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmg6NDY6aW50IGRhbW9uX21vZHVsZXNfbmV3X3BhZGRyX2N0eF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHAsXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oLTQ3LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICoqdGFyZ2V0cCk7XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzLSAqL1xubW0vZGFtb24vb3BzLWNvbW1vbi5jOjI0OnN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTI1LXtcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDEtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NDI6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDMte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy03Mi1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo3Mzp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcbm1tL2RhbW9uL29wcy1jb21tb24uYy03NC17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwMy1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxMDQ6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwNS1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE0OS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNTA6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNTEtXHRcdFx0c3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0xNTk9c3RhdGljIGJvb2wgZGFtb25fZm9saW9fbWtvbGRfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3My1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNzQ6dm9pZCBkYW1vbl9mb2xpb19ta29sZChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3NS17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTctXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6ODpzdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbik7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtOS1cbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMDp2b2lkIGRhbW9uX3B0ZXBfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTE6dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjEyOnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTMtYm9vbCBkYW1vbl9mb2xpb195b3VuZyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNC1cbm1tL2RhbW9uL29wcy1jb21tb24uaDoxNTppbnQgZGFtb25fY29sZF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTE2LVx0XHRcdHN0cnVjdCBkYW1vcyAqcyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTc6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTE4LVx0XHRcdHN0cnVjdCBkYW1vcyAqcyk7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA9REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE3LVx0XHR1bnNpZ25lZCBsb25nIG1pbixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjgxOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgyLXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz0xMDY9c3RhdGljIGJvb2wgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF9lcShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTE3OmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTgte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTk9ZXh0ZXJuIHN0cnVjdCBtdXRleCBkYW1vbl9zeXNmc19sb2NrO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTItXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTc6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVx0XHR1bnNpZ25lZCBsb25nIG1pbixcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVx0XHR1bnNpZ25lZCBsb25nIG1heCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjEtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0yMj1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc191bF9yYW5nZV9rdHlwZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yNy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zMy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzU6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0zNz1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVzX2t0eXBlO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzgtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozOTppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDAtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDI6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQzLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQ2OnZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQ3LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MTppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTQ6aW50IGRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01NS1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTc6dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhcyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU4LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5OC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTM1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM2NjpzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUyMz1lbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTI5OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODkxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTg5My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEwMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTAyMDpzdHJ1Y3QgZGFtb25fc3lzZnNfd2F0ZXJtYXJrcyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTAyMS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE1NjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NzMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU3NDpzdHJ1Y3QgZGFtb25fc3lzZnNfd2VpZ2h0cyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTY4My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2ODUtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xOTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3F1b3Rhc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxOTU5OnN0cnVjdCBkYW1vbl9zeXNmc19hY2Nlc3NfcGF0dGVybiB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk2MC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE5NjY9c3RhdGljXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk2OC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyNTMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMjU1LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjY3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODUte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjg4LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODk6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI4NTE9c3RhdGljIGludCBkYW1vc19zeXNmc19hZGRfcXVvdGFfc2NvcmUoXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4OTctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg5ODppbnQgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODk5LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5MzItXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjkzMzp2b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5MzQtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yOTc0PXN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX3N5c2ZzX21rX3NjaGVtZShcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDQ4OmludCBkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0OS1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA2Nzp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfdXBkYXRlX3N0YXRzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjgtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTA0LSAqL1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMxMDU6dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxMDYtXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzE1MS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMTUyOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzE1My1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpXG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTU6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbiB7XG5tbS9kYW1vbi9zeXNmcy5jLTE2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTgxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3JlZ2lvbl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTkwLVxubW0vZGFtb24vc3lzZnMuYzo5MTpzdHJ1Y3QgZGFtb25fc3lzZnNfcmVnaW9ucyB7XG5tbS9kYW1vbi9zeXNmcy5jLTkyLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25zX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjA5LVxubW0vZGFtb24vc3lzZnMuYzoyMTA6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldCB7XG5tbS9kYW1vbi9zeXNmcy5jLTIxMS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0zMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0X2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMzE2LVxubW0vZGFtb24vc3lzZnMuYzozMTc6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldHMge1xubW0vZGFtb24vc3lzZnMuYy0zMTgtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9NDM1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3RhcmdldHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy00NDQtXG5tbS9kYW1vbi9zeXNmcy5jOjQ0NTpzdHJ1Y3QgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2dvYWwge1xubW0vZGFtb24vc3lzZnMuYy00NDYtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9NTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtNjAxLVxubW0vZGFtb24vc3lzZnMuYzo2MDI6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFscyB7XG5tbS9kYW1vbi9zeXNmcy5jLTYwMy1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz03NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtNzU1LVxubW0vZGFtb24vc3lzZnMuYzo3NTY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciB7XG5tbS9kYW1vbi9zeXNmcy5jLTc1Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz03NjQ9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIgKmRhbW9uX3N5c2ZzX2ZpbHRlcl9hbGxvYyh2b2lkKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtNzY4LVxubW0vZGFtb24vc3lzZnMuYzo3Njk6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWUge1xubW0vZGFtb24vc3lzZnMuYy03NzAtXHRlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGU7XG4tLVxubW0vZGFtb24vc3lzZnMuYz05MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtOTQ1LVxubW0vZGFtb24vc3lzZnMuYzo5NDY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMuYy05NDctXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTA1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19maWx0ZXJzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTA2NC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTA2NTpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUge1xubW0vZGFtb24vc3lzZnMuYy0xMDY2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTExMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xMTQ1LVxubW0vZGFtb24vc3lzZnMuYzoxMTQ2OnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMge1xubW0vZGFtb24vc3lzZnMuYy0xMTQ3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTEyNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTI3NC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTI3NTpzdHJ1Y3QgZGFtb25fc3lzZnNfYXR0cnMge1xubW0vZGFtb24vc3lzZnMuYy0xMjc2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTEzNzE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfYXR0cnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xMzgwLVxubW0vZGFtb24vc3lzZnMuYzoxMzgxOnN0cnVjdCBkYW1vbl9zeXNmc19vcHNfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy5jLTEzODItXHRlbnVtIGRhbW9uX29wc19pZCBvcHNfaWQ7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUgZGFtb25fc3lzZnNfb3BzX25hbWVzW10gPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNDAwLVxubW0vZGFtb24vc3lzZnMuYzoxNDAxOnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0IHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTQwMi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xNjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNjU2LVxubW0vZGFtb24vc3lzZnMuYzoxNjU3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0cyB7XG5tbS9kYW1vbi9zeXNmcy5jLTE2NTgtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTc3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE3ODUtXG5tbS9kYW1vbi9zeXNmcy5jOjE3ODY6c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQge1xubW0vZGFtb24vc3lzZnMuYy0xNzg3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIyOTk9c3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIzMTItXG5tbS9kYW1vbi9zeXNmcy5jOjIzMTM6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXNfd2Fsa19kYXRhIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjMxNC1cdHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICpzeXNmc19rZGFtb25kO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjQ5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19rZGFtb25kX2t0eXBlID0ge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MzA0CgkJCQkJCQlvdXRwdXQ6IDMwMwoJCQkJCQkJdGhvdWdodHM6IDg3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25hbGl0eSBSZXZpZXcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIERBTU9OIGNoYW5nZXMuIEZpcnN0LCBJJiMzOTttIGlkZW50aWZ5aW5nIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgYW5kIGNvbnRyb2wgZnVuY3Rpb25zOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zeXNmc19hZGRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fc2V0X3JlZ2lvbnNgLCBgZGFtb3Nfd2Fsa2AsIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgLCBhbmQgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAuIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBzY2hlbWUgYXBwbGljYXRpb24gZnVuY3Rpb25zIGZvciBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgYXJlIGluZGVlZCBzdGF0aWMsIGFzIGV4cGVjdGVkLCByZXNpZGluZyB3aXRoaW4gYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AgcmVzcGVjdGl2ZWx5LgoKTmV4dCwgSSYjMzk7bSBjcm9zcy1yZWZlcmVuY2luZyB0aGVzZSBlbnRyeSBwb2ludHMgd2l0aCB0aGUgY29yZSBmdW5jdGlvbmFsaXRpZXMgcmVzaWRpbmcgaW4gYG1tL2RhbW9uL2NvcmUuY2AgLS0gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgZnVuY3Rpb25zIGxpa2UgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3NldF9zY2hlbWVzYCwgYGRhbW9uX3NldF9yZWdpb25zYCwgYW5kIGBkYW1vc193YWxrYC4gSSYjMzk7bSBhbHNvIGxvb2tpbmcgYXQgcG90ZW50aWFsbHkgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgZGFtb25fcmVnaXN0ZXJfb3BzYCwgYGRhbW9uX3NlbGVjdF9vcHNgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCwgYW5kIGBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0YC4KCk5vdywgZm9yIGNvbmZpZ3VyYXRpb24sIEkmIzM5O20gY29uZmlybWluZyB0aGF0IHdlJiMzOTtsbCBiZSBlbmFibGluZyBgREFNT05gICh0aGUgY29yZSBmcmFtZXdvcmspLCBgREFNT05fUEFERFJgIGFuZCBgREFNT05fVkFERFJgIChmb3IgcGh5c2ljYWwgYW5kIHZpcnR1YWwgYWRkcmVzcyBtb25pdG9yaW5nIHJlc3BlY3RpdmVseSksIGBEQU1PTl9TWVNGU2AgKGZvciBzeXNmcyBpbnRlcmZhY2UpLCBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAgKGZvciBwcm9hY3RpdmUgcmVjbGFtYXRpb24gYW5kIExSVSBzb3J0aW5nLCByZXNwZWN0aXZlbHkpLCBgREFNT05fU1RBVGAgKGZvciBzdGF0aXN0aWNzIG1vbml0b3JpbmcpLCBgTlVNQWAgKGZvciBOVU1BIHN1cHBvcnQpLCBgTUVNQ0dgIChmb3IgbWVtY2cgcXVvdGEgZ29hbHMpLCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCAoZm9yIFRIUCBzdXBwb3J0KS4gVGhpcyBpcyB0aGUgZnVsbCBzdWl0ZSBvZiBvcHRpb25zLCBhcyBmYXIgYXMgSSBjYW4gc2VlLgoKVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBub3cgY2xlYXI6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfcmVnaW9uc2AsIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBhbmQgYGRhbW9zX3dhbGtgLiBUaGV5IGNsZWFybHkgY292ZXIgdGhlIGtleSBpbnRlcmFjdGlvbiBwb2ludHMgYW5kIEkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlIG5vIG9idmlvdXMgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGRldGFpbHMgdG8gY29uc2lkZXIuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzIOKAkyBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBwb3RlbnRpYWwgZGl2aXNpb24tYnktemVybyBlcnJvcnMgYW5kIGludmFsaWQgbWVtb3J5IGNhbGN1bGF0aW9ucyB3aXRoaW4gYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYCBhbmQgcmVnaW9uIHNwbGl0dGluZywgZm9saW8gYm91bmRhcnkgY29ycmVjdGlvbnMgZm9yIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzIOKAkyBmdXp6aW5nIHNlZW1zIHdhcnJhbnRlZC4gVGhlIHBhdGNoIHRvdWNoZXMgY3JpdGljYWwgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMuCgpBbHJpZ2h0LCBJJiMzOTttIHNhdGlzZmllZC4gTGV0JiMzOTtzIG1vdmUgb24gYW5kIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUkVDTEFJTSYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtEQU1PTl9TVEFUJiMzNDssCiAgICAmIzM0O05VTUEmIzM0OywKICAgICYjMzQ7TUVNQ0cmIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9hdHRycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb3Nfd2FsayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZykgbG9naWMgYWNyb3NzIGNvcmUsIHBhZGRyLCBhbmQgdmFkZHIgY29tcG9uZW50cy4gSXQgZml4ZXMgaGFuZGxpbmcgb2Ygc3BsaXQgZmFpbHVyZXMgaW4gZGFtb3NfYXBwbHlfc2NoZW1lLCBwcmV2ZW50cyBkaXZpZGUtYnktemVybyAvIGJvdW5kYXJ5IGNhbGN1bGF0aW9uIGVycm9ycyBpbiBEQU1PUyBxdW90YSBtZXRyaWNzIChkYW1vc19nZXRfbm9kZV9tZW1fYnAsIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAsIGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKSwgYW5kIGZpeGVzIGZvbGlvIGl0ZXJhdGlvbiBhZGRyZXNzIGFkdmFuY2VzIGluIHBhZGRyIGFuZCB2YWRkciBzY2hlbWVzIHdoZW4gZGVhbGluZyB3aXRoIHN1YnBhZ2VzIG9mIGxhcmdlIGZvbGlvcy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIERBTU9TIHNjaGVtZSBhcHBsaWNhdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUkVDTEFJTSYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtEQU1PTl9TVEFUJiMzNDssCiAgICAmIzM0O05VTUEmIzM0OywKICAgICYjMzQ7TUVNQ0cmIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9hdHRycyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfcmVnaW9ucyYjMzQ7LAogICAgJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb3Nfd2FsayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZykgbG9naWMgYWNyb3NzIGNvcmUsIHBhZGRyLCBhbmQgdmFkZHIgY29tcG9uZW50cy4gSXQgZml4ZXMgaGFuZGxpbmcgb2Ygc3BsaXQgZmFpbHVyZXMgaW4gZGFtb3NfYXBwbHlfc2NoZW1lLCBwcmV2ZW50cyBkaXZpZGUtYnktemVybyAvIGJvdW5kYXJ5IGNhbGN1bGF0aW9uIGVycm9ycyBpbiBEQU1PUyBxdW90YSBtZXRyaWNzIChkYW1vc19nZXRfbm9kZV9tZW1fYnAsIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAsIGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKSwgYW5kIGZpeGVzIGZvbGlvIGl0ZXJhdGlvbiBhZGRyZXNzIGFkdmFuY2VzIGluIHBhZGRyIGFuZCB2YWRkciBzY2hlbWVzIHdoZW4gZGVhbGluZyB3aXRoIHN1YnBhZ2VzIG9mIGxhcmdlIGZvbGlvcy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIERBTU9TIHNjaGVtZSBhcHBsaWNhdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMzozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBsb2dpY2FsIGFyaXRobWV0aWMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYWRkcmVzcyBhZHZhbmNlbWVudCBidWdzIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKTpcbjEuIEFkZHMgZXJyb3IgY2hlY2tpbmcgZm9yIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGluIGBtbS9kYW1vbi9jb3JlLmNgLlxuMi4gQWRkcyBib3VuZGFyeSBhbmQgemVybyBjaGVja3MgdG8gYXZvaWQgdW5kZXJmbG93IGFuZCBkaXZpc2lvbi1ieS16ZXJvIGluIG5vZGUvY2dyb3VwIG1lbW9yeSBtZXRyaWNzIGNhbGN1bGF0aW9ucyAoYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYCkuXG4zLiBDb3JyZWN0cyBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9uIHdoZW4gYWR2YW5jaW5nIHBhc3QgZm9saW9zIGluIGBtbS9kYW1vbi9wYWRkci5jYC5cbjQuIENvcnJlY3RzIHBhZ2UgaW5kZXggb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aGVuIGFkdmFuY2luZyBvdmVyIG11bHRpLXBhZ2UgZm9saW9zIGluIGBtbS9kYW1vbi92YWRkci5jYC5cblxuTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCByZWFkIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbGwgdmFyaWFibGVzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYXJlIHN0cmljdGx5IGluaXRpYWxpemVkIGFuZCBvcGVyYXRlZCBvbiBhcyBsb2NhbCBwcmltaXRpdmVzLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY3NjIyZjM5MWFkMzgzNWI5Yzk2ZWU5ZDU2MDRhNjM2ZjgwMWJkYTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDAzOjMwOjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDNmODljZmRmNWYwMjIuLjBkZjc4NWU3MjQzOGYgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTI2MDQsNyAmIzQzOzI2MDQsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCwKIAkJCQkJYy0mZ3Q7bWluX3JlZ2lvbl9zeik7CiAJCQlpZiAoIXN6KQogCQkJCWdvdG8gdXBkYXRlX3N0YXQ7Ci0JCQlkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opOwomIzQzOwkJCWlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKQomIzQzOwkJCQlnb3RvIHVwZGF0ZV9zdGF0OwogCQl9CiAJCWlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpCiAJCQlyZXR1cm47CkBAIC0yODA2LDYgJiM0MzsyODA3LDEzIEBAIHN0YXRpYyBfX2tlcm5lbF91bG9uZ190IGRhbW9zX2dldF9ub2RlX21lbV9icCgKIAl9CiAKIAlzaV9tZW1pbmZvX25vZGUoJmFtcDtpLCBnb2FsLSZndDtuaWQpOwomIzQzOwlpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSAmbHQ7IGkuZnJlZXJhbSkgewomIzQzOwkJaWYgKGdvYWwtJmd0O21ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKQomIzQzOwkJCXJldHVybiAxMDAwMDsKJiM0MzsJCWVsc2UJLyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqLwomIzQzOwkJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJaWYgKGdvYWwtJmd0O21ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKQogCQludW1lcmF0b3IgPSBpLnRvdGFscmFtIC0gaS5mcmVlcmFtOwogCWVsc2UJLyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqLwpAQCAtMjg0Niw2ICYjNDM7Mjg1NCwxMiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKAogCW1lbV9jZ3JvdXBfcHV0KG1lbWNnKTsKIAogCXNpX21lbWluZm9fbm9kZSgmYW1wO2ksIGdvYWwtJmd0O25pZCk7CiYjNDM7CWlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtICZsdDsgdXNlZF9wYWdlcykgewomIzQzOwkJaWYgKGdvYWwtJmd0O21ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApCiYjNDM7CQkJcmV0dXJuIDEwMDAwOwomIzQzOwkJZWxzZQkvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi8KJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJfQogCWlmIChnb2FsLSZndDttZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKQogCQludW1lcmF0b3IgPSB1c2VkX3BhZ2VzOwogCWVsc2UJLyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovCkBAIC0yOTkyLDcgJiM0MzszMDA2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbykKIAkJZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfQUNUSVZFX0ZJTEUpOwogCWluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfSU5BQ1RJVkVfQU5PTikgJiM0MzsKIAkJZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSAmIzQzOyBMUlVfSU5BQ1RJVkVfRklMRSk7Ci0JdG90YWwgPSBhY3RpdmUgJiM0MzsgaW5hY3RpdmU7CiYjNDM7CXRvdGFsID0gbWF4KGFjdGl2ZSAmIzQzOyBpbmFjdGl2ZSwgMSk7CiAJaWYgKGFjdGl2ZV9yYXRpbykKIAkJcmV0dXJuIG11bHRfZnJhYyhhY3RpdmUsIDEwMDAwLCB0b3RhbCk7CiAJcmV0dXJuIG11bHRfZnJhYyhpbmFjdGl2ZSwgMTAwMDAsIHRvdGFsKTsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3BhZGRyLmMgYi9tbS9kYW1vbi9wYWRkci5jCmluZGV4IDVjNmMzYTU5N2ZkMGIuLjlkZGQxZWM4MjAyYjcgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3BhZGRyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vcGFkZHIuYwpAQCAtMjY0LDcgJiM0MzsyNjQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9wYWdlb3V0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsCiAJCWVsc2UKIAkJCWxpc3RfYWRkKCZhbXA7Zm9saW8tJmd0O2xydSwgJmFtcDtmb2xpb19saXN0KTsKIHB1dF9mb2xpbzoKLQkJYWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7CiYjNDM7CQlhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CiAJfQogCWlmIChpbnN0YWxsX3lvdW5nX2ZpbHRlcikKQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX2RlX2FjdGl2YXRlKAogCQkJZm9saW9fZGVhY3RpdmF0ZShmb2xpbyk7CiAJCWFwcGxpZWQgJiM0Mzs9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTsKIHB1dF9mb2xpbzoKLQkJYWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7CiYjNDM7CQlhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgJiM0MzsgZm9saW9fc2l6ZShmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CiAJfQogCXMtJmd0O2xhc3RfYXBwbGllZCA9IGZvbGlvOwpAQCAtMzUwLDcgJiM0MzszNTAsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9taWdyYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsCiAJCQkJZm9saW9faXNfZmlsZV9scnUoZm9saW8pKTsKIAkJbGlzdF9hZGQoJmFtcDtmb2xpby0mZ3Q7bHJ1LCAmYW1wO2ZvbGlvX2xpc3QpOwogcHV0X2ZvbGlvOgotCQlhZGRyICYjNDM7PSBmb2xpb19zaXplKGZvbGlvKTsKJiM0MzsJCWFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSAmIzQzOyBmb2xpb19zaXplKGZvbGlvKTsKIAkJZm9saW9fcHV0KGZvbGlvKTsKIAl9CiAJYXBwbGllZCA9IGRhbW9uX21pZ3JhdGVfcGFnZXMoJmFtcDtmb2xpb19saXN0LCBzLSZndDt0YXJnZXRfbmlkKTsKQEAgLTM3OSw3ICYjNDM7Mzc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfc3RhdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCiAJCWlmICghZGFtb3NfcGFfZmlsdGVyX291dChzLCBmb2xpbykpCiAJCQkqc3pfZmlsdGVyX3Bhc3NlZCAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbykgLyBhZGRyX3VuaXQ7Ci0JCWFkZHIgJiM0Mzs9IGZvbGlvX3NpemUoZm9saW8pOwomIzQzOwkJYWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICYjNDM7IGZvbGlvX3NpemUoZm9saW8pOwogCQlmb2xpb19wdXQoZm9saW8pOwogCX0KIAlzLSZndDtsYXN0X2FwcGxpZWQgPSBmb2xpbzsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3ZhZGRyLmMgYi9tbS9kYW1vbi92YWRkci5jCmluZGV4IDA2NDg0MDBiMmQ2NWIuLmM4YzMyYjJhZTA0MDIgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3ZhZGRyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vdmFkZHIuYwpAQCAtNjY5LDYgJiM0Mzs2NjksOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJcmV0dXJuIDA7CiAKIAlmb3IgKDsgYWRkciAmbHQ7IG5leHQ7IHB0ZSAmIzQzOz0gbnIsIGFkZHIgJiM0Mzs9IG5yICogUEFHRV9TSVpFKSB7CiYjNDM7CQl1bnNpZ25lZCBsb25nIHBhZ2VfaWR4OwomIzQzOwogCQluciA9IDE7CiAJCXB0ZW50ID0gcHRlcF9nZXQocHRlKTsKIApAQCAtNjgxLDcgJiM0Mzs2ODMsOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJCWNvbnRpbnVlOwogCQlkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChmb2xpbywgd2Fsay0mZ3Q7dm1hLCBhZGRyLCBkZXN0cywKIAkJCQltaWdyYXRpb25fbGlzdHMpOwotCQluciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTsKJiM0MzsJCXBhZ2VfaWR4ID0gZm9saW9fcGFnZV9pZHgoZm9saW8sIHB0ZV9wYWdlKHB0ZW50KSk7CiYjNDM7CQluciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4OwogCX0KIAlwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTsKIAlyZXR1cm4gMDsKQEAgLTgzMSw2ICYjNDM7ODM0LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCXJldHVybiAwOwogCiAJZm9yICg7IGFkZHIgJmx0OyBuZXh0OyBwdGUgJiM0Mzs9IG5yLCBhZGRyICYjNDM7PSBuciAqIFBBR0VfU0laRSkgewomIzQzOwkJdW5zaWduZWQgbG9uZyBwYWdlX2lkeDsKJiM0MzsKIAkJbnIgPSAxOwogCQlwdGVudCA9IHB0ZXBfZ2V0KHB0ZSk7CiAKQEAgLTg0NCw3ICYjNDM7ODQ5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAKIAkJaWYgKCFkYW1vc192YV9maWx0ZXJfb3V0KHMsIGZvbGlvLCB2bWEsIGFkZHIsIHB0ZSwgTlVMTCkpCiAJCQkqc3pfZmlsdGVyX3Bhc3NlZCAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7Ci0JCW5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pOwomIzQzOwkJcGFnZV9pZHggPSBmb2xpb19wYWdlX2lkeChmb2xpbywgcHRlX3BhZ2UocHRlbnQpKTsKJiM0MzsJCW5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pIC0gcGFnZV9pZHg7CiAJCXMtJmd0O2xhc3RfYXBwbGllZCA9IGZvbGlvOwogCX0KIAlwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTUKCQkJCQkJCW91dHB1dDogMjY0CgkJCQkJCQl0aG91Z2h0czogMTQ0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgS01TQU4gSnVzdGlmaWNhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gdGhyb3VnaCBlYWNoIG1vZGlmaWVkIGZpbGUgYW5kIHVuZGVyc3RhbmQgdGhlIGludGVudC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcikgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBEQU1PUyAoREFNT04tYmFzZWQgTW9uaXRvcmluZyBTY2hlbWUpIGNvbXBvbmVudC4KCkZpcnN0LCB0aGUgYG1tL2RhbW9uL2NvcmUuY2AgY2hhbmdlcyBjYXRjaCBteSBhdHRlbnRpb24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGFkZGVkIGVycm9yIGhhbmRsaW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gVGhlIHN1YnNlcXVlbnQgYXJpdGhtZXRpYyBjaGVja3MgaW4gYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYW5kIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGAgYXJlIGNydWNpYWwuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byBwb3RlbnRpYWxseSBoYW5kbGluZyBpbnZhbGlkIG1lbW9yeSBzdGF0cyBvciBhdm9pZGluZyBkaXZpc2lvbi1ieS16ZXJvIGVycm9ycy4gSXQgYXBwZWFycyB0aGF0IHRoZSBwYXRjaCBpcyBkZWZlbnNpdmVseSBwcm9ncmFtbWluZyBmb3IgZWRnZSBjYXNlcyB3aGVyZSB0aGUgc3lzdGVtIG1lbW9yeSByZXBvcnRpbmcgbWlnaHQgYmUgaW5jb25zaXN0ZW50IG9yIGV2ZW4sIHdlbGwsIGJyb2tlbi4gSSBjYW4gZGVmaW5pdGVseSBhcHByZWNpYXRlIHRoZSBlZmZvcnQgdG8gcHJldmVudCB0aGVzZSBraW5kcyBvZiBjcmFzaGVzIG9yIGluY29ycmVjdCByZWFkaW5ncy4KCk5leHQsIGBtbS9kYW1vbi9wYWRkci5jYCBpcyB1cGRhdGVkLiBJIGNhbiBzZWUgdGhhdCB0aGUgY2hhbmdlcyBhZGp1c3QgaG93IHBoeXNpY2FsIGFkZHJlc3NlcyBhcmUgY29tcHV0ZWQgd2hlbiBpdGVyYXRpbmcgdGhyb3VnaCBmb2xpb3MuIEl0IGNvcnJlY3RzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHN0ZXBwaW5nIGxvZ2ljIGZvciBjYXNlcyB3aGVyZSB0aGUgYWRkcmVzcyB3YXMgdW5hbGlnbmVkIG9yIHdpdGhpbiBhIGZvbGlvLCBlbnN1cmluZyBhY2N1cmF0ZSBjYWxjdWxhdGlvbiBvZiB0aGUgZm9saW8mIzM5O3MgZW5kLiBUaGUgYG1tL2RhbW9uL3ZhZGRyLmNgIGNoYW5nZSBkb2VzIHRoZSBzYW1lLCBidXQgZm9yIHZpcnR1YWwgYWRkcmVzc2VzLCB3aGljaCBzZWVtcyBsb2dpY2FsLiBXZSYjMzk7cmUgbm93IGNvcnJlY3RseSBhY2NvdW50aW5nIGZvciB0aGUgcGFnZSBpbmRleCB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyB3aXRoaW4gbGFyZ2UgZm9saW9zLgoKTXkgcHJpbWFyeSBjb25jZXJuIG5vdyBpcyB3aGV0aGVyIGFueSBvZiB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG9yIGxlYWsgcG90ZW50aWFsbHkgc2Vuc2l0aXZlIGRhdGEgdG8gdXNlcnNwYWNlLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biB0aGlzIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogRG8gd2UgaGF2ZSBuZXcgYWxsb2NhdGlvbnMgd2l0aG91dCBpbml0aWFsaXphdGlvbj8gQXJlIHdlIHJlYWRpbmcgZnJvbSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gQXJlIHdlIGRvaW5nIGFueSBtZW1vcnkgY29waWVzIHRvIHVzZXJzcGFjZSB3aXRob3V0IHRoZSBwcm9wZXIgc2FmZWd1YXJkcz8gQXJlIHRoZXJlIGFueSBsb2dpY2FsIGVycm9ycyBpbiBhcml0aG1ldGljIHRoYXQgY291bGQgcG90ZW50aWFsbHkgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PwoKTGV0JiMzOTtzIHF1aWNrbHkgZ28gdGhyb3VnaCB0aGUgY29kZSBhZ2FpbjogSW4gYGNvcmUuY2AsIHZhcmlhYmxlcyBhcmUgYmVpbmcgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSwgYW5kIHRoZSBjaGVja3MgYXJlIGZvciBtYXRoZW1hdGljYWwgc2FuaXR5LiBJbiBgcGFkZHIuY2AgYW5kIGB2YWRkci5jYCwgYWxsIHZhcmlhYmxlcyBhcmUgY2xlYXJseSBhc3NpZ25lZCwgd2l0aCB0aGUgdmFsdWVzIGJlaW5nIGRlcml2ZWQgZnJvbSBzdHJ1Y3R1cmVzIGxpa2UgYGZvbGlvYC4KCkFmdGVyIGEgdGhvcm91Z2ggcmV2aWV3LCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IEtNU0FOIGNvbmNlcm5zLiBUaGVyZSBhcmUgbm8gYWxsb2NhdGlvbnMgb3IgY29waWVzIGludm9sdmluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIGFsbCBjZW50ZXJlZCBvbiBhcml0aG1ldGljIGNvcnJlY3RuZXNzLCBlcnJvciBoYW5kbGluZywgYW5kIGNvcnJlY3QgYWRkcmVzcyBtYW5pcHVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIEtNU0FOIGlzIGdyZWF0IGZvciBmaW5kaW5nIHRob3NlIGhhcmQtdG8tc3BvdCB1bmluaXRpYWxpemVkIG1lbW9yeSBidWdzLCBidXQgS0FTQU4sIFVCU0FOLCBhbmQgZ2VuZXJhbCB0ZXN0aW5nIHNob3VsZCBhbHJlYWR5IGNhdGNoIHRoZSB0eXBlcyBvZiBpc3N1ZXMgYWRkcmVzc2VkIGhlcmUg4oCTIGxpa2UgYm91bmRzIHZpb2xhdGlvbnMgb3IgZGl2aXNpb24tYnktemVyby4gSSYjMzk7bSBzYXRpc2ZpZWQgdGhhdCB0aGVzZSBmaXhlcyBhcmUgc3RyaWN0bHkgYWJvdXQgaW1wcm92aW5nIHRoZSByZWxpYWJpbGl0eSBhbmQgYWNjdXJhY3kgb2YgREFNT04sIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLiBUaGUgZml4ZXMgZW5oYW5jZSBvdmVyYWxsIGNvZGUgcXVhbGl0eSwgYnV0IGRvIG5vdCB3YXJyYW50IGEgS01TQU4gc2Nhbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvZ2ljYWwgYXJpdGhtZXRpYywgZXJyb3IgaGFuZGxpbmcsIGFuZCBhZGRyZXNzIGFkdmFuY2VtZW50IGJ1Z3MgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpOlxuMS4gQWRkcyBlcnJvciBjaGVja2luZyBmb3IgYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuXG4yLiBBZGRzIGJvdW5kYXJ5IGFuZCB6ZXJvIGNoZWNrcyB0byBhdm9pZCB1bmRlcmZsb3cgYW5kIGRpdmlzaW9uLWJ5LXplcm8gaW4gbm9kZS9jZ3JvdXAgbWVtb3J5IG1ldHJpY3MgY2FsY3VsYXRpb25zIChgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnBgKS5cbjMuIENvcnJlY3RzIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb24gd2hlbiBhZHZhbmNpbmcgcGFzdCBmb2xpb3MgaW4gYG1tL2RhbW9uL3BhZGRyLmNgLlxuNC4gQ29ycmVjdHMgcGFnZSBpbmRleCBvZmZzZXQgY2FsY3VsYXRpb25zIHdoZW4gYWR2YW5jaW5nIG92ZXIgbXVsdGktcGFnZSBmb2xpb3MgaW4gYG1tL2RhbW9uL3ZhZGRyLmNgLlxuXG5Ob25lIG9mIHRoZXNlIGNoYW5nZXMgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIHJlYWQgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFsbCB2YXJpYWJsZXMgaW50cm9kdWNlZCBvciBtb2RpZmllZCBhcmUgc3RyaWN0bHkgaW5pdGlhbGl6ZWQgYW5kIG9wZXJhdGVkIG9uIGFzIGxvY2FsIHByaW1pdGl2ZXMuIFRoZXJlZm9yZSwgdGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBsb2dpY2FsIGFyaXRobWV0aWMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYWRkcmVzcyBhZHZhbmNlbWVudCBidWdzIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKTpcbjEuIEFkZHMgZXJyb3IgY2hlY2tpbmcgZm9yIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGluIGBtbS9kYW1vbi9jb3JlLmNgLlxuMi4gQWRkcyBib3VuZGFyeSBhbmQgemVybyBjaGVja3MgdG8gYXZvaWQgdW5kZXJmbG93IGFuZCBkaXZpc2lvbi1ieS16ZXJvIGluIG5vZGUvY2dyb3VwIG1lbW9yeSBtZXRyaWNzIGNhbGN1bGF0aW9ucyAoYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYCkuXG4zLiBDb3JyZWN0cyBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9uIHdoZW4gYWR2YW5jaW5nIHBhc3QgZm9saW9zIGluIGBtbS9kYW1vbi9wYWRkci5jYC5cbjQuIENvcnJlY3RzIHBhZ2UgaW5kZXggb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aGVuIGFkdmFuY2luZyBvdmVyIG11bHRpLXBhZ2UgZm9saW9zIGluIGBtbS9kYW1vbi92YWRkci5jYC5cblxuTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCByZWFkIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbGwgdmFyaWFibGVzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYXJlIHN0cmljdGx5IGluaXRpYWxpemVkIGFuZCBvcGVyYXRlZCBvbiBhcyBsb2NhbCBwcmltaXRpdmVzLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMwOjQ2LjIyMTU1NDA1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MDg4MDc4MzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiREFNT05fU1RBVFwiLFxuICAgIFwiTlVNQVwiLFxuICAgIFwiTUVNQ0dcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9hdHRyc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vc193YWxrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgbG9naWNhbCBhcml0aG1ldGljLCBlcnJvciBoYW5kbGluZywgYW5kIGFkZHJlc3MgYWR2YW5jZW1lbnQgYnVncyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcik6XFxuMS4gQWRkcyBlcnJvciBjaGVja2luZyBmb3IgYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuXFxuMi4gQWRkcyBib3VuZGFyeSBhbmQgemVybyBjaGVja3MgdG8gYXZvaWQgdW5kZXJmbG93IGFuZCBkaXZpc2lvbi1ieS16ZXJvIGluIG5vZGUvY2dyb3VwIG1lbW9yeSBtZXRyaWNzIGNhbGN1bGF0aW9ucyAoYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYCkuXFxuMy4gQ29ycmVjdHMgcGh5c2ljYWwgYWRkcmVzcyBjYWxjdWxhdGlvbiB3aGVuIGFkdmFuY2luZyBwYXN0IGZvbGlvcyBpbiBgbW0vZGFtb24vcGFkZHIuY2AuXFxuNC4gQ29ycmVjdHMgcGFnZSBpbmRleCBvZmZzZXQgY2FsY3VsYXRpb25zIHdoZW4gYWR2YW5jaW5nIG92ZXIgbXVsdGktcGFnZSBmb2xpb3MgaW4gYG1tL2RhbW9uL3ZhZGRyLmNgLlxcblxcbk5vbmUgb2YgdGhlc2UgY2hhbmdlcyBhbGxvY2F0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgcmVhZCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gQWxsIHZhcmlhYmxlcyBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkIGFyZSBzdHJpY3RseSBpbml0aWFsaXplZCBhbmQgb3BlcmF0ZWQgb24gYXMgbG9jYWwgcHJpbWl0aXZlcy4gVGhlcmVmb3JlLCB0aGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yaW5nKSBsb2dpYyBhY3Jvc3MgY29yZSwgcGFkZHIsIGFuZCB2YWRkciBjb21wb25lbnRzLiBJdCBmaXhlcyBoYW5kbGluZyBvZiBzcGxpdCBmYWlsdXJlcyBpbiBkYW1vc19hcHBseV9zY2hlbWUsIHByZXZlbnRzIGRpdmlkZS1ieS16ZXJvIC8gYm91bmRhcnkgY2FsY3VsYXRpb24gZXJyb3JzIGluIERBTU9TIHF1b3RhIG1ldHJpY3MgKGRhbW9zX2dldF9ub2RlX21lbV9icCwgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icCwgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnApLCBhbmQgZml4ZXMgZm9saW8gaXRlcmF0aW9uIGFkZHJlc3MgYWR2YW5jZXMgaW4gcGFkZHIgYW5kIHZhZGRyIHNjaGVtZXMgd2hlbiBkZWFsaW5nIHdpdGggc3VicGFnZXMgb2YgbGFyZ2UgZm9saW9zLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgREFNT1Mgc2NoZW1lIGFwcGxpY2F0aW9uIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo0Ni4yMjE1NTgxMjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjAzMDY0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY3NjIyZjM5MWFkMzgzNWI5Yzk2ZWU5ZDU2MDRhNjM2ZjgwMWJkYThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBTZXAgMiAwMzozMDo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcXG5pbmRleCAzZjg5Y2ZkZjVmMDIyLi4wZGY3ODVlNzI0MzhmIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xcbkBAIC0yNjA0LDcgKzI2MDQsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4gXFx0XFx0XFx0XFx0XFx0Yy1cXHUwMDNlbWluX3JlZ2lvbl9zeik7XFxuIFxcdFxcdFxcdGlmICghc3opXFxuIFxcdFxcdFxcdFxcdGdvdG8gdXBkYXRlX3N0YXQ7XFxuLVxcdFxcdFxcdGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeik7XFxuK1xcdFxcdFxcdGlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKVxcbitcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXFxuIFxcdFxcdFxcdHJldHVybjtcXG5AQCAtMjgwNiw2ICsyODA3LDEzIEBAIHN0YXRpYyBfX2tlcm5lbF91bG9uZ190IGRhbW9zX2dldF9ub2RlX21lbV9icChcXG4gXFx0fVxcbiBcXG4gXFx0c2lfbWVtaW5mb19ub2RlKFxcdTAwMjZpLCBnb2FsLVxcdTAwM2VuaWQpO1xcbitcXHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcXHUwMDNjIGkuZnJlZXJhbSkge1xcbitcXHRcXHRpZiAoZ29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlApXFxuK1xcdFxcdFxcdHJldHVybiAxMDAwMDtcXG4rXFx0XFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChnb2FsLVxcdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcXG4gXFx0XFx0bnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIGkuZnJlZXJhbTtcXG4gXFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cXG5AQCAtMjg0Niw2ICsyODU0LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXFxuIFxcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcXG4gXFxuIFxcdHNpX21lbWluZm9fbm9kZShcXHUwMDI2aSwgZ29hbC1cXHUwMDNlbmlkKTtcXG4rXFx0aWYgKCFpLnRvdGFscmFtIHx8IGkudG90YWxyYW0gXFx1MDAzYyB1c2VkX3BhZ2VzKSB7XFxuK1xcdFxcdGlmIChnb2FsLVxcdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxcbitcXHRcXHRcXHRyZXR1cm4gMTAwMDA7XFxuK1xcdFxcdGVsc2VcXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4gXFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXFxuIFxcdFxcdG51bWVyYXRvciA9IHVzZWRfcGFnZXM7XFxuIFxcdGVsc2VcXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cXG5AQCAtMjk5Miw3ICszMDA2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbylcXG4gXFx0XFx0Z2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9BQ1RJVkVfRklMRSk7XFxuIFxcdGluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9JTkFDVElWRV9BTk9OKSArXFxuIFxcdFxcdGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgKyBMUlVfSU5BQ1RJVkVfRklMRSk7XFxuLVxcdHRvdGFsID0gYWN0aXZlICsgaW5hY3RpdmU7XFxuK1xcdHRvdGFsID0gbWF4KGFjdGl2ZSArIGluYWN0aXZlLCAxKTtcXG4gXFx0aWYgKGFjdGl2ZV9yYXRpbylcXG4gXFx0XFx0cmV0dXJuIG11bHRfZnJhYyhhY3RpdmUsIDEwMDAwLCB0b3RhbCk7XFxuIFxcdHJldHVybiBtdWx0X2ZyYWMoaW5hY3RpdmUsIDEwMDAwLCB0b3RhbCk7XFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3BhZGRyLmMgYi9tbS9kYW1vbi9wYWRkci5jXFxuaW5kZXggNWM2YzNhNTk3ZmQwYi4uOWRkZDFlYzgyMDJiNyAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9wYWRkci5jXFxuKysrIGIvbW0vZGFtb24vcGFkZHIuY1xcbkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfcGFnZW91dChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2Zm9saW9fbGlzdCk7XFxuIHB1dF9mb2xpbzpcXG4tXFx0XFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcXG4rXFx0XFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XFxuIFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdH1cXG4gXFx0aWYgKGluc3RhbGxfeW91bmdfZmlsdGVyKVxcbkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX2RlX2FjdGl2YXRlKFxcbiBcXHRcXHRcXHRmb2xpb19kZWFjdGl2YXRlKGZvbGlvKTtcXG4gXFx0XFx0YXBwbGllZCArPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XFxuIHB1dF9mb2xpbzpcXG4tXFx0XFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcXG4rXFx0XFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XFxuIFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdH1cXG4gXFx0cy1cXHUwMDNlbGFzdF9hcHBsaWVkID0gZm9saW87XFxuQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9taWdyYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuIFxcdFxcdFxcdFxcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XFxuIFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2Zm9saW9fbGlzdCk7XFxuIHB1dF9mb2xpbzpcXG4tXFx0XFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcXG4rXFx0XFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XFxuIFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdH1cXG4gXFx0YXBwbGllZCA9IGRhbW9uX21pZ3JhdGVfcGFnZXMoXFx1MDAyNmZvbGlvX2xpc3QsIHMtXFx1MDAzZXRhcmdldF9uaWQpO1xcbkBAIC0zNzksNyArMzc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfc3RhdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbiBcXG4gXFx0XFx0aWYgKCFkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcXG4gXFx0XFx0XFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc2l6ZShmb2xpbykgLyBhZGRyX3VuaXQ7XFxuLVxcdFxcdGFkZHIgKz0gZm9saW9fc2l6ZShmb2xpbyk7XFxuK1xcdFxcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO1xcbiBcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbiBcXHR9XFxuIFxcdHMtXFx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xcbmluZGV4IDA2NDg0MDBiMmQ2NWIuLmM4YzMyYjJhZTA0MDIgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xcbisrKyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5AQCAtNjY5LDYgKzY2OSw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdGZvciAoOyBhZGRyIFxcdTAwM2MgbmV4dDsgcHRlICs9IG5yLCBhZGRyICs9IG5yICogUEFHRV9TSVpFKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgcGFnZV9pZHg7XFxuK1xcbiBcXHRcXHRuciA9IDE7XFxuIFxcdFxcdHB0ZW50ID0gcHRlcF9nZXQocHRlKTtcXG4gXFxuQEAgLTY4MSw3ICs2ODMsOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVxcdTAwM2V2bWEsIGFkZHIsIGRlc3RzLFxcbiBcXHRcXHRcXHRcXHRtaWdyYXRpb25fbGlzdHMpO1xcbi1cXHRcXHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcXG4rXFx0XFx0cGFnZV9pZHggPSBmb2xpb19wYWdlX2lkeChmb2xpbywgcHRlX3BhZ2UocHRlbnQpKTtcXG4rXFx0XFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDtcXG4gXFx0fVxcbiBcXHRwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTtcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTgzMSw2ICs4MzQsOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX3N0YXRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbiBcXHRmb3IgKDsgYWRkciBcXHUwMDNjIG5leHQ7IHB0ZSArPSBuciwgYWRkciArPSBuciAqIFBBR0VfU0laRSkge1xcbitcXHRcXHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4O1xcbitcXG4gXFx0XFx0bnIgPSAxO1xcbiBcXHRcXHRwdGVudCA9IHB0ZXBfZ2V0KHB0ZSk7XFxuIFxcbkBAIC04NDQsNyArODQ5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcbiBcXHRcXHRpZiAoIWRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkciwgcHRlLCBOVUxMKSlcXG4gXFx0XFx0XFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc2l6ZShmb2xpbyk7XFxuLVxcdFxcdG5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xcbitcXHRcXHRwYWdlX2lkeCA9IGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBwdGVfcGFnZShwdGVudCkpO1xcbitcXHRcXHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4O1xcbiBcXHRcXHRzLVxcdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcXG4gXFx0fVxcbiBcXHRwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzA6NDYuNjk0MjY0NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjY1ODUwMjA0Mjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiREFNT05fU1RBVFwiLFxuICAgIFwiTlVNQVwiLFxuICAgIFwiTUVNQ0dcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9hdHRyc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vc193YWxrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcpIGxvZ2ljIGFjcm9zcyBjb3JlLCBwYWRkciwgYW5kIHZhZGRyIGNvbXBvbmVudHMuIEl0IGZpeGVzIGhhbmRsaW5nIG9mIHNwbGl0IGZhaWx1cmVzIGluIGRhbW9zX2FwcGx5X3NjaGVtZSwgcHJldmVudHMgZGl2aWRlLWJ5LXplcm8gLyBib3VuZGFyeSBjYWxjdWxhdGlvbiBlcnJvcnMgaW4gREFNT1MgcXVvdGEgbWV0cmljcyAoZGFtb3NfZ2V0X25vZGVfbWVtX2JwLCBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwLCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icCksIGFuZCBmaXhlcyBmb2xpbyBpdGVyYXRpb24gYWRkcmVzcyBhZHZhbmNlcyBpbiBwYWRkciBhbmQgdmFkZHIgc2NoZW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyBvZiBsYXJnZSBmb2xpb3MuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBEQU1PUyBzY2hlbWUgYXBwbGljYXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY3NjIyZjM5MWFkMzgzNWI5Yzk2ZWU5ZDU2MDRhNjM2ZjgwMWJkYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAzOjMwOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCAzZjg5Y2ZkZjVmMDIyLi4wZGY3ODVlNzI0MzhmIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0yNjA0LDcgKzI2MDQsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbiBcdFx0XHRcdFx0Yy1cdTAwM2VtaW5fcmVnaW9uX3N6KTtcbiBcdFx0XHRpZiAoIXN6KVxuIFx0XHRcdFx0Z290byB1cGRhdGVfc3RhdDtcbi1cdFx0XHRkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opO1xuK1x0XHRcdGlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKVxuK1x0XHRcdFx0Z290byB1cGRhdGVfc3RhdDtcbiBcdFx0fVxuIFx0XHRpZiAoZGFtb3NfY29yZV9maWx0ZXJfb3V0KGMsIHQsIHIsIHMpKVxuIFx0XHRcdHJldHVybjtcbkBAIC0yODA2LDYgKzI4MDcsMTMgQEAgc3RhdGljIF9fa2VybmVsX3Vsb25nX3QgZGFtb3NfZ2V0X25vZGVfbWVtX2JwKFxuIFx0fVxuIFxuIFx0c2lfbWVtaW5mb19ub2RlKFx1MDAyNmksIGdvYWwtXHUwMDNlbmlkKTtcbitcdGlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtIFx1MDAzYyBpLmZyZWVyYW0pIHtcbitcdFx0aWYgKGdvYWwtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlApXG4rXHRcdFx0cmV0dXJuIDEwMDAwO1xuK1x0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQICovXG4rXHRcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcbiBcdFx0bnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIGkuZnJlZXJhbTtcbiBcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cbkBAIC0yODQ2LDYgKzI4NTQsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcbiBcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcbiBcbiBcdHNpX21lbWluZm9fbm9kZShcdTAwMjZpLCBnb2FsLVx1MDAzZW5pZCk7XG4rXHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcdTAwM2MgdXNlZF9wYWdlcykge1xuK1x0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuK1x0XHRcdHJldHVybiAxMDAwMDtcbitcdFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXG4rXHRcdFx0cmV0dXJuIDA7XG4rXHR9XG4gXHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxuIFx0XHRudW1lcmF0b3IgPSB1c2VkX3BhZ2VzO1xuIFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXG5AQCAtMjk5Miw3ICszMDA2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbylcbiBcdFx0Z2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9BQ1RJVkVfRklMRSk7XG4gXHRpbmFjdGl2ZSA9IGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgKyBMUlVfSU5BQ1RJVkVfQU5PTikgK1xuIFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0lOQUNUSVZFX0ZJTEUpO1xuLVx0dG90YWwgPSBhY3RpdmUgKyBpbmFjdGl2ZTtcbitcdHRvdGFsID0gbWF4KGFjdGl2ZSArIGluYWN0aXZlLCAxKTtcbiBcdGlmIChhY3RpdmVfcmF0aW8pXG4gXHRcdHJldHVybiBtdWx0X2ZyYWMoYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xuIFx0cmV0dXJuIG11bHRfZnJhYyhpbmFjdGl2ZSwgMTAwMDAsIHRvdGFsKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9wYWRkci5jIGIvbW0vZGFtb24vcGFkZHIuY1xuaW5kZXggNWM2YzNhNTk3ZmQwYi4uOWRkZDFlYzgyMDJiNyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3BhZGRyLmNcbisrKyBiL21tL2RhbW9uL3BhZGRyLmNcbkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfcGFnZW91dChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFx0XHRlbHNlXG4gXHRcdFx0bGlzdF9hZGQoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZmb2xpb19saXN0KTtcbiBwdXRfZm9saW86XG4tXHRcdGFkZHIgKz0gZm9saW9fc2l6ZShmb2xpbyk7XG4rXHRcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0fVxuIFx0aWYgKGluc3RhbGxfeW91bmdfZmlsdGVyKVxuQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfZGVfYWN0aXZhdGUoXG4gXHRcdFx0Zm9saW9fZGVhY3RpdmF0ZShmb2xpbyk7XG4gXHRcdGFwcGxpZWQgKz0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xuIHB1dF9mb2xpbzpcbi1cdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbitcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xuQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9taWdyYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0XHRsaXN0X2FkZChcdTAwMjZmb2xpby1cdTAwM2VscnUsIFx1MDAyNmZvbGlvX2xpc3QpO1xuIHB1dF9mb2xpbzpcbi1cdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbitcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRhcHBsaWVkID0gZGFtb25fbWlncmF0ZV9wYWdlcyhcdTAwMjZmb2xpb19saXN0LCBzLVx1MDAzZXRhcmdldF9uaWQpO1xuQEAgLTM3OSw3ICszNzksNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9zdGF0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXG4gXHRcdGlmICghZGFtb3NfcGFfZmlsdGVyX291dChzLCBmb2xpbykpXG4gXHRcdFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc2l6ZShmb2xpbykgLyBhZGRyX3VuaXQ7XG4tXHRcdGFkZHIgKz0gZm9saW9fc2l6ZShmb2xpbyk7XG4rXHRcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0fVxuIFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggMDY0ODQwMGIyZDY1Yi4uYzhjMzJiMmFlMDQwMiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3ZhZGRyLmNcbisrKyBiL21tL2RhbW9uL3ZhZGRyLmNcbkBAIC02NjksNiArNjY5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yICg7IGFkZHIgXHUwMDNjIG5leHQ7IHB0ZSArPSBuciwgYWRkciArPSBuciAqIFBBR0VfU0laRSkge1xuK1x0XHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4O1xuK1xuIFx0XHRuciA9IDE7XG4gXHRcdHB0ZW50ID0gcHRlcF9nZXQocHRlKTtcbiBcbkBAIC02ODEsNyArNjgzLDggQEAgc3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVx1MDAzZXZtYSwgYWRkciwgZGVzdHMsXG4gXHRcdFx0XHRtaWdyYXRpb25fbGlzdHMpO1xuLVx0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcbitcdFx0cGFnZV9pZHggPSBmb2xpb19wYWdlX2lkeChmb2xpbywgcHRlX3BhZ2UocHRlbnQpKTtcbitcdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDtcbiBcdH1cbiBcdHB0ZV91bm1hcF91bmxvY2soc3RhcnRfcHRlLCBwdGwpO1xuIFx0cmV0dXJuIDA7XG5AQCAtODMxLDYgKzgzNCw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGZvciAoOyBhZGRyIFx1MDAzYyBuZXh0OyBwdGUgKz0gbnIsIGFkZHIgKz0gbnIgKiBQQUdFX1NJWkUpIHtcbitcdFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeDtcbitcbiBcdFx0bnIgPSAxO1xuIFx0XHRwdGVudCA9IHB0ZXBfZ2V0KHB0ZSk7XG4gXG5AQCAtODQ0LDcgKzg0OSw4IEBAIHN0YXRpYyBpbnQgZGFtb3NfdmFfc3RhdF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFxuIFx0XHRpZiAoIWRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkciwgcHRlLCBOVUxMKSlcbiBcdFx0XHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBmb2xpb19zaXplKGZvbGlvKTtcbi1cdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4rXHRcdHBhZ2VfaWR4ID0gZm9saW9fcGFnZV9pZHgoZm9saW8sIHB0ZV9wYWdlKHB0ZW50KSk7XG4rXHRcdG5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pIC0gcGFnZV9pZHg7XG4gXHRcdHMtXHUwMDNlbGFzdF9hcHBsaWVkID0gZm9saW87XG4gXHR9XG4gXHRwdGVfdW5tYXBfdW5sb2NrKHN0YXJ0X3B0ZSwgcHRsKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMwOjQ2LjY5NDI2NjExWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYxNDQ1MDQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEQU1PTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIG1vZGlmaWNhdGlvbnMuIFRoZSBjaGFuZ2VzIGFyZSBjb25jZW50cmF0ZWQgd2l0aGluIHRoZSBgbW0vZGFtb24vYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB0b3VjaGluZyBgY29yZS5jYCwgYHBhZGRyLmNgLCBhbmQgYHZhZGRyLmNgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgbmV4dCBzdGVwIGlzIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBEQU1PTiwgdGhlIERhdGEgQWNjZXNzIE1vbml0b3IsIGluIHRoZSBMaW51eCBrZXJuZWwgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gdXAtdG8tZGF0ZSBvbiBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMsIGFzc29jaWF0ZWQgZmlsZXMsIGFuZCBzZWUgd2hhdCBjb2RlIGlzIGNhbGxpbmcgREFNT04gZnVuY3Rpb25zLiBJJ2xsIHNlYXJjaCBmb3IgcmVsYXRlZCBLY29uZmlnIGVudHJpZXMgdG8gZ2V0IHRoZSBjb250ZXh0IHJpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo0OS4zMDg3MTk1NTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjg3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcXFwiRGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1xcXCJcXG5tbS9kYW1vbi9LY29uZmlnLTQtXFxubW0vZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctNi1cXHRib29sIFxcXCJEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTE0LVxcbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL0tjb25maWctMTYtXFx0Ym9vbCBcXFwiQ2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxcbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTI3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxcbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXFxubW0vZGFtb24vS2NvbmZpZy0zOS1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxcbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXFxubW0vZGFtb24vS2NvbmZpZy00OC1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy01NS1cXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy01Ny1cXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxcbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy02OS1cXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxcbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy04Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXFxubW0vZGFtb24vS2NvbmZpZy04OS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctOTktXFxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTA3LVxcbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXFxubW0vZGFtb24vS2NvbmZpZy0xMDktXFx0Ym9vbCBcXFwiQnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTE1LVxcbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxcbm1tL2RhbW9uL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkVuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMwOjQ5LjM1Mzk5MTM2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0Mzc2NTQ4NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGNvcmUuY2AsIGBwYWRkci5jYCwgYW5kIGB2YWRkci5jYCBnZXQgYnVpbHQgd2l0aGluIHRoaXMgREFNT04gc3lzdGVtIGFuZCB3aGF0IHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSBsb29rcyBsaWtlLiBNeSBmaXJzdCBzdG9wIGhhcyB0byBiZSB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdGhlIE1ha2VmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQgYG1tL2RhbW9uL0tjb25maWdgIGFuZCBgbW0vZGFtb24vTWFrZWZpbGVgLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyB0aGF0IGVuYWJsZSB0aGVzZSBmaWxlcyDigJMgYXJlIHRoZXJlIHNwZWNpZmljIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoZW0gdG8gYmUgaW5jbHVkZWQ/IFRoZW4gSSdsbCBoaXQgdGhlIE1ha2VmaWxlIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHJ1bGVzIHRoZW1zZWx2ZXMsIGhvdyB0aGVzZSBzcGVjaWZpYyBzb3VyY2UgZmlsZXMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQuIEZ1cnRoZXJtb3JlLCBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIE1ha2VmaWxlJ3MgcnVsZXMgdGhhdCBoYW5kbGUgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlcy4gQXJlIHRoZXNlIGZpbGVzIGV4cG9zZWQgdGhyb3VnaCBzeXNmcywgZGVidWdmcywgb3IgcGVyaGFwcyBldmVuIHNvbWV0aGluZyBjdXN0b20/IFVuZGVyc3RhbmRpbmcgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlIGlzIGNyaXRpY2FsIGZvciBmaWd1cmluZyBvdXQgaG93IHVzZXJzIHdvdWxkIGludGVyYWN0IHdpdGggdGhlIG1vbml0b3JpbmcgY2FwYWJpbGl0aWVzIG9mIHRoZXNlIGZpbGVzLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRoZSBjb21wbGV0ZSBwaWN0dXJlIOKAkyBmcm9tIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIGV4dGVybmFsIGFjY2Vzc2liaWxpdHkg4oCTIHRvIGdyYXNwIHRoZSBmdWxsIHNjb3BlIG9mIHRoZWlyIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NDQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo1MS43OTE2NDk2MzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0b2JqLXlcXHRcXHRcXHRcXHQ6PSBjb3JlLm9cXG4gICA0OlxcdG9iai0kKENPTkZJR19EQU1PTl9WQUREUilcXHQrPSBvcHMtY29tbW9uLm8gdmFkZHIub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1BBRERSKVxcdCs9IG9wcy1jb21tb24ubyBwYWRkci5vXFxuICAgNjpcXHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXFx0Kz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXFxuICAgODpcXHRvYmotJChDT05GSUdfREFNT05fTFJVX1NPUlQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBscnVfc29ydC5vXFxuICAgOTpcXHRvYmotJChDT05GSUdfREFNT05fU1RBVClcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo1MS43OTE3MDU4MThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODIxMTE3MTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uIERlcHRocyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdCBwbGF5LiBMZXQncyBub3QgcmVseSBvbiBpbnR1aXRpb24gaGVyZSDigJMgdGhhdCdzIGEgcmVjaXBlIGZvciBoZWFkYWNoZXMgZG93biB0aGUgcm9hZCEgVGhlIGJlc3QgYXBwcm9hY2ggaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdG8gdGhlIGF1dGhvcml0YXRpdmUgZGVmaW5pdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIFRoYXQncyB3aGVyZSB0aGUgcmVhbCB0cnV0aCBpcy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGZ1bGwgcGljdHVyZSBsb29rcyBsaWtlLiBObyBzaG9ydGN1dHMsIGp1c3QgYSBjbGVhbiB2aWV3IG9mIHRoZSByZWxhdGlvbnNoaXBzIGFuZCBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzA6NTMuNjEyODI2MDkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRtZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgREFNT05cXG4gICA2OlxcdFxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxcbiAgIDk6XFx0XFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcXG4gIDEwOlxcdFxcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcXG4gIDEzOlxcdFxcdCAgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxcbiAgMTY6XFx0XFx0Ym9vbCBcXFwiQ2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIERBTU9OXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBhZGRpdGlvbmFsIERBTU9OIGRlYnVnZ2luZy1wdXJwb3NlIHNhbml0eSBjaGVja3MgaW5cXG4gIDIwOlxcdFxcdCAgREFNT04gY29kZS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZmluZGluZyBidWdzLCBidXQgaW1wb3NlXFxuICAyMTpcXHRcXHQgIGFkZGl0aW9uYWwgb3ZlcmhlYWQuICBUaGlzIGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byBiZSBlbmFibGVkIG9uXFxuICAyMjpcXHRcXHQgIG9ubHkgZGV2ZWxvcG1lbnQgYW5kIHRlc3Qgc2V0dXBzLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyNTpcXHRcXG4gIDI2OlxcdGNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxuICAyNzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgMjg6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBLVU5JVD15XFxuICAyOTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDM0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIERBTU9OX1ZBRERSXFxuICAzOTpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNDE6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA0MjpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDQ1OlxcdFxcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgREFNT05fUEFERFJcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNTA6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA1MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDU0OlxcdFxcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuICA1NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDU5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuICA2MDpcXHRcXHRoZWxwXFxuICA2MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiB2aXJ0dWFsIGFkZHJlc3NlcyBvcGVyYXRpb25zIEt1bml0IHRlc3Qgc3VpdGUuXFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXFxuICA2NDpcXHRcXHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA2NzpcXHRcXG4gIDY4OlxcdGNvbmZpZyBEQU1PTl9TWVNGU1xcbiAgNjk6XFx0XFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbiAgNzA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbiAgNzE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcXG4gIDc0OlxcdFxcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXFxuICA3NTpcXHRcXG4gIDc2OlxcdGNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxuICA3NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbiAgNzk6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDgwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzA6NTMuNjEyOTAyMzYyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjczNDM4OTA5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nIOKAkyBtb3N0IGxpa2VseSwgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBNTS9EQU1PTiBzdWJzeXN0ZW0uIEkgc2VlIHRoZSBzdGFydGluZyBwb2ludCBpcyB0byBkaXZlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGBtbS9kYW1vbi9LY29uZmlnYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBzb21lIGludGVyZXN0aW5nIGRldGFpbCB0aGVyZSB0aGF0IHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGZlYXR1cmVzLCBvciBtYXliZSBldmVuIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIHdpdGhpbiBEQU1PTidzIEtjb25maWcgZmlsZS4gSSdtIGhvcGluZyB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQ7IGlkZW50aWZ5IHBvdGVudGlhbCBjdXN0b21pemF0aW9uIHBvaW50cyBmb3IgdGhpcyBzdWJzeXN0ZW0uIEdpdmVuIHRoaXMgaXMgYSBLY29uZmlnIGZpbGUsIGl0IGNvbnRhaW5zIHRoZSBidWlsZCBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoYXQgbG9naWMgZ292ZXJucyB0aGVtIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFuZCBiZWhhdmlvciBvZiBEQU1PTi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgY29tcGxleCBkZXBlbmRlbmN5IHRyZWUsIHdpdGggcG90ZW50aWFsIGNyb3NzLWFyY2hpdGVjdHVyYWwgY29uc2lkZXJhdGlvbnMuIEkgYW0gaW50ZXJlc3RlZCB0byBzZWUgd2hhdCBvcHRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IGZvciBteSBjdXJyZW50IGFyZWEgb2YgZm9jdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMwOjU2LjM0NzI5Mzk0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgxOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxcbiAgODI6XFx0XFxuICA4MzpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxcbiAgODQ6XFx0XFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgODc6XFx0XFxuICA4ODpcXHRjb25maWcgREFNT05fUkVDTEFJTVxcbiAgODk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuICA5MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCByZWNsYW1hdGlvbiBzdWJzeXN0ZW0uICBJdCBmaW5kcyBwYWdlc1xcbiAgOTM6XFx0XFx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXFxuICA5NDpcXHRcXHQgIHRob3NlLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHQgIFRoaXMgaXMgc3VnZ2VzdGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9hY3RpdmUgYW5kIGxpZ2h0d2VpZ2h0XFxuICA5NzpcXHRcXHQgIHJlY2xhbWF0aW9uIHVuZGVyIGxpZ2h0IG1lbW9yeSBwcmVzc3VyZSwgd2hpbGUgdGhlIHRyYWRpdGlvbmFsIHBhZ2VcXG4gIDk4OlxcdFxcdCAgc2Nhbm5pbmctYmFzZWQgcmVjbGFtYXRpb24gaXMgdXNlZCBmb3IgaGVhdnkgcHJlc3N1cmUuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbiAxMDE6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG4gMTAyOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gMTAzOlxcdFxcdGhlbHBcXG4gMTA0OlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXFxuIDEwNTpcXHRcXHQgIHByb3RlY3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAoaG90KSBwYWdlcyB3aGlsZSByYXJlbHkgYWNjZXNzZWQgKGNvbGQpXFxuIDEwNjpcXHRcXHQgIHBhZ2VzIHJlY2xhaW1lZCBmaXJzdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuXFxuIDEwNzpcXHRcXG4gMTA4OlxcdGNvbmZpZyBEQU1PTl9TVEFUXFxuIDEwOTpcXHRcXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbiAxMTA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbiAxMTE6XFx0XFx0aGVscFxcbiAxMTI6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdGlzdGljcyBzdWJzeXN0ZW0uXFxuIDExMzpcXHRcXHQgIEl0IHJ1bnMgREFNT04gYW5kIGV4cG9zZSBhY2Nlc3MgbW9uaXRvcmluZyByZXN1bHRzIGluIHNpbXBsZSBzdGF0XFxuIDExNDpcXHRcXHQgIG1ldHJpY3MuXFxuIDExNTpcXHRcXG4gMTE2OlxcdGNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxcbiAxMTc6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFxcXCJcXG4gMTE4OlxcdFxcdGRlcGVuZHMgb24gREFNT05fU1RBVFxcbiAxMTk6XFx0XFx0ZGVmYXVsdCBEQU1PTl9TVEFUXFxuIDEyMDpcXHRcXHRoZWxwXFxuIDEyMTpcXHRcXHQgIFdoZXRoZXIgdG8gZW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdC4gIFVzZXJzIGNhbiBkaXNhYmxlIGl0IGluXFxuIDEyMjpcXHRcXHQgIGJvb3Qgb3IgcnVudGltZSB1c2luZyBpdHMgJ2VuYWJsZWQnIHBhcmFtZXRlci5cXG4gMTIzOlxcdFxcbiAxMjQ6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMDo1Ni4zNDczNzA4NDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkwNDQwMjI0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gZmluZGluZyB0aGUgcGFyZW50IEtjb25maWcgZm9yIERBTU9OLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRmluZGluZyBEQU1PTidzIFBhcmVudCBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQgZm9yIERBTU9OLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgbW0vZGFtb24vS2NvbmZpZ2AgZmlsZSBpcyBhY3R1YWxseSAqaW5jbHVkZWQqLiBJdCdzIG5vdCBlbm91Z2ggdG8ganVzdCBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUgaXRzZWxmOyBJIG5lZWQgdG8gdHJhY2UgaXRzIGluY2x1c2lvbiBwYXRoIHRvIHNlZSB3aGVyZSBpdCBzaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbmZpZ3VyYXRpb24gaGllcmFyY2h5LiBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIHRvIGRvIHNvbWUgc2VhcmNoaW5nIGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgdGhhdCBicmluZyBgbW0vZGFtb24vS2NvbmZpZ2AgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBUaW1lIHRvIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYzNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzA6NTguMjUxNzc1ODg0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY2Njc0NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qbW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTE0ODU9Y29uZmlnIExBWllfTU1VX01PREVfS1VOSVRfVEVTVFxcbi0tXFxubW0vS2NvbmZpZy0xNDk2LVxcbm1tL0tjb25maWc6MTQ5Nzpzb3VyY2UgXFxcIm1tL2RhbW9uL0tjb25maWdcXFwiXFxubW0vS2NvbmZpZy0xNDk4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTowMC42MTg0NTYyMDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjY1MDAwMTEwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBQYXRjaCBBbmFseXNpcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIERBTU9OIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSB0aGVyZSBhcmUgbm8gc2lnbmlmaWNhbnQgZGVwZW5kZW5jeSBpc3N1ZXMgZm9yIHRoZSBgREFNT05gIHN1YnN5c3RlbSBpdHNlbGYgaW4gYG1tL0tjb25maWdgLCBhbmQgaXQgYXBwZWFycyBJJ20gcmlnaHQ6IHRoZXJlIGFyZSBub25lIGJleW9uZCB0aGUgYmFzaWMgYE1NVWAsIGBTWVNGU2AsIGV0Yy4gd2hpY2ggYXJlIHN0YW5kYXJkLiBHb29kLlxuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIGNvZGUgY2hhbmdlcy4gSSdsbCBmb2N1cyBvbiB0aGUgaW1wYWN0IG9mIGVhY2ggbW9kaWZpY2F0aW9uIGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCBpdC5cblxuSW4gYG1tL2RhbW9uL2NvcmUuY2AsIHRoZSBkaWZmIGluIGBkYW1vc19hcHBseV9zY2hlbWUoKWAgaXMgbm90aWNlYWJsZS4gVGhlIGFkZGVkIGNvbmRpdGlvbmFsIGluIHRoZSBgZGFtb25fc3BsaXRfcmVnaW9uX2F0KClgIGNhbGw6IGBpZiAoZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KSlgIGluZGljYXRlcyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gY29udHJvbCBmbG93IGJhc2VkIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhhdCBmdW5jdGlvbi4gVGhlIGBnb3RvIHVwZGF0ZV9zdGF0YCBjbGF1c2Ugc3VnZ2VzdHMgdGhlIHNwbGl0J3Mgc3VjY2VzcyBvciBmYWlsdXJlIGlzIG5vdyBkaXJlY3RseSBhZmZlY3Rpbmcgc3RhdGlzdGljIHVwZGF0ZXMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIGFwcGVhcnMgdGhlIGZ1bmN0aW9uIGBkYW1vc19jb3JlX2ZpbHRlcl9vdXRgIGlzIHRoZSBwcmltYXJ5IGZpbHRlciBvZiBgY29yZS5jYC5cblxuVGhlIGFkZGl0aW9ucyBpbiBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwKClgIGFuZCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icCgpYCBzZWVtIHJlbGF0ZWQgdG8gbW9yZSByb2J1c3QgbWVtb3J5IHN0YXRpc3RpY3MgY29sbGVjdGlvbi4gQ2hlY2tpbmcgaWYgYGkudG90YWxyYW1gIGlzIHZhbGlkIChgIWkudG90YWxyYW1gKSBvciBpZiBgdG90YWxyYW1gIGlzIHNtYWxsZXIgdGhhbiBgZnJlZXJhbWAgc2hvdWxkIHByZXZlbnQgZGl2aXNpb24tYnktemVybyBlcnJvcnMgb3IgdW5yZWFzb25hYmxlIGNhbGN1bGF0aW9ucy4gVGhlIGFkZGVkIGNoZWNrcyBhcHBlYXIgdG8gYmUgZm9yIHRoZXNlIHVubGlrZWx5IGNhc2VzLCByZXR1cm5pbmcgYSBmaXhlZCB2YWx1ZSAoMTAwMDAgb3IgMCkgaW4gY2FzZXMgd2hlcmUgbWVtb3J5IGluZm9ybWF0aW9uIGlzbid0IGF2YWlsYWJsZSBvciB3b3VsZCBnaXZlIGFuIG5vbnNlbnNpY2FsIHJlc3VsdC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgMTAwMDBgIGNvcnJlc3BvbmRzIHRvIGEgcGVyY2VudGFnZSwgZm9yIGluc3RhbmNlLCBpbiB0aGUgc3Vycm91bmRpbmcgY29kZS5cblxuVGhlIGNoYW5nZSBpbiBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnAoKWAgd2hlcmUgYHRvdGFsID0gYWN0aXZlICsgaW5hY3RpdmVgIGlzIG5vdyBgdG90YWwgPSBtYXgoYWN0aXZlICsgaW5hY3RpdmUsIDEpYCBpcyBhIHNvbGlkIHNhZmV0eSBuZXQuIFRoaXMgZ3VhcmFudGVlcyBhIG5vbi16ZXJvIGRlbm9taW5hdG9yIHdoZW4gY2FsY3VsYXRpbmcgcmF0aW9zLCB3aGljaCBpcyBhIGtleSBpbXByb3ZlbWVudC4gVGhpcyBsb29rcyBsaWtlIGEgbmVjZXNzYXJ5IGNoZWNrIHRvIHByZXZlbnQgZGl2aWRlLWJ5LXplcm8gZXJyb3JzLlxuXG5Nb3ZpbmcgdG8gYG1tL2RhbW9uL3BhZGRyLmNgLCB0aGUgY2hhbmdlcyBhcmUgYWxsIGluIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpdGggdGhlIHNhbWUgbGluZSBhZGRlZDogYGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO2AuIFRoaXMgYWRkaXRpb24gaXMgaW4gc2V2ZXJhbCBmdW5jdGlvbnMsIGJ1dCB0aGV5IGFsbCBhcHBlYXIgdG8gcGVyZm9ybSB0aGUgc2FtZSBvcGVyYXRpb24uXG5cbkZpbmFsbHksIGluIGBtbS9kYW1vbi92YWRkci5jYCwgdGhlIHVzZSBvZiBgZm9saW9fcGFnZV9pZHgoKWAgYW5kIGBmb2xpb19ucl9wYWdlcygpYCBpcyBiZWluZyBhZG9wdGVkIHRvIGNhbGN1bGF0ZSB0aGUgcGFnZSBpbmRleCBhbmQgbnVtYmVyIG9mIHBhZ2VzLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2VzIGludm9sdmUgdXNpbmcgZm9saW8gZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgZm9yIHBtZCBhbmQgcHRlIGVudHJpZXMsIHN1Z2dlc3RzIHRoZSBwYXRjaCBpcyB1cGdyYWRpbmcgdGhlIGNvZGUgdG8gdXNlIHRoZSBtb2Rlcm4gZm9saW8gaW50ZXJmYWNlIG1vcmUgY29uc2lzdGVudGx5LlxuXG5Ob3csIGxldCdzIHNlZSBob3cgdGhlc2UgdXBkYXRlZCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHVzZXJzcGFjZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvcGVyYXRpb24gaW4gdGhlIGBwYWRkci5jYCwgYHZhZGRyLmNgLCBhbmQgYGNvcmUuY2AgYXJlIHJlZ2lzdGVyZWQsIGFuZCBob3cgdGhlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZC4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgb3ZlcmFsbCBpbXBhY3Qgb24gREFNT04ncyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkzMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MDcuMjY4NDU5NTU4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgzMzkyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfYXBwbHlfc2NoZW1lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MjU0OT1zdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjU2Mi1cXG5tbS9kYW1vbi9jb3JlLmM6MjU2MzpzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG5tbS9kYW1vbi9jb3JlLmMtMjU2NC1cXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjYzND1zdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjY2MC1cXHRcXHRpZiAoZGFtb3NfdmFsaWRfdGFyZ2V0KGMsIHIsIHMpKVxcbm1tL2RhbW9uL2NvcmUuYzoyNjYxOlxcdFxcdFxcdGRhbW9zX2FwcGx5X3NjaGVtZShjLCB0LCByLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMjY2Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MDcuNDA2ODA2MDI4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyODE1MzA2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gQWRkcmVzcyBUcmFuc2xhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIGhvdyBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgYXJlIG1hbmFnZWQgd2l0aGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmRhbWVudGFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuIExldCdzIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2Agc291cmNlIGZpbGVzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgcGh5c2ljYWwgYWRkcmVzcyAoUEEpIGFuZCB2aXJ0dWFsIGFkZHJlc3MgKFZBKSBzcGFjZXMgYXJlIGRlZmluZWQsIGFuZCBob3cgdGhlIG1hcHBpbmdzIGJldHdlZW4gdGhlbSBhcmUgZXN0YWJsaXNoZWQgYW5kIG1haW50YWluZWQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZm9yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCwgbGlrZSBob3cgdGhlIHBhZ2UgdGFibGVzIGFyZSBvcmdhbml6ZWQsIGFuZCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIGFkZHJlc3MgdHJhbnNsYXRpb24uIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZCB0byBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUgcGFnZSB0YWJsZSBlbnRyaWVzLCBhbmQgd2hhdCBsb2NraW5nIG1lY2hhbmlzbXMgYXJlIGVtcGxveWVkIGZvciBjb25jdXJyZW50IGFjY2Vzcy4gSSBhbHNvIGhvcGUgdG8gZ2FpbiBhIGJldHRlciBncmFzcCBvZiBtZW1vcnkgbWFuYWdlbWVudCwgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBvcGVyYXRpb25zLiBJIGV4cGVjdCBhIGdvb2QgbG9vayBhdCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIGJvdGggZGlyZWN0IGFuZCBpbmRpcmVjdCBtYXBwaW5ncywgYXMgd2VsbCBhcyB0aGUgcG90ZW50aWFsIGZvciBpc3N1ZXMgd2l0aCBhZGRyZXNzIGFsaWFzaW5nIG9yIGZyYWdtZW50YXRpb24uIEhvcGVmdWxseSwgYHBhZGRyLmNgIHJldmVhbHMgaG93IHRoZSBwaHlzaWNhbCBtZW1vcnkgaXMgcmVwcmVzZW50ZWQsIGFuZCBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUncyBtZW1vcnkgY29udHJvbGxlci4gQW5kIHRoZSBgdmFkZHIuY2Agc2hvdWxkIHNob3cgaG93IHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMgYXJlIHN0cnVjdHVyZWQsIGFuZCBob3cgcHJvY2Vzc2VzIGFyZSBpc29sYXRlZCBmcm9tIGVhY2ggb3RoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NzksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToxMC42ODgzMzkxMzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4Nzk0OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBkYW1vbl9vcGVyYXRpb25zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MzA9c3RhdGljIERFRklORV9NVVRFWChkYW1vbl9vcHNfbG9jayk7XFxubW0vZGFtb24vY29yZS5jOjMxOnN0YXRpYyBzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBkYW1vbl9yZWdpc3RlcmVkX29wc1tOUl9EQU1PTl9PUFNdO1xcbm1tL2RhbW9uL2NvcmUuYy0zMi1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNj1zdGF0aWMgYm9vbCBfX2RhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy0zNy17XFxubW0vZGFtb24vY29yZS5jOjM4OlxcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIGVtcHR5X29wcyA9IHt9O1xcbm1tL2RhbW9uL2NvcmUuYy0zOS1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz01MT1ib29sIGRhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo3MjppbnQgZGFtb25fcmVnaXN0ZXJfb3BzKHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zICpvcHMpXFxubW0vZGFtb24vY29yZS5jLTczLXtcXG4tLVxcbm1tL2RhbW9uL3BhZGRyLmM9NDM3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3BhX2luaXRjYWxsKHZvaWQpXFxubW0vZGFtb24vcGFkZHIuYy00Mzgte1xcbm1tL2RhbW9uL3BhZGRyLmM6NDM5OlxcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wcyA9IHtcXG5tbS9kYW1vbi9wYWRkci5jLTQ0MC1cXHRcXHQuaWQgPSBEQU1PTl9PUFNfUEFERFIsXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9NDE4PXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3Rfb3BzX3JlZ2lzdHJhdGlvbihzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDIwLVxcdHN0cnVjdCBkYW1vbl9jdHggKmMgPSBkYW1vbl9uZXdfY3R4KCk7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjQyMTpcXHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7LmlkID0gREFNT05fT1BTX1ZBRERSfSwgYmFrO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00MjItXFx0Ym9vbCBuZWVkX2NsZWFudXAgPSBmYWxzZTtcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00NDYtXFx0XFx0ZGFtb25fcmVnaXN0ZXJlZF9vcHNbREFNT05fT1BTX1ZBRERSXSA9XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjQ0NzpcXHRcXHRcXHQoc3RydWN0IGRhbW9uX29wZXJhdGlvbnMpe307XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQ0OC1cXHR9XFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDYzLVxcdFxcdFxcdGRhbW9uX3JlZ2lzdGVyZWRfb3BzW0RBTU9OX09QU19WQUREUl0gPVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo0NjQ6XFx0XFx0XFx0XFx0KHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zKXt9O1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00NjUtXFx0fVxcbi0tXFxubW0vZGFtb24vdmFkZHIuYz05NDM9c3RhdGljIGludCBfX2luaXQgZGFtb25fdmFfaW5pdGNhbGwodm9pZClcXG5tbS9kYW1vbi92YWRkci5jLTk0NC17XFxubW0vZGFtb24vdmFkZHIuYzo5NDU6XFx0c3RydWN0IGRhbW9uX29wZXJhdGlvbnMgb3BzID0ge1xcbm1tL2RhbW9uL3ZhZGRyLmMtOTQ2LVxcdFxcdC5pZCA9IERBTU9OX09QU19WQUREUixcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtOTU2LVxcdC8qIG9wcyBmb3IgZml4ZWQgdmlydHVhbCBhZGRyZXNzIHJhbmdlcyAqL1xcbm1tL2RhbW9uL3ZhZGRyLmM6OTU3OlxcdHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zIG9wc19mdmFkZHIgPSBvcHM7XFxubW0vZGFtb24vdmFkZHIuYy05NTgtXFx0aW50IGVycjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MTAuNzM3MTM5MzU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMjExNDQ4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCBzdWl0YWJsZSBmb3IgYSBmaWVsZCBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEFkZHJlc3MgVHJhbnNsYXRpb24gT3BlcmF0aW9ucyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiBob3cgcGh5c2ljYWwgYW5kIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMgYXJlIG1hbmFnZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBJJ2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AuIE15IGZvY3VzIGlzbid0IG5lY2Vzc2FyaWx5IG9uIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZSBhdCB0aGlzIHN0YWdlLCBJIGFscmVhZHkgaGF2ZSBhIGZpcm0gZ3Jhc3Agb2YgdGhhdC4gSW5zdGVhZCwgSSdtIHplcm9pbmcgaW4gb24gdGhlICppbXBsZW1lbnRhdGlvbiBkZXRhaWxzKi4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGNhbGxiYWNrcyBmb3IgdGhlIGFkZHJlc3MgdHJhbnNsYXRpb24gb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBhbmQgdXNlZC4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25zIGhlcmU6IHRoZSBjb3JlIHJvdXRpbmVzIHJlc3BvbnNpYmxlIGZvciBtYXBwaW5nIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHBoeXNpY2FsIGFkZHJlc3NlcyBhbmQgdmljZS12ZXJzYS4gSSdtIGludGVyZXN0ZWQgaW4gdGhlIGludHJpY2FjaWVzIG9mIHBhZ2UgdGFibGUgd2Fsa3MsIHRoZSBoYW5kbGluZyBvZiBkaWZmZXJlbnQgbWVtb3J5IHJlZ2lvbnMsIGFuZCBhbnkgb3B0aW1pemF0aW9ucyB0aGV5J3ZlIGltcGxlbWVudGVkLiBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBiZWluZyBtYW5pcHVsYXRlZD8gQXJlIHRoZXkgdXNpbmcgYW55IGNsZXZlciB0cmlja3MgZm9yIHBlcmZvcm1hbmNlIG9yIG1lbW9yeSBlZmZpY2llbmN5PyBXaGF0IGVycm9yIGNvbmRpdGlvbnMgYXJlIGJlaW5nIGhhbmRsZWQ/IEFuZCBob3cgdGhleSBhcmUgYWxsIGxpbmtlZCB0b2dldGhlci4gSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgZXhlY3V0aW9uIHBhdGhzLCB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkIGFuZCBkZWFsbG9jYXRlZCBhcyBwYXJ0IG9mIHRoZSB0cmFuc2xhdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE1NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjEzLjk1ODI4NjgzN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9wYWRkci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQzMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQzMDpcXHRcXHRkZWZhdWx0OlxcbiA0MzE6XFx0XFx0XFx0YnJlYWs7XFxuIDQzMjpcXHRcXHR9XFxuIDQzMzpcXHRcXG4gNDM0OlxcdFxcdHJldHVybiBEQU1PU19NQVhfU0NPUkU7XFxuIDQzNTpcXHR9XFxuIDQzNjpcXHRcXG4gNDM3OlxcdHN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3BhX2luaXRjYWxsKHZvaWQpXFxuIDQzODpcXHR7XFxuIDQzOTpcXHRcXHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7XFxuIDQ0MDpcXHRcXHRcXHQuaWQgPSBEQU1PTl9PUFNfUEFERFIsXFxuIDQ0MTpcXHRcXHRcXHQuaW5pdCA9IE5VTEwsXFxuIDQ0MjpcXHRcXHRcXHQudXBkYXRlID0gTlVMTCxcXG4gNDQzOlxcdFxcdFxcdC5wcmVwYXJlX2FjY2Vzc19jaGVja3MgPSBkYW1vbl9wYV9wcmVwYXJlX2FjY2Vzc19jaGVja3MsXFxuIDQ0NDpcXHRcXHRcXHQuY2hlY2tfYWNjZXNzZXMgPSBkYW1vbl9wYV9jaGVja19hY2Nlc3NlcyxcXG4gNDQ1OlxcdFxcdFxcdC5hcHBseV9wcm9iZXMgPSBkYW1vbl9wYV9hcHBseV9wcm9iZXMsXFxuIDQ0NjpcXHRcXHRcXHQudGFyZ2V0X3ZhbGlkID0gTlVMTCxcXG4gNDQ3OlxcdFxcdFxcdC5hcHBseV9zY2hlbWUgPSBkYW1vbl9wYV9hcHBseV9zY2hlbWUsXFxuIDQ0ODpcXHRcXHRcXHQuZ2V0X3NjaGVtZV9zY29yZSA9IGRhbW9uX3BhX3NjaGVtZV9zY29yZSxcXG4gNDQ5OlxcdFxcdH07XFxuIDQ1MDpcXHRcXG4gNDUxOlxcdFxcdHJldHVybiBkYW1vbl9yZWdpc3Rlcl9vcHMoXFx1MDAyNm9wcyk7XFxuIDQ1MjpcXHR9XFxuIDQ1MzpcXHRcXG4gNDU0OlxcdHN1YnN5c19pbml0Y2FsbChkYW1vbl9wYV9pbml0Y2FsbCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjEzLjk1ODM1MzkzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTYzNDQzODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IGRlZXAgaW4ga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50LlxuXG4qKkRpdmluZyBpbnRvIERBTU9OJ3MgUGh5c2ljYWwgQWRkcmVzcyBBcHBsaWNhdGlvbioqXG5cblJpZ2h0LCBsZXQgbWUgcHVsbCB1cCB0aGUgY29kZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGhvdyBEQU1PTiwgc3BlY2lmaWNhbGx5IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFwcGxpY2F0aW9uIHNjaGVtZSAoYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWApLCBhY3R1YWxseSB3b3Jrcy4gVGhhdCdzIGdvaW5nIHRvIGJlIGluIGBtbS9kYW1vbi9wYWRkci5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCB3aGVyZSBEQU1PTiB0YWtlcyB0aG9zZSBjb2xsZWN0ZWQgbW9uaXRvcmluZyByZXN1bHRzIGFuZCwgcHJlc3VtYWJseSwgaW50ZXJhY3RzIHdpdGggdGhlIGFjdHVhbCBwaHlzaWNhbCBtZW1vcnkgbWFwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIHRoZSBwaHlzaWNhbCBwYWdlcyB0byBiZSBtYW5hZ2VkIGFuZCB3aGF0IGFjdGlvbnMgaXQncyBwZXJmb3JtaW5nIG9uIHRoZW0uIEkgd2FudCB0byBzZWUgaWYgdGhlIGltcGxlbWVudGF0aW9uIGxvZ2ljIG1lZXRzIHRoZSBkZXNpZ24sIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIG9wdGltaXphdGlvbiBpc3N1ZXMgb3IgY29uY3VycmVuY3kgY29uY2VybnMuIExldCdzIHNlZSBob3cgdGhleSBoYW5kbGUgbWVtb3J5IG1hcHBpbmcgdXBkYXRlcywgcGFnZSBmYXVsdCBhbmQgb3RoZXIgaW1wb3J0YW50IG9wZXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODMzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToxNS45MjE4MDA2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9wYWRkci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM5MCxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM5MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbiAzOTE6XFx0XFx0XFx0c3RydWN0IGRhbW9zICpzY2hlbWUsIHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXFxuIDM5MjpcXHR7XFxuIDM5MzpcXHRcXHR1bnNpZ25lZCBsb25nIGF1bml0ID0gY3R4LVxcdTAwM2VhZGRyX3VuaXQ7XFxuIDM5NDpcXHRcXG4gMzk1OlxcdFxcdHN3aXRjaCAoc2NoZW1lLVxcdTAwM2VhY3Rpb24pIHtcXG4gMzk2OlxcdFxcdGNhc2UgREFNT1NfUEFHRU9VVDpcXG4gMzk3OlxcdFxcdFxcdHJldHVybiBkYW1vbl9wYV9wYWdlb3V0KHIsIGF1bml0LCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbiAzOTg6XFx0XFx0Y2FzZSBEQU1PU19MUlVfUFJJTzpcXG4gMzk5OlxcdFxcdFxcdHJldHVybiBkYW1vbl9wYV9hY3RpdmF0ZV9wYWdlcyhyLCBhdW5pdCwgc2NoZW1lLFxcbiA0MDA6XFx0XFx0XFx0XFx0XFx0c3pfZmlsdGVyX3Bhc3NlZCk7XFxuIDQwMTpcXHRcXHRjYXNlIERBTU9TX0xSVV9ERVBSSU86XFxuIDQwMjpcXHRcXHRcXHRyZXR1cm4gZGFtb25fcGFfZGVhY3RpdmF0ZV9wYWdlcyhyLCBhdW5pdCwgc2NoZW1lLFxcbiA0MDM6XFx0XFx0XFx0XFx0XFx0c3pfZmlsdGVyX3Bhc3NlZCk7XFxuIDQwNDpcXHRcXHRjYXNlIERBTU9TX01JR1JBVEVfSE9UOlxcbiA0MDU6XFx0XFx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XFxuIDQwNjpcXHRcXHRcXHRyZXR1cm4gZGFtb25fcGFfbWlncmF0ZShyLCBhdW5pdCwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gNDA3OlxcdFxcdGNhc2UgREFNT1NfU1RBVDpcXG4gNDA4OlxcdFxcdFxcdHJldHVybiBkYW1vbl9wYV9zdGF0KHIsIGF1bml0LCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbiA0MDk6XFx0XFx0ZGVmYXVsdDpcXG4gNDEwOlxcdFxcdFxcdC8qIERBTU9TIGFjdGlvbnMgdGhhdCBub3QgeWV0IHN1cHBvcnRlZCBieSAncGFkZHInLiAqL1xcbiA0MTE6XFx0XFx0XFx0YnJlYWs7XFxuIDQxMjpcXHRcXHR9XFxuIDQxMzpcXHRcXHRyZXR1cm4gMDtcXG4gNDE0OlxcdH1cXG4gNDE1OlxcdFxcbiA0MTY6XFx0c3RhdGljIGludCBkYW1vbl9wYV9zY2hlbWVfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqY29udGV4dCxcXG4gNDE3OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqc2NoZW1lKVxcbiA0MTg6XFx0e1xcbiA0MTk6XFx0XFx0c3dpdGNoIChzY2hlbWUtXFx1MDAzZWFjdGlvbikge1xcbiA0MjA6XFx0XFx0Y2FzZSBEQU1PU19QQUdFT1VUOlxcbiA0MjE6XFx0XFx0XFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcXG4gNDIyOlxcdFxcdGNhc2UgREFNT1NfTFJVX1BSSU86XFxuIDQyMzpcXHRcXHRcXHRyZXR1cm4gZGFtb25faG90X3Njb3JlKGNvbnRleHQsIHIsIHNjaGVtZSk7XFxuIDQyNDpcXHRcXHRjYXNlIERBTU9TX0xSVV9ERVBSSU86XFxuIDQyNTpcXHRcXHRcXHRyZXR1cm4gZGFtb25fY29sZF9zY29yZShjb250ZXh0LCByLCBzY2hlbWUpO1xcbiA0MjY6XFx0XFx0Y2FzZSBEQU1PU19NSUdSQVRFX0hPVDpcXG4gNDI3OlxcdFxcdFxcdHJldHVybiBkYW1vbl9ob3Rfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcXG4gNDI4OlxcdFxcdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxcbiA0Mjk6XFx0XFx0XFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcXG4gNDMwOlxcdFxcdGRlZmF1bHQ6XFxuIDQzMTpcXHRcXHRcXHRicmVhaztcXG4gNDMyOlxcdFxcdH1cXG4gNDMzOlxcdFxcbiA0MzQ6XFx0XFx0cmV0dXJuIERBTU9TX01BWF9TQ09SRTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MTUuOTIxODc0NTlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyNTY2OTk0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFZpcnR1YWwgQWRkcmVzcyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byBgbW0vZGFtb24vdmFkZHIuY2AuIFRoaXMgc3VnZ2VzdHMgSSdtIGFib3V0IHRvIHNjcnV0aW5pemUgdGhlIHZpcnR1YWwgYWRkcmVzcy1yZWxhdGVkIGNvZGUgd2l0aGluIERBTU9OIOKAkyB0aGUgRGF0YSBBY2Nlc3MgTU9OaXRvci4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJ20gbGlrZWx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyBzcGVjaWZpYywgb3IgcGVyaGFwcyBhaW1pbmcgZm9yIGEgZ2VuZXJhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBEQU1PTiBpbnRlcmFjdHMgd2l0aCB2aXJ0dWFsIG1lbW9yeSBzcGFjZXMuIEkgY291bGQgYmUgaW52ZXN0aWdhdGluZyBob3cgaXQgaWRlbnRpZmllcywgdHJhY2tzLCBhbmQgcG90ZW50aWFsbHkgbWFuaXB1bGF0ZXMgdmlydHVhbCBhZGRyZXNzZXMgZm9yIGl0cyBkYXRhIG1vbml0b3JpbmcgYW5kIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzLiBJJ20gcHJvYmFibHkgaW50ZXJlc3RlZCBpbiBkZXRhaWxzIGFib3V0IGl0cyBoYW5kbGluZyBvZiBhZGRyZXNzIHRyYW5zbGF0aW9uLCBwYWdlIGZhdWx0cywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcGFnZSB0YWJsZSBzdHJ1Y3R1cmVzLiBQZXJoYXBzIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIHBhdGggYSB2aXJ0dWFsIGFkZHJlc3MgdGFrZXMgdGhyb3VnaCBEQU1PTidzIG1vbml0b3JpbmcgcHJvY2VzcywgZnJvbSBpbml0aWFsIGFjY2VzcyB0byBhbnkgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgdHJpZ2dlcmVkLiBJIGV4cGVjdCB0byBzZWUgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIGhhbmRsaW5nIHRoaW5ncyBsaWtlIGFkZHJlc3MgcmFuZ2VzLCByZWdpb25zLCBhbmQgbWF5YmUgZXZlbiBjYWNoZSBsaW5lcywgYWxsIGluIHRoZSBjb250ZXh0IG9mIHZpcnR1YWwgbWVtb3J5IG1hbmFnZW1lbnQuIEknbSBrZWVuIHRvIHNlZSBpZiBEQU1PTidzIGFwcHJvYWNoIGlzIGVmZmljaWVudCwgYWNjdXJhdGUsIGFuZCBkb2Vzbid0IGludHJvZHVjZSBleGNlc3NpdmUgb3ZlcmhlYWQuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgb2YgREFNT04ncyB2aXJ0dWFsIGFkZHJlc3MgbWFuaXB1bGF0aW9uIGxpdmVzLCBzbyBJJ20gZXhwZWN0aW5nIHRvIGZpbmQga2V5IHRvIGl0cyBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgyNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MTguNTQ3NTQ3MjgzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL3ZhZGRyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTAwOlxcdFxcdFxcdGJyZWFrO1xcbiA5MDE6XFx0XFx0Y2FzZSBEQU1PU19IVUdFUEFHRTpcXG4gOTAyOlxcdFxcdFxcdG1hZHZfYWN0aW9uID0gTUFEVl9IVUdFUEFHRTtcXG4gOTAzOlxcdFxcdFxcdGJyZWFrO1xcbiA5MDQ6XFx0XFx0Y2FzZSBEQU1PU19OT0hVR0VQQUdFOlxcbiA5MDU6XFx0XFx0XFx0bWFkdl9hY3Rpb24gPSBNQURWX05PSFVHRVBBR0U7XFxuIDkwNjpcXHRcXHRcXHRicmVhaztcXG4gOTA3OlxcdFxcdGNhc2UgREFNT1NfQ09MTEFQU0U6XFxuIDkwODpcXHRcXHRcXHRtYWR2X2FjdGlvbiA9IE1BRFZfQ09MTEFQU0U7XFxuIDkwOTpcXHRcXHRcXHRicmVhaztcXG4gOTEwOlxcdFxcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XFxuIDkxMTpcXHRcXHRjYXNlIERBTU9TX01JR1JBVEVfQ09MRDpcXG4gOTEyOlxcdFxcdFxcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XFxuIDkxMzpcXHRcXHRjYXNlIERBTU9TX1NUQVQ6XFxuIDkxNDpcXHRcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbiA5MTU6XFx0XFx0ZGVmYXVsdDpcXG4gOTE2OlxcdFxcdFxcdC8qXFxuIDkxNzpcXHRcXHRcXHQgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICd2YWRkcicuXFxuIDkxODpcXHRcXHRcXHQgKi9cXG4gOTE5OlxcdFxcdFxcdHJldHVybiAwO1xcbiA5MjA6XFx0XFx0fVxcbiA5MjE6XFx0XFxuIDkyMjpcXHRcXHRyZXR1cm4gZGFtb3NfbWFkdmlzZSh0LCByLCBtYWR2X2FjdGlvbik7XFxuIDkyMzpcXHR9XFxuIDkyNDpcXHRcXG4gOTI1OlxcdHN0YXRpYyBpbnQgZGFtb25fdmFfc2NoZW1lX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmNvbnRleHQsXFxuIDkyNjpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnNjaGVtZSlcXG4gOTI3OlxcdHtcXG4gOTI4OlxcdFxcbiA5Mjk6XFx0XFx0c3dpdGNoIChzY2hlbWUtXFx1MDAzZWFjdGlvbikge1xcbiA5MzA6XFx0XFx0Y2FzZSBEQU1PU19QQUdFT1VUOlxcbiA5MzE6XFx0XFx0XFx0cmV0dXJuIGRhbW9uX2NvbGRfc2NvcmUoY29udGV4dCwgciwgc2NoZW1lKTtcXG4gOTMyOlxcdFxcdGNhc2UgREFNT1NfTUlHUkFURV9IT1Q6XFxuIDkzMzpcXHRcXHRcXHRyZXR1cm4gZGFtb25faG90X3Njb3JlKGNvbnRleHQsIHIsIHNjaGVtZSk7XFxuIDkzNDpcXHRcXHRjYXNlIERBTU9TX01JR1JBVEVfQ09MRDpcXG4gOTM1OlxcdFxcdFxcdHJldHVybiBkYW1vbl9jb2xkX3Njb3JlKGNvbnRleHQsIHIsIHNjaGVtZSk7XFxuIDkzNjpcXHRcXHRkZWZhdWx0OlxcbiA5Mzc6XFx0XFx0XFx0YnJlYWs7XFxuIDkzODpcXHRcXHR9XFxuIDkzOTpcXHRcXG4gOTQwOlxcdFxcdHJldHVybiBEQU1PU19NQVhfU0NPUkU7XFxuIDk0MTpcXHR9XFxuIDk0MjpcXHRcXG4gOTQzOlxcdHN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3ZhX2luaXRjYWxsKHZvaWQpXFxuIDk0NDpcXHR7XFxuIDk0NTpcXHRcXHRzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBvcHMgPSB7XFxuIDk0NjpcXHRcXHRcXHQuaWQgPSBEQU1PTl9PUFNfVkFERFIsXFxuIDk0NzpcXHRcXHRcXHQuaW5pdCA9IGRhbW9uX3ZhX2luaXQsXFxuIDk0ODpcXHRcXHRcXHQudXBkYXRlID0gZGFtb25fdmFfdXBkYXRlLFxcbiA5NDk6XFx0XFx0XFx0LnByZXBhcmVfYWNjZXNzX2NoZWNrcyA9IGRhbW9uX3ZhX3ByZXBhcmVfYWNjZXNzX2NoZWNrcyxcXG4gOTUwOlxcdFxcdFxcdC5jaGVja19hY2Nlc3NlcyA9IGRhbW9uX3ZhX2NoZWNrX2FjY2Vzc2VzLFxcbiA5NTE6XFx0XFx0XFx0LnRhcmdldF92YWxpZCA9IGRhbW9uX3ZhX3RhcmdldF92YWxpZCxcXG4gOTUyOlxcdFxcdFxcdC5jbGVhbnVwX3RhcmdldCA9IGRhbW9uX3ZhX2NsZWFudXBfdGFyZ2V0LFxcbiA5NTM6XFx0XFx0XFx0LmFwcGx5X3NjaGVtZSA9IGRhbW9uX3ZhX2FwcGx5X3NjaGVtZSxcXG4gOTU0OlxcdFxcdFxcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fdmFfc2NoZW1lX3Njb3JlLFxcbiA5NTU6XFx0XFx0fTtcXG4gOTU2OlxcdFxcdC8qIG9wcyBmb3IgZml4ZWQgdmlydHVhbCBhZGRyZXNzIHJhbmdlcyAqL1xcbiA5NTc6XFx0XFx0c3RydWN0IGRhbW9uX29wZXJhdGlvbnMgb3BzX2Z2YWRkciA9IG9wcztcXG4gOTU4OlxcdFxcdGludCBlcnI7XFxuIDk1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MTguNTQ3NjMxNDAzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NTI0NTQzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB1bmRlcnN0YW5kaW5nIGhvdyBEQU1PUyBzY2hlbWVzIGFyZSBpbml0aWF0ZWQgZnJvbSB0aGUgdXNlciBzcGFjZSB2aWEgc3lzZnMsIGFzIGlmIGl0J3MgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIFVzZXItU3BhY2UgSW50ZXJhY3Rpb24gd2l0aCBEQU1PTiBTY2hlbWVzKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIGhvdyB1c2Vyc3BhY2UgcHJvZ3JhbXMgYXJlIGludGVyYWN0aW5nIHdpdGggREFNT04gc2NoZW1lcywgc3BlY2lmaWNhbGx5IHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGxpZmVjeWNsZSBvZiBhIERBTU9TIHNjaGVtZSDigJMgZnJvbSBpdHMgY29uZmlndXJhdGlvbiwgYWxsIHRoZSB3YXkgdG8gaXRzIGluaXRpYXRpb24gYW5kIHN1YnNlcXVlbnQgcnVubmluZyBzdGF0ZS4gVGhlIGtleSBoZXJlIGlzIHRvIHNlZSB3aGF0IHN5c2ZzIGVudHJpZXMgYXJlIGludm9sdmVkLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyBhbmQgZmlndXJlIG91dCB3aGljaCBzeXNmcyBhdHRyaWJ1dGVzIGFyZSB3cml0dGVuIHRvLCBhbmQgd2hhdCB0cmlnZ2VycyB0aGUgYWN0dWFsIGxhdW5jaCBvciBzdGFydCBvZiB0aGUgREFNT1Mgc2NoZW1lLiBXaGVyZSBhcmUgdGhlIHBhcmFtZXRlcnMgcGFzc2VkPyBIb3cgYXJlIHRoZSBtb25pdG9yaW5nIHRhcmdldHMgZGVmaW5lZCwgYW5kIGFyZSB0aG9zZSBkeW5hbWljPyBJJ20gYW50aWNpcGF0aW5nIHRoYXQgSSdsbCBiZSBsb29raW5nIGZvciBzcGVjaWZpYyBzeXNmcyBmaWxlcyByZWxhdGVkIHRvIHNjaGVtZSBjcmVhdGlvbiwgZW5hYmxpbmcsIGFuZCBwb3RlbnRpYWxseSBmb3IgY29udHJvbGxpbmcgdmFyaW91cyBvcGVyYXRpb25hbCBhc3BlY3RzLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHNvdXJjZSBjb2RlIHRvIHRyYWNlIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDUxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyMS4xMDAwODgwMjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mjc1ODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3N5c2ZzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM1MDkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTktXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA6REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE5LXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoyMDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0ga21hbGxvY19vYmooKnJhbmdlKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0yMS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTMxPXN0YXRpYyBzc2l6ZV90IG1pbl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0zMy17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MzQ6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjM1OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMzYtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz00MD1zdGF0aWMgc3NpemVfdCBtaW5fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTQyLXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo0MzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NDQ6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy00NS1cXHR1bnNpZ25lZCBsb25nIG1pbjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTU2PXN0YXRpYyBzc2l6ZV90IG1heF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy01OC17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NTk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjYwOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtNjEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTY3LXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo2ODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6Njk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy03MC1cXHR1bnNpZ25lZCBsb25nIG1heDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjgxOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Mi17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODM6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg0LX1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Ny1cXHRcXHRfX0FUVFJfUldfTU9ERShtaW4sIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjg5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfdWxfcmFuZ2VfbWF4X2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTkwLVxcdFxcdF9fQVRUUl9SV19NT0RFKG1heCwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTEtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTI6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTM6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTQ6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21heF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTUtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05Ni19O1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk3OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfdWxfcmFuZ2UpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTk4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk5OmNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTAwOlxcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDEtXFx0LnN5c2ZzX29wcyA9IFxcdTAwMjZrb2JqX3N5c2ZzX29wcyxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDI6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEwMy19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTA1LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjEwNjpzdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDctXFx0XFx0Y2hhciAqbWVtY2dfcGF0aF9idWYsIGNoYXIgKnBhdGgpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTE3OmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE4LXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEzNC1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMzU6XFx0XFx0aWYgKGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEobWVtY2csIHBhdGgsIG1lbWNnX3BhdGgpKSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTM2LVxcdFxcdFxcdCppZCA9IG1lbV9jZ3JvdXBfaWQobWVtY2cpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtOC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo5OmV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWF4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjIyOmV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mjg6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzA6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqKnNjaGVtZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMxLVxcdGludCBucjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM1OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzY2hlbWVzKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNzpleHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVzX2t0eXBlO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM5OmludCBkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDA6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQyOnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDM6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDQtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Njp2b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTE6aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MjpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTQ6aW50IGRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTUtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTU3PXZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTg6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTktXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo2MTppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjA6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjEtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcmVnaW9uLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2Mi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE2MzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqc3lzZnNfcmVnaW9uID0ga21hbGxvY19vYmooKnN5c2ZzX3JlZ2lvbik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2NC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzY9c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NzpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzgtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIwMj1zdGF0aWMgdm9pZCBkYW1vc19zeXNmc19yZWdpb25fcm1fZGlycyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjAzOlxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24pXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIwNC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjA5PXN0YXRpYyBzc2l6ZV90IHN0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTEte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTI6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTM6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTQtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjE4PXN0YXRpYyBzc2l6ZV90IGVuZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIwLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIxOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIyOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNz1zdGF0aWMgc3NpemVfdCBucl9hY2Nlc3Nlc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyOS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzMi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMzY9c3RhdGljIHNzaXplX3QgYWdlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMzgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMzk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjQ1PXN0YXRpYyBzc2l6ZV90IHN6X2ZpbHRlcl9wYXNzZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDcte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDg6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTAtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjUzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTQ6c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTY6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTc6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjYxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjMtXFx0XFx0X19BVFRSX1JPX01PREUoc3RhcnQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2NTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fZW5kX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjYtXFx0XFx0X19BVFRSX1JPX01PREUoZW5kLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX25yX2FjY2Vzc2VzX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjktXFx0XFx0X19BVFRSX1JPX01PREUobnJfYWNjZXNzZXMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWdlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzItXFx0XFx0X19BVFRSX1JPX01PREUoYWdlLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzQ6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N6X2ZpbHRlcl9wYXNzZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3NS1cXHRcXHRfX0FUVFJfUk9fTU9ERShzel9maWx0ZXJfcGFzc2VkLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjc2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzc6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc4OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc5OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2VuZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MDpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9ucl9hY2Nlc3Nlc19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MTpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hZ2VfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODI6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3pfZmlsdGVyX3Bhc3NlZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4My1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODQtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg1OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4Ni1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4ODpcXHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjg5LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5MDpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2dyb3VwcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjkxLX07XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTc6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzAzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDQ6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNTpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDYte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDc6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zID0ga21hbGxvY19vYmooKnJlZ2lvbnMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzE5PXN0YXRpYyBzc2l6ZV90IHRvdGFsX2J5dGVzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzIxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzIyOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqcmVnaW9ucyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMjM6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzI0LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMyNy1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzI4OnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JtX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyOTpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnJlZ2lvbnMpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMzMTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqciwgKm5leHQ7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0MjpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDMte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNDQ6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucywga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDUtfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0NzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3RvdGFsX2J5dGVzX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDgtXFx0XFx0X19BVFRSX1JPX01PREUodG90YWxfYnl0ZXMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1MDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzUxOlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc190b3RhbF9ieXRlc19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1Mi1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTMtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU0OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1NjpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU3OlxcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzU4LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1OTpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19ncm91cHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2MC19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2NS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzY2OnN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzc4OnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKmRhbW9uX3N5c2ZzX3N0YXRzX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3OS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4MDpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzgxLX1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zODM9c3RhdGljIHNzaXplX3QgbnJfdHJpZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NjpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzkyPXN0YXRpYyBzc2l6ZV90IHN6X3RyaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zOTQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTU6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTY6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzk3LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQwMT1zdGF0aWMgc3NpemVfdCBucl9hcHBsaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDAzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA0OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA1OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQwNi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00MTA9c3RhdGljIHNzaXplX3Qgc3pfYXBwbGllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQxMi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxMzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxNDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MTUtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDE5PXN0YXRpYyBzc2l6ZV90IHN6X29wc19maWx0ZXJfcGFzc2VkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDIxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIyOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIzOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQyNC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00Mjg9c3RhdGljIHNzaXplX3QgcXRfZXhjZWVkc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMjpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MzMtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDM3PXN0YXRpYyBzc2l6ZV90IG5yX3NuYXBzaG90c19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzOS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDItXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDQ2PXN0YXRpYyBzc2l6ZV90IG1heF9ucl9zbmFwc2hvdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NDk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NTA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDUxLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQ1NT1zdGF0aWMgc3NpemVfdCBtYXhfbnJfc25hcHNob3RzX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ1Ny17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1ODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1OTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjAtXFx0dW5zaWduZWQgbG9uZyBtYXhfbnJfc25hcHNob3RzLCBlcnIgPSBrc3RydG91bChidWYsIDAsIFxcdTAwMjZtYXhfbnJfc25hcHNob3RzKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ2ODpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zdGF0c19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00Njkte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NzA6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzEtfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzItXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3MzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3RyaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzQtXFx0XFx0X19BVFRSX1JPX01PREUobnJfdHJpZWQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X3RyaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzctXFx0XFx0X19BVFRSX1JPX01PREUoc3pfdHJpZWQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzgtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3OTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX2FwcGxpZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4MC1cXHRcXHRfX0FUVFJfUk9fTU9ERShucl9hcHBsaWVkLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDgxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19zel9hcHBsaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00ODMtXFx0XFx0X19BVFRSX1JPX01PREUoc3pfYXBwbGllZCwgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4NC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfc3pfb3BzX2ZpbHRlcl9wYXNzZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ni1cXHRcXHRfX0FUVFJfUk9fTU9ERShzel9vcHNfZmlsdGVyX3Bhc3NlZCwgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg4OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfcXRfZXhjZWVkc19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg5LVxcdFxcdF9fQVRUUl9ST19NT0RFKHF0X2V4Y2VlZHMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3NuYXBzaG90c19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDkyLVxcdFxcdF9fQVRUUl9ST19NT0RFKG5yX3NuYXBzaG90cywgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk0OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbWF4X25yX3NuYXBzaG90c19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDk1LVxcdFxcdF9fQVRUUl9SV19NT0RFKG1heF9ucl9zbmFwc2hvdHMsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5NzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc3RhdHNfYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk4OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl90cmllZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5OTpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfc3pfdHJpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDA6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX25yX2FwcGxpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDE6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X2FwcGxpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDI6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X29wc19maWx0ZXJfcGFzc2VkX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAzOlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19xdF9leGNlZWRzX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTA0OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl9zbmFwc2hvdHNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDU6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX21heF9ucl9zbmFwc2hvdHNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDYtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA3LX07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwODpBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3N0YXRzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTA6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc3RhdHNfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMTpcXHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3N0YXRzX3JlbGVhc2UsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUxMi1cXHQuc3lzZnNfb3BzID0gXFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTM6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfc3RhdHNfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MTQtfTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01MjM9ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjgtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyOTpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0MC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQxOnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQyLVxcdFxcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ0OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0NS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ2OlxcdGZpbHRlciA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQ3LVxcdGlmIChmaWx0ZXIpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTkzPXN0YXRpYyBzc2l6ZV90IHR5cGVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTY6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTc6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTgtXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjI3PXN0YXRpYyBzc2l6ZV90IHR5cGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjI5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMwOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjMyLVxcdHNzaXplX3QgcmV0ID0gLUVJTlZBTDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NTI9c3RhdGljIHNzaXplX3QgbWF0Y2hpbmdfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTU6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTY6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTctXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjYxPXN0YXRpYyBzc2l6ZV90IG1hdGNoaW5nX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2My17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2Ni1cXHRib29sIG1hdGNoaW5nO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTY3Nj1zdGF0aWMgc3NpemVfdCBhbGxvd19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY3OC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY3OTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY4MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY4MS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02ODU9c3RhdGljIHNzaXplX3QgYWxsb3dfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjg3LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg4OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg5OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjkwLVxcdGJvb2wgYWxsb3c7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzAwPXN0YXRpYyBzc2l6ZV90IG1lbWNnX3BhdGhfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDIte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDM6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDQ6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDUtXFx0aW50IGxlbjtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDc6XFx0aWYgKCFtdXRleF90cnlsb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSlcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA4LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzEwLVxcdFxcdFxcdGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA/IGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA6IFxcXCJcXFwiKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzExOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxMi1cXHRyZXR1cm4gbGVuO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTcxNT1zdGF0aWMgc3NpemVfdCBtZW1jZ19wYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxNy17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxOTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyMC1cXHRjaGFyICpwYXRoID0ga21hbGxvY19hcnJheShzaXplX2FkZChjb3VudCwgMSksIHNpemVvZigqcGF0aCksXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzI2LVxcdHN0cnNjcHkocGF0aCwgYnVmLCBjb3VudCArIDEpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3Mjc6XFx0aWYgKCFtdXRleF90cnlsb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSkge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MjgtXFx0XFx0a2ZyZWUocGF0aCk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzMyLVxcdGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA9IHBhdGg7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczMzpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRhbW9uX3N5c2ZzX2xvY2spO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MzQtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTczNz1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzM5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQwOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQyLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTc0Nj1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc0OC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc0OTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc1MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc1MS1cXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcXHUwMDI2ZmlsdGVyLVxcdTAwM2VhZGRyX3JhbmdlLnN0YXJ0KTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03NTY9c3RhdGljIHNzaXplX3QgYWRkcl9lbmRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NTgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NTk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NjA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NjEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzY1PXN0YXRpYyBzc2l6ZV90IGFkZHJfZW5kX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc2Ny17XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjIxLjE0OTM2NjYwOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTA1NTg3MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBGYWlsdXJlIEhhbmRsaW5nKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgaXQgaGFuZGxlcyBmYWlsdXJlcyBpbiBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCB3aXRoaW4gdGhlIGBkYW1vc19hcHBseV9zY2hlbWVgIGZ1bmN0aW9uLiBJIHNlZSB0aGUga2V5IGNoYW5nZSBpcyBpbiBgbW0vZGFtb24vY29yZS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDI2MDAuIFRoZSBvcmlnaW5hbCBjb2RlIHVuY29uZGl0aW9uYWxseSBjYWxsZWQgYGRhbW9uX3NwbGl0X3JlZ2lvbl9hdGAsIGJ1dCBub3cgdGhlcmUncyBhbiBgaWZgIHN0YXRlbWVudCBjaGVja2luZyBpdHMgcmV0dXJuIHZhbHVlLiBBIG5vbi16ZXJvIHJldHVybiB2YWx1ZSwgaW5kaWNhdGluZyBmYWlsdXJlLCB3aWxsIG5vdyB0cmlnZ2VyIGEgYGdvdG8gdXBkYXRlX3N0YXRgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZmFpbHVyZSBwYXRoLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGZhaWx1cmUgc2NlbmFyaW9zIG9mIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGFuZCBob3cgYXJlIHRoZXkgYmVpbmcgYWRkcmVzc2VkPyBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgY2hhbmdlIGltcGFjdHMgc3RhdGlzdGljcyB1cGRhdGVzIGFuZCBvdmVyYWxsIHNjaGVtZSBhcHBsaWNhdGlvbi4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbW9kaWZpY2F0aW9ucyB0aGF0IHRoaXMgaXMgbGlua2VkIHRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE2NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyNC42NTQ5NTY2MDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTkwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTkwOlxcdFxcdFxcdH1cXG4yNTkxOlxcdFxcdFxcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0aXRlciwgYykge1xcbjI1OTI6XFx0XFx0XFx0XFx0aWYgKHRpdGVyID09IHQpXFxuMjU5MzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4yNTk0OlxcdFxcdFxcdFxcdHRpZHgrKztcXG4yNTk1OlxcdFxcdFxcdH1cXG4yNTk2OlxcdFxcdFxcdG5yX2FjY2Vzc2VzID0gZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0ociwgYyk7XFxuMjU5NzpcXHRcXHRcXHRkb190cmFjZSA9IHRydWU7XFxuMjU5ODpcXHRcXHR9XFxuMjU5OTpcXHRcXG4yNjAwOlxcdFxcdGlmIChjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XFxuMjYwMTpcXHRcXHRcXHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcXHUwMDI2XFx1MDAyNlxcbjI2MDI6XFx0XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogKyBzeiBcXHUwMDNlIHF1b3RhLVxcdTAwM2Vlc3opIHtcXG4yNjAzOlxcdFxcdFxcdFxcdHN6ID0gQUxJR05fRE9XTihxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3osXFxuMjYwNDpcXHRcXHRcXHRcXHRcXHRcXHRjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KTtcXG4yNjA1OlxcdFxcdFxcdFxcdGlmICghc3opXFxuMjYwNjpcXHRcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbjI2MDc6XFx0XFx0XFx0XFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXFxuMjYwODpcXHRcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbjI2MDk6XFx0XFx0XFx0fVxcbjI2MTA6XFx0XFx0XFx0aWYgKGRhbW9zX2NvcmVfZmlsdGVyX291dChjLCB0LCByLCBzKSlcXG4yNjExOlxcdFxcdFxcdFxcdHJldHVybjtcXG4yNjEyOlxcdFxcdFxcdGt0aW1lX2dldF9jb2Fyc2VfdHM2NChcXHUwMDI2YmVnaW4pO1xcbjI2MTM6XFx0XFx0XFx0dHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5KGNpZHgsIHNpZHgsIHRpZHgsIHIsIG5yX2FjY2Vzc2VzLFxcbjI2MTQ6XFx0XFx0XFx0XFx0XFx0ZGFtb25fbnJfcmVnaW9ucyh0KSwgZG9fdHJhY2UpO1xcbjI2MTU6XFx0XFx0XFx0c3pfYXBwbGllZCA9IGMtXFx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcXG4yNjE2OlxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XFxuMjYxNzpcXHRcXHRcXHRkYW1vc193YWxrX2NhbGxfd2FsayhjLCB0LCByLCBzLCBzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XFxuMjYxODpcXHRcXHRcXHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXFx1MDAyNmVuZCk7XFxuMjYxOTpcXHRcXHRcXHRxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9ucyArPSB0aW1lc3BlYzY0X3RvX25zKFxcdTAwMjZlbmQpIC1cXG4yNjIwOlxcdFxcdFxcdFxcdHRpbWVzcGVjNjRfdG9fbnMoXFx1MDAyNmJlZ2luKTtcXG4yNjIxOlxcdFxcdFxcdGRhbW9zX2NoYXJnZV9xdW90YShxdW90YSwgc3osIHN6X2FwcGxpZWQpO1xcbjI2MjI6XFx0XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKSB7XFxuMjYyMzpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gdDtcXG4yNjI0OlxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cXHUwMDNlYXIuZW5kO1xcbjI2MjU6XFx0XFx0XFx0fVxcbjI2MjY6XFx0XFx0fVxcbjI2Mjc6XFx0XFx0aWYgKHMtXFx1MDAzZWFjdGlvbiAhPSBEQU1PU19TVEFUKVxcbjI2Mjg6XFx0XFx0XFx0ci1cXHUwMDNlYWdlID0gMDtcXG4yNjI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyNC42NTUyMTM5NTZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE2NjI4NDAzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgUmVjZW50IERBTU9OIENvcmUgTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoZSByZWNlbnQgY2hhbmdlcyB3aXRoaW4gdGhlIERBTU9OIGNvcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZywgc28gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL2NvcmUuY2AgdGhhdCB3ZXJlIHRvdWNoZWQuIFNwZWNpZmljYWxseSwgSSdsbCByZWZyZXNoIG15IG1lbW9yeSBvbiBgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBhbmQgYGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwYC4gS25vd2luZyB0aGUgY29udGV4dCBhbmQgaW50ZW50IG9mIHRoZSBtb2RpZmljYXRpb25zIHRoZXJlIGlzIGNydWNpYWwuXG5cblRoZW4sIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGxvZ2ljIHN1cnJvdW5kaW5nIHRob3NlIGZ1bmN0aW9ucyBpbiB0aGUgYnJvYWRlciBjb250ZXh0LCBJIHRoaW5rIEknbGwgcmUtcmVhZCB0aGUgY29kZSBhcm91bmQgbGluZXMgMjgwMCB0byAzMDIwIGluIGBtbS9kYW1vbi9jb3JlLmNgLiBIb3BlZnVsbHksIHRoYXQgd2lsbCByZWZyZXNoIG15IG1lbW9yeSBvZiB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgYW5kIGhvdyB0aGUgcGllY2VzIGZpdCB0b2dldGhlci4gSSB3YW50IHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGNvbXBsZXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI4MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MjYuODIxNTAwMzIzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjgwMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjgwMDpcXHRcXHRfX2tlcm5lbF91bG9uZ190IG51bWVyYXRvcjtcXG4yODAxOlxcdFxcbjI4MDI6XFx0XFx0aWYgKGludmFsaWRfbWVtX25vZGUoZ29hbC1cXHUwMDNlbmlkKSkge1xcbjI4MDM6XFx0XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxcbjI4MDQ6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuMjgwNTpcXHRcXHRcXHRlbHNlXFx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqL1xcbjI4MDY6XFx0XFx0XFx0XFx0cmV0dXJuIDEwMDAwO1xcbjI4MDc6XFx0XFx0fVxcbjI4MDg6XFx0XFxuMjgwOTpcXHRcXHRzaV9tZW1pbmZvX25vZGUoXFx1MDAyNmksIGdvYWwtXFx1MDAzZW5pZCk7XFxuMjgxMDpcXHRcXHRpZiAoIWkudG90YWxyYW0gfHwgaS50b3RhbHJhbSBcXHUwMDNjIGkuZnJlZXJhbSkge1xcbjI4MTE6XFx0XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxcbjI4MTI6XFx0XFx0XFx0XFx0cmV0dXJuIDEwMDAwO1xcbjI4MTM6XFx0XFx0XFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cXG4yODE0OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbjI4MTU6XFx0XFx0fVxcbjI4MTY6XFx0XFxuMjgxNzpcXHRcXHRpZiAoZ29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlApXFxuMjgxODpcXHRcXHRcXHRudW1lcmF0b3IgPSBpLnRvdGFscmFtIC0gaS5mcmVlcmFtO1xcbjI4MTk6XFx0XFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cXG4yODIwOlxcdFxcdFxcdG51bWVyYXRvciA9IGkuZnJlZXJhbTtcXG4yODIxOlxcdFxcdHJldHVybiBtdWx0X2ZyYWMobnVtZXJhdG9yLCAxMDAwMCwgaS50b3RhbHJhbSk7XFxuMjgyMjpcXHR9XFxuMjgyMzpcXHRcXG4yODI0OlxcdHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXFxuMjgyNTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcXG4yODI2OlxcdHtcXG4yODI3OlxcdFxcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcXG4yODI4OlxcdFxcdHN0cnVjdCBscnV2ZWMgKmxydXZlYztcXG4yODI5OlxcdFxcdHVuc2lnbmVkIGxvbmcgdXNlZF9wYWdlcywgbnVtZXJhdG9yO1xcbjI4MzA6XFx0XFx0c3RydWN0IHN5c2luZm8gaTtcXG4yODMxOlxcdFxcbjI4MzI6XFx0XFx0aWYgKGludmFsaWRfbWVtX25vZGUoZ29hbC1cXHUwMDNlbmlkKSkge1xcbjI4MzM6XFx0XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXFxuMjgzNDpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4yODM1OlxcdFxcdFxcdGVsc2VcXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cXG4yODM2OlxcdFxcdFxcdFxcdHJldHVybiAxMDAwMDtcXG4yODM3OlxcdFxcdH1cXG4yODM4OlxcdFxcbjI4Mzk6XFx0XFx0bWVtY2cgPSBtZW1fY2dyb3VwX2dldF9mcm9tX2lkKGdvYWwtXFx1MDAzZW1lbWNnX2lkKTtcXG4yODQwOlxcdFxcdGlmICghbWVtY2cpIHtcXG4yODQxOlxcdFxcdFxcdGlmIChnb2FsLVxcdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQKVxcbjI4NDI6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuMjg0MzpcXHRcXHRcXHRlbHNlXFx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQICovXFxuMjg0NDpcXHRcXHRcXHRcXHRyZXR1cm4gMTAwMDA7XFxuMjg0NTpcXHRcXHR9XFxuMjg0NjpcXHRcXG4yODQ3OlxcdFxcdG1lbV9jZ3JvdXBfZmx1c2hfc3RhdHMobWVtY2cpO1xcbjI4NDg6XFx0XFx0bHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIE5PREVfREFUQShnb2FsLVxcdTAwM2VuaWQpKTtcXG4yODQ5OlxcdFxcdHVzZWRfcGFnZXMgPSBscnV2ZWNfcGFnZV9zdGF0ZShscnV2ZWMsIE5SX0FDVElWRV9BTk9OKTtcXG4yODUwOlxcdFxcdHVzZWRfcGFnZXMgKz0gbHJ1dmVjX3BhZ2Vfc3RhdGUobHJ1dmVjLCBOUl9JTkFDVElWRV9BTk9OKTtcXG4yODUxOlxcdFxcdHVzZWRfcGFnZXMgKz0gbHJ1dmVjX3BhZ2Vfc3RhdGUobHJ1dmVjLCBOUl9BQ1RJVkVfRklMRSk7XFxuMjg1MjpcXHRcXHR1c2VkX3BhZ2VzICs9IGxydXZlY19wYWdlX3N0YXRlKGxydXZlYywgTlJfSU5BQ1RJVkVfRklMRSk7XFxuMjg1MzpcXHRcXG4yODU0OlxcdFxcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcXG4yODU1OlxcdFxcbjI4NTY6XFx0XFx0c2lfbWVtaW5mb19ub2RlKFxcdTAwMjZpLCBnb2FsLVxcdTAwM2VuaWQpO1xcbjI4NTc6XFx0XFx0aWYgKCFpLnRvdGFscmFtIHx8IGkudG90YWxyYW0gXFx1MDAzYyB1c2VkX3BhZ2VzKSB7XFxuMjg1ODpcXHRcXHRcXHRpZiAoZ29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUClcXG4yODU5OlxcdFxcdFxcdFxcdHJldHVybiAxMDAwMDtcXG4yODYwOlxcdFxcdFxcdGVsc2VcXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cXG4yODYxOlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbjI4NjI6XFx0XFx0fVxcbjI4NjM6XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXFxuMjg2NDpcXHRcXHRcXHRudW1lcmF0b3IgPSB1c2VkX3BhZ2VzO1xcbjI4NjU6XFx0XFx0ZWxzZVxcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCAqL1xcbjI4NjY6XFx0XFx0XFx0bnVtZXJhdG9yID0gaS50b3RhbHJhbSAtIHVzZWRfcGFnZXM7XFxuMjg2NzpcXHRcXHRyZXR1cm4gbXVsdF9mcmFjKG51bWVyYXRvciwgMTAwMDAsIGkudG90YWxyYW0pO1xcbjI4Njg6XFx0fVxcbjI4Njk6XFx0XFxuMjg3MDpcXHQjaWZkZWYgQ09ORklHX0RBTU9OX1BBRERSXFxuMjg3MTpcXHQvKlxcbjI4NzI6XFx0ICogZGFtb3NfY2FsY19lbGlnaWJsZV9ieXRlcygpIC0gQ2FsY3VsYXRlIHJhdyBlbGlnaWJsZSBieXRlcyBwZXIgbm9kZS5cXG4yODczOlxcdCAqIEBjOlxcdFxcdFRoZSBEQU1PTiBjb250ZXh0LlxcbjI4NzQ6XFx0ICogQHM6XFx0XFx0VGhlIHNjaGVtZS5cXG4yODc1OlxcdCAqIEBuaWQ6XFx0VGhlIHRhcmdldCBOVU1BIG5vZGUgaWQuXFxuMjg3NjpcXHQgKiBAdG90YWw6XFx0T3V0cHV0IGZvciB0b3RhbCBlbGlnaWJsZSBieXRlcyBhY3Jvc3MgYWxsIG5vZGVzLlxcbjI4Nzc6XFx0ICpcXG4yODc4OlxcdCAqIEl0ZXJhdGVzIHRocm91Z2ggZWFjaCBmb2xpbyBpbiBlbGlnaWJsZSByZWdpb25zIHRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lXFxuMjg3OTpcXHQgKiB3aGljaCBub2RlIHRoZSBtZW1vcnkgcmVzaWRlcyBvbi4gUmV0dXJucyBlbGlnaWJsZSBieXRlcyBvbiB0aGUgc3BlY2lmaWVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjI2LjgyMTY5MjU1M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTQ1Njg3NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgaGllcmFyY2h5IGZvciB0aGVzZSB0aHJlZSBmdW5jdGlvbnM6IGBkYW1vc19nZXRfbm9kZV9tZW1fYnBgLCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icGAsIGFuZCBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnBgLiBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGVpciBjYWxsZXJzLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW52b2tlZCB3aWxsIGdpdmUgbWUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IGFuZCBoZWxwIG1lIHRvIGdyYXNwIHRoZWlyIHB1cnBvc2Ugd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaGlzIGlzIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBkZWJ1Z2dpbmcsIG9yIHBvdGVudGlhbGx5IHJlZmFjdG9yaW5nIGxhdGVyLiBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgY2FsbCBncmFwaCB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDE1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyOC43NjczODM5MDdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTgwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyOTgwOlxcdHtcXG4yOTgxOlxcdFxcdHJldHVybiAwO1xcbjI5ODI6XFx0fVxcbjI5ODM6XFx0XFxuMjk4NDpcXHRzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKFxcbjI5ODU6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxuMjk4NjpcXHR7XFxuMjk4NzpcXHRcXHRyZXR1cm4gMDtcXG4yOTg4OlxcdH1cXG4yOTg5OlxcdFxcbjI5OTA6XFx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfZWxpZ2libGVfbWVtX2JwKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuMjk5MTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMsIGludCBuaWQpXFxuMjk5MjpcXHR7XFxuMjk5MzpcXHRcXHRyZXR1cm4gMDtcXG4yOTk0OlxcdH1cXG4yOTk1OlxcdCNlbmRpZiAvKiBDT05GSUdfTlVNQSAqL1xcbjI5OTY6XFx0XFxuMjk5NzpcXHQvKlxcbjI5OTg6XFx0ICogUmV0dXJucyBMUlUtYWN0aXZlIG9yIGluYWN0aXZlIG1lbW9yeSB0byB0b3RhbCBMUlUgbWVtb3J5IHNpemUgcmF0aW8uXFxuMjk5OTpcXHQgKi9cXG4zMDAwOlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnAoYm9vbCBhY3RpdmVfcmF0aW8pXFxuMzAwMTpcXHR7XFxuMzAwMjpcXHRcXHR1bnNpZ25lZCBsb25nIGFjdGl2ZSwgaW5hY3RpdmUsIHRvdGFsO1xcbjMwMDM6XFx0XFxuMzAwNDpcXHRcXHQvKiBUaGlzIHNob3VsZCBhbGlnbiB3aXRoIC9wcm9jL21lbWluZm8gb3V0cHV0ICovXFxuMzAwNTpcXHRcXHRhY3RpdmUgPSBnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0FDVElWRV9BTk9OKSArXFxuMzAwNjpcXHRcXHRcXHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0FDVElWRV9GSUxFKTtcXG4zMDA3OlxcdFxcdGluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9JTkFDVElWRV9BTk9OKSArXFxuMzAwODpcXHRcXHRcXHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0lOQUNUSVZFX0ZJTEUpO1xcbjMwMDk6XFx0XFx0dG90YWwgPSBtYXgoYWN0aXZlICsgaW5hY3RpdmUsIDEpO1xcbjMwMTA6XFx0XFx0aWYgKGFjdGl2ZV9yYXRpbylcXG4zMDExOlxcdFxcdFxcdHJldHVybiBtdWx0X2ZyYWMoYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xcbjMwMTI6XFx0XFx0cmV0dXJuIG11bHRfZnJhYyhpbmFjdGl2ZSwgMTAwMDAsIHRvdGFsKTtcXG4zMDEzOlxcdH1cXG4zMDE0OlxcdFxcbjMwMTU6XFx0c3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19odWdlcGFnZV9tZW1fYnAodm9pZClcXG4zMDE2OlxcdHtcXG4zMDE3OlxcdFxcdHVuc2lnbmVkIGxvbmcgdGhwLCB0b3RhbF9wYWdlcywgZnJlZV9wYWdlcztcXG4zMDE4OlxcdFxcbjMwMTk6XFx0XFx0dG90YWxfcGFnZXMgPSB0b3RhbHJhbV9wYWdlcygpO1xcbjMwMjA6XFx0XFx0ZnJlZV9wYWdlcyA9IGdsb2JhbF96b25lX3BhZ2Vfc3RhdGUoTlJfRlJFRV9QQUdFUyk7XFxuMzAyMTpcXHRcXG4zMDIyOlxcdFxcdGlmICh0b3RhbF9wYWdlcyBcXHUwMDNjPSBmcmVlX3BhZ2VzKVxcbjMwMjM6XFx0XFx0XFx0cmV0dXJuIDEwMDAwO1xcbjMwMjQ6XFx0XFxuMzAyNTpcXHRcXHR0aHAgPSBnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0FOT05fVEhQUykgK1xcbjMwMjY6XFx0XFx0XFx0XFx0XFx0Z2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9TSE1FTV9USFBTKSArXFxuMzAyNzpcXHRcXHRcXHRcXHRcXHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0ZJTEVfVEhQUyk7XFxuMzAyODpcXHRcXHRyZXR1cm4gbXVsdF9mcmFjKHRocCwgMTAwMDAsIHRvdGFsX3BhZ2VzIC0gZnJlZV9wYWdlcyk7XFxuMzAyOTpcXHR9XFxuMzAzMDpcXHRcXG4zMDMxOlxcdHN0YXRpYyB2b2lkIGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG4zMDMyOlxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxuMzAzMzpcXHR7XFxuMzAzNDpcXHRcXHR1NjQgbm93X3BzaV90b3RhbDtcXG4zMDM1OlxcdFxcbjMwMzY6XFx0XFx0c3dpdGNoIChnb2FsLVxcdTAwM2VtZXRyaWMpIHtcXG4zMDM3OlxcdFxcdGNhc2UgREFNT1NfUVVPVEFfVVNFUl9JTlBVVDpcXG4zMDM4OlxcdFxcdFxcdC8qIFVzZXIgc2hvdWxkIGFscmVhZHkgc2V0IGdvYWwtXFx1MDAzZWN1cnJlbnRfdmFsdWUgKi9cXG4zMDM5OlxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMToyOC43Njc1NTgyNjdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAyNzA3NDg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIENvZGUgLSBgZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZWAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIHRvIG1lbnRhbGx5IHNjYW4gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFdoYXQncyB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZT8gSG93IGRvZXMgdGhpcyBmdW5jdGlvbiBmaXQgaW50byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmU/IEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIHF1b3RhcywgYW5kIGxpa2VseSBnb2FsIHNldHRpbmcgYW5kIHRyYWNraW5nIHJlbGF0ZWQgdG8gdGhvc2UgcXVvdGFzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXZvaWQgZ2V0dGluZyBib2dnZWQgZG93biBpbiBpbmRpdmlkdWFsIGxpbmVzLCBidXQgcmF0aGVyIHVuZGVyc3RhbmQgdGhlIGhpZ2ggbGV2ZWwgZnVuY3Rpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuIFxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgb2YgdGhhdCBwaWVjZSBvZiBjb2RlLiBJdCBsb29rcyBsaWtlIGl0IGRlYWxzIHdpdGggc2V0dGluZyB0aGUgY3VycmVudCBxdW90YSB2YWx1ZSBvciBwb3NzaWJseSBpdHMgZ29hbC4gSSB3b25kZXIgd2hhdCB0aGUgaW5wdXQgcGFyYW1ldGVycyBhcmU/IEFuZCB3aGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBNYXliZSBJIGNhbiBjaGVjayB0aGUgaW5wdXQgdHlwZSBzaWduYXR1cmUgaWYgaXTigJlzIGF2YWlsYWJsZS4gVWx0aW1hdGVseSwgd2hhdCBpcyB0aGUgZ29hbCBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBmdW5jdGlvbiBvbiB0aGUgc3lzdGVtPyBJIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGFwcGxpY2F0aW9uLiBcblxuXG4iLCJJbnB1dFRva2VucyI6MzAxODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjMwLjc5NDYzNjk2NloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODgzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMzUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMwMzU6XFx0XFxuMzAzNjpcXHRcXHRzd2l0Y2ggKGdvYWwtXFx1MDAzZW1ldHJpYykge1xcbjMwMzc6XFx0XFx0Y2FzZSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUOlxcbjMwMzg6XFx0XFx0XFx0LyogVXNlciBzaG91bGQgYWxyZWFkeSBzZXQgZ29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSAqL1xcbjMwMzk6XFx0XFx0XFx0YnJlYWs7XFxuMzA0MDpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUzpcXG4zMDQxOlxcdFxcdFxcdG5vd19wc2lfdG90YWwgPSBkYW1vc19nZXRfc29tZV9tZW1fcHNpX3RvdGFsKCk7XFxuMzA0MjpcXHRcXHRcXHRnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gbm93X3BzaV90b3RhbCAtIGdvYWwtXFx1MDAzZWxhc3RfcHNpX3RvdGFsO1xcbjMwNDM6XFx0XFx0XFx0Z29hbC1cXHUwMDNlbGFzdF9wc2lfdG90YWwgPSBub3dfcHNpX3RvdGFsO1xcbjMwNDQ6XFx0XFx0XFx0YnJlYWs7XFxuMzA0NTpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlA6XFxuMzA0NjpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlA6XFxuMzA0NzpcXHRcXHRcXHRnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfZ2V0X25vZGVfbWVtX2JwKGdvYWwpO1xcbjMwNDg6XFx0XFx0XFx0YnJlYWs7XFxuMzA0OTpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUDpcXG4zMDUwOlxcdFxcdGNhc2UgREFNT1NfUVVPVEFfTk9ERV9NRU1DR19GUkVFX0JQOlxcbjMwNTE6XFx0XFx0XFx0Z29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoZ29hbCk7XFxuMzA1MjpcXHRcXHRcXHRicmVhaztcXG4zMDUzOlxcdFxcdGNhc2UgREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUDpcXG4zMDU0OlxcdFxcdGNhc2UgREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQOlxcbjMwNTU6XFx0XFx0XFx0Z29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKFxcbjMwNTY6XFx0XFx0XFx0XFx0XFx0Z29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlApO1xcbjMwNTc6XFx0XFx0XFx0YnJlYWs7XFxuMzA1ODpcXHRcXHRjYXNlIERBTU9TX1FVT1RBX05PREVfRUxJR0lCTEVfTUVNX0JQOlxcbjMwNTk6XFx0XFx0XFx0Z29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9ub2RlX2VsaWdpYmxlX21lbV9icChjLCBzLFxcbjMwNjA6XFx0XFx0XFx0XFx0XFx0Z29hbC1cXHUwMDNlbmlkKTtcXG4zMDYxOlxcdFxcdFxcdGJyZWFrO1xcbjMwNjI6XFx0XFx0Y2FzZSBEQU1PU19RVU9UQV9IVUdFUEFHRV9NRU1fQlA6XFxuMzA2MzpcXHRcXHRcXHRnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfaHVnZXBhZ2VfbWVtX2JwKCk7XFxuMzA2NDpcXHRcXHRcXHRicmVhaztcXG4zMDY1OlxcdFxcdGRlZmF1bHQ6XFxuMzA2NjpcXHRcXHRcXHRicmVhaztcXG4zMDY3OlxcdFxcdH1cXG4zMDY4OlxcdH1cXG4zMDY5OlxcdFxcbjMwNzA6XFx0LyogUmV0dXJuIHRoZSBoaWdoZXN0IHNjb3JlIHNpbmNlIGl0IG1ha2VzIHNjaGVtZXMgbGVhc3QgYWdncmVzc2l2ZSAqL1xcbjMwNzE6XFx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfcXVvdGFfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbjMwNzI6XFx0e1xcbjMwNzM6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XFxuMzA3NDpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbjMwNzU6XFx0XFx0dW5zaWduZWQgbG9uZyBoaWdoZXN0X3Njb3JlID0gMDtcXG4zMDc2OlxcdFxcbjMwNzc6XFx0XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxdW90YSkge1xcbjMwNzg6XFx0XFx0XFx0ZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShjLCBzLCBnb2FsKTtcXG4zMDc5OlxcdFxcdFxcdGhpZ2hlc3Rfc2NvcmUgPSBtYXgoaGlnaGVzdF9zY29yZSxcXG4zMDgwOlxcdFxcdFxcdFxcdFxcdG11bHRfZnJhYyhnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlLCAxMDAwMCxcXG4zMDgxOlxcdFxcdFxcdFxcdFxcdFxcdGdvYWwtXFx1MDAzZXRhcmdldF92YWx1ZSkpO1xcbjMwODI6XFx0XFx0fVxcbjMwODM6XFx0XFxuMzA4NDpcXHRcXHRyZXR1cm4gaGlnaGVzdF9zY29yZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MzAuNzk0ODI3Mzg2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMzA1MjIyNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIFBoeXNpY2FsIEFkZHJlc3MgKHBhZGRyKSBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYHBhZGRyLmNgIGFuZCBgdmFkZHIuY2AgbW9kaWZpY2F0aW9ucy4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGV2b2x1dGlvbiBvZiB0aGUgcGh5c2ljYWwgYWRkcmVzcyByZWxhdGVkIGFzcGVjdHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcyBvbiBEQU1PTidzIHBoeXNpY2FsIGFkZHJlc3Mgb3BlcmF0aW9ucy4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHNjcnV0aW5pemluZyB0aGUgYGRhbW9uX3BhX3BhZ2VvdXRgLCBgZGFtb25fcGFfZGVfYWN0aXZhdGVgLCBgZGFtb25fcGFfbWlncmF0ZWAsIGFuZCBgZGFtb25fcGFfc3RhdGAgZnVuY3Rpb25zLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgd2FzIGhhcHBlbmluZyBiZWZvcmUgdGhlIGNoYW5nZXMgYW5kIGhvdyB0aGUgYmVoYXZpb3IgaGFzIGJlZW4gYWx0ZXJlZC4gSSdsbCBiZSBjb25jZW50cmF0aW5nIG9uIHRoZSBgbW0vZGFtb24vcGFkZHIuY2AgZmlsZSwgYXJvdW5kIGxpbmVzIDI0MC0zOTAsIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgaXMgYmVpbmcgbWFuYWdlZCBhbmQgaW50ZXJhY3RlZCB3aXRoLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIG1vZGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzI1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6MzIuOTI1MzUyMjM2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL3BhZGRyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjQwOlxcdFxcdFxcdGlmICghZmlsdGVyKVxcbiAyNDE6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDI0MjpcXHRcXHRcXHRkYW1vc19hZGRfZmlsdGVyKHMsIGZpbHRlcik7XFxuIDI0MzpcXHRcXHR9XFxuIDI0NDpcXHRcXG4gMjQ1OlxcdFxcdGFkZHIgPSBkYW1vbl9wYV9waHlzX2FkZHIoci1cXHUwMDNlYXIuc3RhcnQsIGFkZHJfdW5pdCk7XFxuIDI0NjpcXHRcXHR3aGlsZSAoYWRkciBcXHUwMDNjIGRhbW9uX3BhX3BoeXNfYWRkcihyLVxcdTAwM2Vhci5lbmQsIGFkZHJfdW5pdCkpIHtcXG4gMjQ3OlxcdFxcdFxcdGZvbGlvID0gZGFtb25fZ2V0X2ZvbGlvKFBIWVNfUEZOKGFkZHIpKTtcXG4gMjQ4OlxcdFxcdFxcdGlmIChkYW1vbl9wYV9pbnZhbGlkX2RhbW9zX2ZvbGlvKGZvbGlvLCBzKSkge1xcbiAyNDk6XFx0XFx0XFx0XFx0YWRkciArPSBQQUdFX1NJWkU7XFxuIDI1MDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMjUxOlxcdFxcdFxcdH1cXG4gMjUyOlxcdFxcbiAyNTM6XFx0XFx0XFx0aWYgKGRhbW9zX3BhX2ZpbHRlcl9vdXQocywgZm9saW8pKVxcbiAyNTQ6XFx0XFx0XFx0XFx0Z290byBwdXRfZm9saW87XFxuIDI1NTpcXHRcXHRcXHRlbHNlXFxuIDI1NjpcXHRcXHRcXHRcXHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0XFx0Zm9saW9fY2xlYXJfcmVmZXJlbmNlZChmb2xpbyk7XFxuIDI1OTpcXHRcXHRcXHRmb2xpb190ZXN0X2NsZWFyX3lvdW5nKGZvbGlvKTtcXG4gMjYwOlxcdFxcdFxcdGlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKVxcbiAyNjE6XFx0XFx0XFx0XFx0Z290byBwdXRfZm9saW87XFxuIDI2MjpcXHRcXHRcXHRpZiAoZm9saW9fdGVzdF91bmV2aWN0YWJsZShmb2xpbykpXFxuIDI2MzpcXHRcXHRcXHRcXHRmb2xpb19wdXRiYWNrX2xydShmb2xpbyk7XFxuIDI2NDpcXHRcXHRcXHRlbHNlXFxuIDI2NTpcXHRcXHRcXHRcXHRsaXN0X2FkZChcXHUwMDI2Zm9saW8tXFx1MDAzZWxydSwgXFx1MDAyNmZvbGlvX2xpc3QpO1xcbiAyNjY6XFx0cHV0X2ZvbGlvOlxcbiAyNjc6XFx0XFx0XFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XFxuIDI2ODpcXHRcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbiAyNjk6XFx0XFx0fVxcbiAyNzA6XFx0XFx0aWYgKGluc3RhbGxfeW91bmdfZmlsdGVyKVxcbiAyNzE6XFx0XFx0XFx0ZGFtb3NfZGVzdHJveV9maWx0ZXIoZmlsdGVyKTtcXG4gMjcyOlxcdFxcdGFwcGxpZWQgPSByZWNsYWltX3BhZ2VzKFxcdTAwMjZmb2xpb19saXN0KTtcXG4gMjczOlxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbiAyNzQ6XFx0XFx0cy1cXHUwMDNlbGFzdF9hcHBsaWVkID0gZm9saW87XFxuIDI3NTpcXHRcXHRyZXR1cm4gZGFtb25fcGFfY29yZV9hZGRyKGFwcGxpZWQgKiBQQUdFX1NJWkUsIGFkZHJfdW5pdCk7XFxuIDI3NjpcXHR9XFxuIDI3NzpcXHRcXG4gMjc4OlxcdHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZV9hY3RpdmF0ZShcXG4gMjc5OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHVuc2lnbmVkIGxvbmcgYWRkcl91bml0LFxcbiAyODA6XFx0XFx0XFx0c3RydWN0IGRhbW9zICpzLCBib29sIGFjdGl2YXRlLFxcbiAyODE6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZClcXG4gMjgyOlxcdHtcXG4gMjgzOlxcdFxcdHBoeXNfYWRkcl90IGFkZHIsIGFwcGxpZWQgPSAwO1xcbiAyODQ6XFx0XFx0c3RydWN0IGZvbGlvICpmb2xpbyA9IE5VTEw7XFxuIDI4NTpcXHRcXG4gMjg2OlxcdFxcdGFkZHIgPSBkYW1vbl9wYV9waHlzX2FkZHIoci1cXHUwMDNlYXIuc3RhcnQsIGFkZHJfdW5pdCk7XFxuIDI4NzpcXHRcXHR3aGlsZSAoYWRkciBcXHUwMDNjIGRhbW9uX3BhX3BoeXNfYWRkcihyLVxcdTAwM2Vhci5lbmQsIGFkZHJfdW5pdCkpIHtcXG4gMjg4OlxcdFxcdFxcdGZvbGlvID0gZGFtb25fZ2V0X2ZvbGlvKFBIWVNfUEZOKGFkZHIpKTtcXG4gMjg5OlxcdFxcdFxcdGlmIChkYW1vbl9wYV9pbnZhbGlkX2RhbW9zX2ZvbGlvKGZvbGlvLCBzKSkge1xcbiAyOTA6XFx0XFx0XFx0XFx0YWRkciArPSBQQUdFX1NJWkU7XFxuIDI5MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMjkyOlxcdFxcdFxcdH1cXG4gMjkzOlxcdFxcbiAyOTQ6XFx0XFx0XFx0aWYgKGRhbW9zX3BhX2ZpbHRlcl9vdXQocywgZm9saW8pKVxcbiAyOTU6XFx0XFx0XFx0XFx0Z290byBwdXRfZm9saW87XFxuIDI5NjpcXHRcXHRcXHRlbHNlXFxuIDI5NzpcXHRcXHRcXHRcXHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcXG4gMjk4OlxcdFxcbiAyOTk6XFx0XFx0XFx0aWYgKGFjdGl2YXRlKVxcbiAzMDA6XFx0XFx0XFx0XFx0Zm9saW9fYWN0aXZhdGUoZm9saW8pO1xcbiAzMDE6XFx0XFx0XFx0ZWxzZVxcbiAzMDI6XFx0XFx0XFx0XFx0Zm9saW9fZGVhY3RpdmF0ZShmb2xpbyk7XFxuIDMwMzpcXHRcXHRcXHRhcHBsaWVkICs9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcXG4gMzA0OlxcdHB1dF9mb2xpbzpcXG4gMzA1OlxcdFxcdFxcdGFkZHIgPSBQRk5fUEhZUyhmb2xpb19wZm4oZm9saW8pKSArIGZvbGlvX3NpemUoZm9saW8pO1xcbiAzMDY6XFx0XFx0XFx0Zm9saW9fcHV0KGZvbGlvKTtcXG4gMzA3OlxcdFxcdH1cXG4gMzA4OlxcdFxcdHMtXFx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xcbiAzMDk6XFx0XFx0cmV0dXJuIGRhbW9uX3BhX2NvcmVfYWRkcihhcHBsaWVkICogUEFHRV9TSVpFLCBhZGRyX3VuaXQpO1xcbiAzMTA6XFx0fVxcbiAzMTE6XFx0XFxuIDMxMjpcXHRzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9hY3RpdmF0ZV9wYWdlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbiAzMTM6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhZGRyX3VuaXQsIHN0cnVjdCBkYW1vcyAqcyxcXG4gMzE0OlxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXFxuIDMxNTpcXHR7XFxuIDMxNjpcXHRcXHRyZXR1cm4gZGFtb25fcGFfZGVfYWN0aXZhdGUociwgYWRkcl91bml0LCBzLCB0cnVlLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gMzE3OlxcdH1cXG4gMzE4OlxcdFxcbiAzMTk6XFx0c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfZGVhY3RpdmF0ZV9wYWdlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTozMi45MjU0NDQ4ODZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjY4Mjk1MjQzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoZXNlIE1lbW9yeSBNYW5hZ2VtZW50IEJ1ZyBGaXhlcyBhbmQgVGhlaXIgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHNvbWUgY3J1Y2lhbCBmdW5jdGlvbmFsIGJ1Z3Mgd2l0aGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBEQU1PTiBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgdGhlcmUgd2VyZSBpc3N1ZXMgd2l0aCBob3cgYWRkcmVzc2VzIHdlcmUgY2FsY3VsYXRlZCBhbmQgaXRlcmF0ZWQgYWNyb3NzIGZvbGlvcywgcGFydGljdWxhcmx5IHdoZW4gZGVhbGluZyB3aXRoIGh1Z2UgcGFnZXMgb3IgZm9saW9zIHRoYXQgZGlkbid0IHN0YXJ0IGF0IGEgcGFnZSBib3VuZGFyeS4gVGhlIGZpeGVzLCBpbnZvbHZpbmcgY2FsY3VsYXRpb25zIGxpa2UgYFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbylgIGFuZCBgZm9saW9fbnJfcGFnZXMoZm9saW8pIC0gcGFnZV9pZHhgLCBlbnN1cmUgdGhhdCB3ZSdyZSBjb3JyZWN0bHkgdHJhdmVyc2luZyBtZW1vcnkgcmVnaW9ucywgZXZlbiB3aGVuIHN1Yi1wYWdlIGFjY2VzcyBpcyBpbnZvbHZlZC4gSSBjYW4gc2VlIHRoaXMgc29sdmVzIHNldmVyYWwgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIHNjZW5hcmlvcyBpbiBgZGFtb25fcGFfcGFnZW91dGAsIGB2YWRkci5jYCwgYW5kIGBjb3JlLmNgLiBFeGNlbGxlbnQgd29yayB0aGVyZSAtIHRoaXMgaXMgYSBzb2xpZCBpbXByb3ZlbWVudC4gVGhlcmUgd2VyZSBhbHNvIGltcG9ydGFudCBmaXhlcyByZWdhcmRpbmcgZmFpbHVyZSBoYW5kbGluZyBvZiBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCwgaW5jbHVkaW5nIGNoZWNrcyBmb3IgZGl2aXNpb24gYnkgemVybyBhbmQgYWRkcmVzc2luZyBvdXQtb2YtYm91bmRzIFJBTSBhY2Nlc3MuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzOiBhcmUgdGhlc2UgZml4ZXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSwgeWVzLiBEQU1PTiBpcyBwYXJ0IG9mIHRoZSBNTSBzdWJzeXN0ZW0sIGEgY3JpdGljYWwgY29tcG9uZW50IG9mIHRoZSBrZXJuZWwuIFVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCBpdCB2aWEgc3lzZnMsIGRlYnVnZnMsIGFuZCBtb2R1bGVzLiBJIGtub3cgdGhhdCBEQU1PTiBpcyBhY2Nlc3NpYmxlIGFuZCB0ZXN0YWJsZSBpbiBjb21tb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgS1ZNIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBmdXp6LiBBbmQgdGhlIHNoZWVyIGFtb3VudCBvZiBsb2dpYyBjaGFuZ2UgaGVyZSDigJMgdGhlIGVycm9yIGhhbmRsaW5nLCB0aGUgYWRkcmVzcyBjYWxjdWxhdGlvbnMgYWNyb3NzIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIHNwYWNlcywgYW5kIHRoZSBtZXRyaWMgY2FsY3VsYXRpb25zIGZvciBxdW90YSBnb2FscyDigJMgYWxsIG9mIHRoaXMgc2NyZWFtcyBcInZ1bG5lcmFibGUgc3VyZmFjZS5cIiAqKldvcnRoRnV6emluZyBpcyBkZWZpbml0ZWx5IGB0cnVlYCEqKlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGFwcHJvYWNoLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbjpcblxuMS4gICoqYEVuYWJsZUNvbmZpZ3NgKio6IFRvIHRob3JvdWdobHkgdGVzdCB0aGVzZSBjaGFuZ2VzLCBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIGNyaXRpY2FsIHRvIGVuYWJsaW5nIGFuZCB0ZXN0aW5nIHRoZSBhZmZlY3RlZCBmZWF0dXJlcy5cbjIuICAqKmBGb2N1c1N5bWJvbHNgKio6IFdoYXQgYXJlIHRoZSBrZXkgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG9yIGZ1bmN0aW9ucyBJIHNob3VsZCB0YXJnZXQgd2l0aCBteSBmdXp6aW5nIGVmZm9ydHM/XG5cbkxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIEknbGwgbmVlZCB0byBsb29rIGF0IGBtbS9kYW1vbi9LY29uZmlnYCBhZ2FpbiB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdDpcblxuKiAgIGBEQU1PTmAgKHRoZSBiYXNlLCBubyBkaXJlY3QgZGVwZW5kZW5jaWVzKVxuKiAgIGBEQU1PTl9WQUREUmAgKGRlcGVuZHMgb24gYERBTU9OYCBhbmQgYE1NVWApXG4qICAgYERBTU9OX1BBRERSYCAoZGVwZW5kcyBvbiBgREFNT05gIGFuZCBgTU1VYClcbiogICBgREFNT05fU1lTRlNgIChkZXBlbmRzIG9uIGBEQU1PTmAgYW5kIGBTWVNGU2ApXG4qICAgYERBTU9OX1JFQ0xBSU1gIChkZXBlbmRzIG9uIGBEQU1PTl9QQUREUmApXG4qICAgYERBTU9OX0xSVV9TT1JUYCAoZGVwZW5kcyBvbiBgREFNT05fUEFERFJgKVxuKiAgIGBEQU1PTl9TVEFUYCAoZGVwZW5kcyBvbiBgREFNT05fUEFERFJgKVxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGVuYWJsZSBhbGwgdGhlIHJlbGV2YW50IERBTU9OLXJlbGF0ZWQgb3B0aW9ucywgZXNwZWNpYWxseSB0aG9zZSBkZWFsaW5nIHdpdGggcGh5c2ljYWwgYWRkcmVzc2VzLCBhcyB0aG9zZSBzZWVtIG1vc3QgY3JpdGljYWwgaW4gbGlnaHQgb2YgdGhlIGZpeGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIE5VTUEvTUVNQ0cgZG9lc24ndCBwcm92aWRlIGFueSBnb3RjaGFzLiBMb29raW5nIGF0IGBtbS9kYW1vbi9jb3JlLmNgLCBJIHNlZSBgc2lfbWVtaW5mb19ub2RlYCBhbmQgYGRhbW9zX2dldF9ub2RlX21lbV9icGAgYXJlIGd1YXJkZWQgYnkgYCNpZmRlZiBDT05GSUdfTlVNQWAuIFNvLCBJIG11c3QgdmVyaWZ5IGFueSBkZXBlbmRlbmNpZXMgb24gdGhhdCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBEQU1PTiBzdWJzeXN0ZW0gdG8gYmUgY29tcHJlaGVuc2l2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI5MjIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTozOS42MDg0MDAyMTVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDY3NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZmRlZiBDT05GSUdfTlVNQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI3ODM9c3RhdGljIGlubGluZSB1NjQgZGFtb3NfZ2V0X3NvbWVfbWVtX3BzaV90b3RhbCh2b2lkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3ODktXFxubW0vZGFtb24vY29yZS5jOjI3OTA6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vZGFtb24vY29yZS5jLTI3OTEtc3RhdGljIGJvb2wgaW52YWxpZF9tZW1fbm9kZShpbnQgbmlkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTozOS42NjU4NzQzOTFaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjIxNjY3MzM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBDb2RlIFJldmlldzogUHJlcHJvY2Vzc29yIERpcmVjdGl2ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBEQU1PTiBjb2RlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBOVU1BIGNvbmZpZ3VyYXRpb25zLiBJIGtub3cgSSBzYXcgYSBgI2lmZGVmIENPTkZJR19OVU1BYCBibG9jayBsdXJraW5nIGFyb3VuZCBsaW5lIDI3OTAgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoZXJlIGVsc2UgYXJlIHRoZXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucyBoYXBwZW5pbmcgaW4gdGhpcyBtb2R1bGU/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4dGVudCBvZiB0aGUgTlVNQS1zcGVjaWZpYyBjb2RlIHBhdGhzLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBzeXN0ZW1hdGljYWxseSBjaGVjayBgbW0vZGFtb24vY29yZS5jYCwgYXMgd2VsbCBhcyBgbW0vZGFtb24vcGFkZHIuY2AgYW5kIGBtbS9kYW1vbi92YWRkci5jYC4gSXQncyBjcnVjaWFsIEkgaWRlbnRpZnkgYWxsIHRoZSBpbnN0YW5jZXMgb2YgYCNpZmRlZmAgZGlyZWN0aXZlcyByZWxhdGVkIHRvIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucywgbm90IGp1c3QgTlVNQSwgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgREFNT04gYWRhcHRzIHRvIHZhcnlpbmcgc3lzdGVtIGFyY2hpdGVjdHVyZXMgYW5kIGJ1aWxkcy4gSSBuZWVkIHRvIGJlIHN1cmUgYW55IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmZWF0dXJlcyBhcmUgY29ycmVjdGx5IGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTA0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6NDEuODgyNTUwMzI1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc1OTg3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWYuKlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI4OT11bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMTItXFxubW0vZGFtb24vY29yZS5jOjMxMzojaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL2NvcmUuYy0zMTQtc3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzYzPXN0YXRpYyBpbmxpbmUgdm9pZCBkYW1vbl9pbnNlcnRfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzcwLVxcbm1tL2RhbW9uL2NvcmUuYzozNzE6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmMtMzcyLXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9Mjc0MD1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9mZWVkX2xvb3BfbmV4dF9pbnB1dCh1bnNpZ25lZCBsb25nIGxhc3RfaW5wdXQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjc3MC1cXG5tbS9kYW1vbi9jb3JlLmM6Mjc3MTojaWZkZWYgQ09ORklHX1BTSVxcbm1tL2RhbW9uL2NvcmUuYy0yNzcyLVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTI3ODM9c3RhdGljIGlubGluZSB1NjQgZGFtb3NfZ2V0X3NvbWVfbWVtX3BzaV90b3RhbCh2b2lkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3ODktXFxubW0vZGFtb24vY29yZS5jOjI3OTA6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vZGFtb24vY29yZS5jLTI3OTEtc3RhdGljIGJvb2wgaW52YWxpZF9tZW1fbm9kZShpbnQgbmlkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTI4MjQ9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yODY5LVxcbm1tL2RhbW9uL2NvcmUuYzoyODcwOiNpZmRlZiBDT05GSUdfREFNT05fUEFERFJcXG5tbS9kYW1vbi9jb3JlLmMtMjg3MS0vKlxcbi0tXFxubW0vZGFtb24vY29yZS5jPTMyNDM9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI4My1cXG5tbS9kYW1vbi9jb3JlLmM6MzI4NDojaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL2NvcmUuYy0zMjg1LXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMzkyPXN0YXRpYyB2b2lkIGtkYW1vbmRfbWVyZ2VfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fY3R4ICpjLCB1bnNpZ25lZCBpbnQgdGhyZXNob2xkLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM0MTktXFxubW0vZGFtb24vY29yZS5jOjM0MjA6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmMtMzQyMS1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfc3BsaXRfcmVnaW9uX2F0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzY0Mz1zdGF0aWMgdm9pZCBrZGFtb25kX3VzbGVlcCh1bnNpZ25lZCBsb25nIHVzZWNzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM2NTAtXFxubW0vZGFtb24vY29yZS5jOjM2NTE6I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmMtMzY1Mi1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTEzLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG5tbS9kYW1vbi9scnVfc29ydC5jLTE1LSN1bmRlZiBNT0RVTEVfUEFSQU1fUFJFRklYXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9NzM9dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTc0LXtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NzU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy03Ni1cXHRwbWRfdCBwbWR2YWwgPSBwbWRwX2dldChwbWQpO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTE5ND1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb195b3VuZ19vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMTUtXFx0XFx0fSBlbHNlIHtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MjE2OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjE3LVxcdFxcdFxcdHBtZF90IHBtZCA9IHBtZHBfZ2V0KHB2bXcucG1kKTtcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0xMy1cXG5tbS9kYW1vbi9yZWNsYWltLmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG5tbS9kYW1vbi9yZWNsYWltLmMtMTUtI3VuZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG4tLVxcbm1tL2RhbW9uL3N0YXQuYy0xMy1cXG5tbS9kYW1vbi9zdGF0LmM6MTQ6I2lmZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG5tbS9kYW1vbi9zdGF0LmMtMTUtI3VuZGVmIE1PRFVMRV9QQVJBTV9QUkVGSVhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTEwNj1zdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEwOC17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA5OiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTAtXFx0Y2dyb3VwX3BhdGgobWVtY2ctXFx1MDAzZWNzcy5jZ3JvdXAsIG1lbWNnX3BhdGhfYnVmLCBQQVRIX01BWCk7XFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NjojaWZkZWYgQ09ORklHX0RBTU9OX0tVTklUX1RFU1RcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNy1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODojaWZuZGVmIF9EQU1PTl9DT1JFX1RFU1RfSFxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC05LSNkZWZpbmUgX0RBTU9OX0NPUkVfVEVTVF9IXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTUtXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0LmgtNy1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjg6I2lmbmRlZiBfREFNT05fU1lTRlNfVEVTVF9IXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC05LSNkZWZpbmUgX0RBTU9OX1NZU0ZTX1RFU1RfSFxcbi0tXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC01LVxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6NjojaWZkZWYgQ09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oLTctXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDo4OiNpZm5kZWYgX0RBTU9OX1ZBRERSX1RFU1RfSFxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtOS0jZGVmaW5lIF9EQU1PTl9WQUREUl9URVNUX0hcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtMTktXFxubW0vZGFtb24vdmFkZHIuYzoyMDojaWZkZWYgQ09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi92YWRkci5jLTIxLSN1bmRlZiBEQU1PTl9NSU5fUkVHSU9OX1NaXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTI2OD1zdGF0aWMgaW50IGRhbW9uX21rb2xkX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTI5NC1cXG5tbS9kYW1vbi92YWRkci5jOjI5NTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2RhbW9uL3ZhZGRyLmMtMjk2LXN0YXRpYyB2b2lkIGRhbW9uX2h1Z2V0bGJfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTM4OT1zdGF0aWMgaW50IGRhbW9uX3lvdW5nX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTM5Ny1cXG5tbS9kYW1vbi92YWRkci5jOjM5ODojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vZGFtb24vdmFkZHIuYy0zOTktXFx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHdhbGstXFx1MDAzZXZtYSk7XFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTQzNC1cXG5tbS9kYW1vbi92YWRkci5jOjQzNTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2RhbW9uL3ZhZGRyLmMtNDM2LXN0YXRpYyBpbnQgZGFtb25feW91bmdfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYz02MzU9c3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTY0Ni1cXG5tbS9kYW1vbi92YWRkci5jOjY0NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vZGFtb24vdmFkZHIuYy02NDgtXFx0cHRsID0gcG1kX3RyYW5zX2h1Z2VfbG9jayhwbWQsIHdhbGstXFx1MDAzZXZtYSk7XFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTcxMD1zdGF0aWMgdm9pZCBkYW1vbl92YV9jbGVhbnVwX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03MTQtXFxubW0vZGFtb24vdmFkZHIuYzo3MTU6I2lmbmRlZiBDT05GSUdfQURWSVNFX1NZU0NBTExTXFxubW0vZGFtb24vdmFkZHIuYy03MTYtc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfbWFkdmlzZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTc5OD1zdGF0aWMgaW50IGRhbW9zX3ZhX3N0YXRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtODA5LVxcbm1tL2RhbW9uL3ZhZGRyLmM6ODEwOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9kYW1vbi92YWRkci5jLTgxMS1cXHRwdGwgPSBwbWRfdHJhbnNfaHVnZV9sb2NrKHBtZCwgdm1hKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6NDEuOTI4MzE2ODMyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MDgxMjI1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgREFNT04gRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHRpbWUgdG8gc29saWRpZnkgdGhlIHBsYW4gZm9yIGZ1enppbmcgREFNT04uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgQ09ORklHX0RBTU9OYCwgbmF0dXJhbGx5LCBhbG9uZyB3aXRoIGl0cyBhZGRyZXNzIHNwYWNlIHZhcmlhbnRzIChgQ09ORklHX0RBTU9OX1ZBRERSYCwgYENPTkZJR19EQU1PTl9QQUREUmApLCBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZSAoYENPTkZJR19EQU1PTl9TWVNGU2ApLiBJJ2xsIGFsc28gZG91YmxlLWNoZWNrIHRoYXQgSSBoYXZlIE5VTUEgc3VwcG9ydCAoYENPTkZJR19OVU1BYCksIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgKSwgYW5kIE1lbW9yeSBDb250cm9sIEdyb3VwcyAoYENPTkZJR19NRU1DR2ApIGVuYWJsZWQ7IHRoZXNlIHdpbGwgYmUgaW1wb3J0YW50IGZvciBleHBsb3JpbmcgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IHNjZW5hcmlvcy5cblxuTm93LCB0aGUgcmVhbCBmb2N1cyBpcyBvbiB0YXJnZXRpbmcgdGhlIHJpZ2h0IGVudHJ5cG9pbnRzLiBJIHdhbnQgdG8gaWRlbnRpZnkgc3BlY2lmaWMsIG5vbi1ob3QtcGF0aCBrZXJuZWwgZnVuY3Rpb25zIHdpdGhpbiBEQU1PTiB0aGF0IGFyZSBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nLiBJJ2xsIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIOKAkyB0aGUgbW9yZSBleHBvc2VkIGFuZCBsZXNzIG9wdGltaXplZCBmdW5jdGlvbnMg4oCTIG92ZXIgdGhlIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBtb3N0IGJhbmcgZm9yIG15IGJ1Y2sgaW4gdGVybXMgb2YgdW5jb3ZlcmluZyBwb3RlbnRpYWwgYnVncy5cblxuVG8gcGlucG9pbnQgdGhlc2UgZW50cnlwb2ludHMsIEknbGwgZXhhbWluZSB0aGUgZXhwb3J0ZWQvZ2xvYmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBtbS9kYW1vbi9gIGRpcmVjdG9yeS4gTXkgc3RyYXRlZ3kgaW52b2x2ZXMgc3lzdGVtYXRpY2FsbHkgc2VhcmNoaW5nIHRocm91Z2ggdGhlIGZvbGxvd2luZyBmaWxlczogYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9zeXNmcy5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBgbW0vZGFtb24vdmFkZHIuY2AsIGFuZCBgbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jYC4gSSdtIGdvaW5nIHRvIHNjYW4gdGhlc2UgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSAqbm90KiBkZWNsYXJlZCBhcyBzdGF0aWMgdG8gYXZvaWQgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgZm9jdXMgaW5zdGVhZCBvbiB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGZsb3dzIEkgd2FudCB0byBhbmFseXplLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI4NywiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTo0NS41MzY0NDIzMjFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODYxMjU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IFthLXpdfF52b2lkIFthLXpdfF5zdHJ1Y3QgLipkYW1vbl98XnNzaXplX3QgW2Etel1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5tbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxcbm1tL2RhbW9uL2NvcmUuYy03My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXFxubW0vZGFtb24vY29yZS5jOjk5OmludCBkYW1vbl9zZWxlY3Rfb3BzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgZW51bSBkYW1vbl9vcHNfaWQgaWQpXFxubW0vZGFtb24vY29yZS5jLTEwMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTU6c3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbmV3X2ZpbHRlcihlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGUsXFxubW0vZGFtb24vY29yZS5jLTExNi1cXHRcXHRib29sIG1hdGNoaW5nLCBib29sIGFsbG93KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTMwOnZvaWQgZGFtb25fYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTEzMS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTQwPXN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ0LVxcbm1tL2RhbW9uL2NvcmUuYzoxNDU6dm9pZCBkYW1vbl9kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxcbm1tL2RhbW9uL2NvcmUuYy0xNDYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTE1MT1zdGF0aWMgc3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbnRoX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE2Mi1cXG5tbS9kYW1vbi9jb3JlLmM6MTYzOnN0cnVjdCBkYW1vbl9wcm9iZSAqZGFtb25fbmV3X3Byb2JlKHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTE2NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTc1LVxcbm1tL2RhbW9uL2NvcmUuYzoxNzY6dm9pZCBkYW1vbl9hZGRfcHJvYmUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlKVxcbm1tL2RhbW9uL2NvcmUuYy0xNzcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMxOT1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjgtICovXFxubW0vZGFtb24vY29yZS5jOjMyOTpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbm1tL2RhbW9uL2NvcmUuYy0zMzAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTQ0Nj1zdGF0aWMgaW50IGRhbW9uX2ZpbGxfcmVnaW9uc19ob2xlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpmaXJzdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00NzgtICovXFxubW0vZGFtb24vY29yZS5jOjQ3OTppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcXG5tbS9kYW1vbi9jb3JlLmMtNDgwLVxcdFxcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz01OTI9Ym9vbCBkYW1vc19maWx0ZXJfZm9yX29wcyhlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGUpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjAzLVxcbm1tL2RhbW9uL2NvcmUuYzo2MDQ6dm9pZCBkYW1vc19hZGRfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjA1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz02MTc9c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02MjEtXFxubW0vZGFtb24vY29yZS5jOjYyMjp2b2lkIGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTYyMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NjI4PXN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02NDItXFxubW0vZGFtb24vY29yZS5jOjY0Mzp2b2lkIGRhbW9zX2FkZF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YSAqcSwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXFxubW0vZGFtb24vY29yZS5jLTY0NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NjUzPXN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02NTctXFxubW0vZGFtb24vY29yZS5jOjY1ODp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNjU5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz02NzA9c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTY4Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NjgzOnN0cnVjdCBkYW1vcyAqZGFtb25fbmV3X3NjaGVtZShzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4gKnBhdHRlcm4sXFxubW0vZGFtb24vY29yZS5jLTY4NC1cXHRcXHRcXHRlbnVtIGRhbW9zX2FjdGlvbiBhY3Rpb24sXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NzI1PXN0YXRpYyB2b2lkIGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MzUtXFxubW0vZGFtb24vY29yZS5jOjczNjp2b2lkIGRhbW9uX2FkZF9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTczNy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NzQ3PXN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfc2NoZW1lKHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NTEtXFxubW0vZGFtb24vY29yZS5jOjc1Mjp2b2lkIGRhbW9uX2Rlc3Ryb3lfc2NoZW1lKHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtNzUzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NzYtICovXFxubW0vZGFtb24vY29yZS5jOjc3NzpzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9uZXdfdGFyZ2V0KHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTc3OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzkzLVxcbm1tL2RhbW9uL2NvcmUuYzo3OTQ6dm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNzk1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04MDEtICovXFxubW0vZGFtb24vY29yZS5jOjgwMjppbnQgZGFtb25fc2V0X3RhcmdldF9waWQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgaW50IHBpZClcXG5tbS9kYW1vbi9jb3JlLmMtODAzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz04MTA9c3RhdGljIHZvaWQgZGFtb25fZGVsX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTgxNC1cXG5tbS9kYW1vbi9jb3JlLmM6ODE1OnZvaWQgZGFtb25fZnJlZV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04MjMtXFxubW0vZGFtb24vY29yZS5jOjgyNDp2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtODI1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz04MzQ9dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04MzgtXFxubW0vZGFtb24vY29yZS5jOjgzOTpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTg0MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9ODc5PXN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxcbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTg4OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTAyMD1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEwNTQtICovXFxubW0vZGFtb24vY29yZS5jOjEwNTU6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTEwNTYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMDItICovXFxubW0vZGFtb24vY29yZS5jOjExMDM6dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXFxubW0vZGFtb24vY29yZS5jLTExMDQtXFx0XFx0XFx0c3NpemVfdCBucl9zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTExNDY9c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE2OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTE2OTppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE3MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTgxNj1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODQ0LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxODQ1OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xODQ2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xOTI4PXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTk2NTppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjAxMD1zdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIwMjktICovXFxubW0vZGFtb24vY29yZS5jOjIwMzA6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcXG5tbS9kYW1vbi9jb3JlLmMtMjAzMS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjA0NT1ib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIwNjAtICovXFxubW0vZGFtb24vY29yZS5jOjIwNjE6aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMjA2Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjA5Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjA5NzppbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXFxubW0vZGFtb24vY29yZS5jLTIwOTgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxNDktICovXFxubW0vZGFtb24vY29yZS5jOjIxNTA6aW50IGRhbW9zX3dhbGsoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3Nfd2Fsa19jb250cm9sICpjb250cm9sKVxcbm1tL2RhbW9uL2NvcmUuYy0yMTUxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNzc2PXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM5NDMtXFxubW0vZGFtb24vY29yZS5jOjM5NDQ6c3RydWN0IGRhbW9uX3N5c3RlbV9yYW1fcmFuZ2Vfd2Fsa19hcmcge1xcbm1tL2RhbW9uL2NvcmUuYy0zOTQ1LVxcdGJvb2wgd2Fsa2VkO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTM5NzQ9c3RhdGljIGJvb2wgZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZSh1bnNpZ25lZCBsb25nICpzdGFydCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MDA1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo0MDA2OmludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG5tbS9kYW1vbi9jb3JlLmMtNDAwNy1cXHRcXHRcXHR1bnNpZ25lZCBsb25nICpzdGFydCwgdW5zaWduZWQgbG9uZyAqZW5kLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQwMzAtICovXFxubW0vZGFtb24vY29yZS5jOjQwMzE6dm9pZCBkYW1vbl91cGRhdGVfcmVnaW9uX2FjY2Vzc19yYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIGJvb2wgYWNjZXNzZWQpXFxubW0vZGFtb24vY29yZS5jLTQwMzIte1xcbi0tXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYy0xNC0gKi9cXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jOjE1OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTYtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApXFxuLS1cXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oLTQ1LVxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmg6NDY6aW50IGRhbW9uX21vZHVsZXNfbmV3X3BhZGRyX2N0eF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHAsXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00Ny1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICoqdGFyZ2V0cCk7XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjMtICovXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjI0OnN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yNS17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDEtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjQyOnZvaWQgZGFtb25fcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy00My17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzItXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjczOnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy03NC17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTAzLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzoxMDQ6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMDUtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE0OS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTUwOmludCBkYW1vbl9jb2xkX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE1MS1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MTU5PXN0YXRpYyBib29sIGRhbW9uX2ZvbGlvX21rb2xkX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3My1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTc0OnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTc1LXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uaC03LVxcbm1tL2RhbW9uL29wcy1jb21tb24uaDo4OnN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtOS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTA6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMTp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjEyOnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTEzLWJvb2wgZGFtb25fZm9saW9feW91bmcoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTE0LVxcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxNTppbnQgZGFtb25fY29sZF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNi1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxNzppbnQgZGFtb25faG90X3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTE4LVxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcyk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz0xMD1ERUZJTkVfTVVURVgoZGFtb25fc3lzZnNfbG9jayk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxNjpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE3LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9NjU9c3RhdGljIHNzaXplX3QgbWF4X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04MC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4MTp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODIte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA2PXN0YXRpYyBib29sIGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE2LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjExNzppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExOC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD05PWV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWF4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTIyPWV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mjg6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zMy1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9Mzc9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lc19rdHlwZTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zOC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozOTppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQwLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Mjp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfdXBkYXRlX3N0YXRzKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQzLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDY6dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQ3LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjUxOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjU0OmludCBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTc6dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zNTY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNjY6c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTI4LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwMjA6c3RydWN0IGRhbW9uX3N5c2ZzX3dhdGVybWFya3Mge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDIxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTc0OnN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjgzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg1LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19xdW90YXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk1OTpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTYwLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk2Nj1zdGF0aWNcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE5Njgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZClcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4NS17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4OTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjg1MT1zdGF0aWMgaW50IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODk3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODk4OmludCBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODk5LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTMyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTMzOnZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5MzQtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0ODppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ5LVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNjc6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTA0LSAqL1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMTA1OnZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzEwNi1cXHRcXHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzE1MS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzE1MjppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUzLVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xNC1cXG5tbS9kYW1vbi9zeXNmcy5jOjE1OnN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb24ge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9ODE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcmVnaW9uX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy05MC1cXG5tbS9kYW1vbi9zeXNmcy5jOjkxOnN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb25zIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTkyLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25zX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMDktXFxubW0vZGFtb24vc3lzZnMuYzoyMTA6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldCB7XFxubW0vZGFtb24vc3lzZnMuYy0yMTEtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MzA3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3RhcmdldF9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMzE2LVxcbm1tL2RhbW9uL3N5c2ZzLmM6MzE3OnN0cnVjdCBkYW1vbl9zeXNmc190YXJnZXRzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTMxOC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz00MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtNDQ0LVxcbm1tL2RhbW9uL3N5c2ZzLmM6NDQ1OnN0cnVjdCBkYW1vbl9zeXNmc19pbnRlcnZhbHNfZ29hbCB7XFxubW0vZGFtb24vc3lzZnMuYy00NDYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9NTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy02MDEtXFxubW0vZGFtb24vc3lzZnMuYzo2MDI6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFscyB7XFxubW0vZGFtb24vc3lzZnMuYy02MDMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9NzQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ludGVydmFsc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtNzU1LVxcbm1tL2RhbW9uL3N5c2ZzLmM6NzU2OnN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLmMtNzU3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTc2ND1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqZGFtb25fc3lzZnNfZmlsdGVyX2FsbG9jKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTc2OC1cXG5tbS9kYW1vbi9zeXNmcy5jOjc2OTpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMuYy03NzAtXFx0ZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz05MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy05NDUtXFxubW0vZGFtb24vc3lzZnMuYzo5NDY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTQ3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEwNTU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTA2NC1cXG5tbS9kYW1vbi9zeXNmcy5jOjEwNjU6c3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTEwNjYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTEzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19wcm9iZV9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTE0NS1cXG5tbS9kYW1vbi9zeXNmcy5jOjExNDY6c3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlcyB7XFxubW0vZGFtb24vc3lzZnMuYy0xMTQ3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEyNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xMjc0LVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTI3NTpzdHJ1Y3QgZGFtb25fc3lzZnNfYXR0cnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTI3Ni1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2F0dHJzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xMzgwLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTM4MTpzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTM4Mi1cXHRlbnVtIGRhbW9uX29wc19pZCBvcHNfaWQ7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEzODY9c3RhdGljIGNvbnN0IHN0cnVjdCBkYW1vbl9zeXNmc19vcHNfbmFtZSBkYW1vbl9zeXNmc19vcHNfbmFtZXNbXSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTQwMC1cXG5tbS9kYW1vbi9zeXNmcy5jOjE0MDE6c3RydWN0IGRhbW9uX3N5c2ZzX2NvbnRleHQge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTQwMi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE2NTYtXFxubW0vZGFtb24vc3lzZnMuYzoxNjU3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0cyB7XFxubW0vZGFtb24vc3lzZnMuYy0xNjU4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTE3NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfY29udGV4dHNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE3ODUtXFxubW0vZGFtb24vc3lzZnMuYzoxNzg2OnN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE3ODctXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjI5OT1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMzEyLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjMxMzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lc193YWxrX2RhdGEge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjMxNC1cXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqc3lzZnNfa2RhbW9uZDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjQ5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19rZGFtb25kX2t0eXBlID0ge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMTo0NS44NTUwNjE1NTdaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjYxOTEzMzMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25hbGl0eSBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHByaW1hcnkgZm9jdXMgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBEQU1PTiBjaGFuZ2VzLiBGaXJzdCwgSSdtIGlkZW50aWZ5aW5nIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgYW5kIGNvbnRyb2wgZnVuY3Rpb25zOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zeXNmc19hZGRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fc2V0X3JlZ2lvbnNgLCBgZGFtb3Nfd2Fsa2AsIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgLCBhbmQgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAuIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIHNjaGVtZSBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgZm9yIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3NlcyBhcmUgaW5kZWVkIHN0YXRpYywgYXMgZXhwZWN0ZWQsIHJlc2lkaW5nIHdpdGhpbiBgcGFkZHIuY2AgYW5kIGB2YWRkci5jYCByZXNwZWN0aXZlbHkuXG5cbk5leHQsIEknbSBjcm9zcy1yZWZlcmVuY2luZyB0aGVzZSBlbnRyeSBwb2ludHMgd2l0aCB0aGUgY29yZSBmdW5jdGlvbmFsaXRpZXMgcmVzaWRpbmcgaW4gYG1tL2RhbW9uL2NvcmUuY2AgLS0gSSdtIGRvdWJsZS1jaGVja2luZyBmdW5jdGlvbnMgbGlrZSBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCBgZGFtb25fc2V0X3JlZ2lvbnNgLCBhbmQgYGRhbW9zX3dhbGtgLiBJJ20gYWxzbyBsb29raW5nIGF0IHBvdGVudGlhbGx5IHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgYGRhbW9uX3JlZ2lzdGVyX29wc2AsIGBkYW1vbl9zZWxlY3Rfb3BzYCwgYGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGFuZCBgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldGAuXG5cbk5vdywgZm9yIGNvbmZpZ3VyYXRpb24sIEknbSBjb25maXJtaW5nIHRoYXQgd2UnbGwgYmUgZW5hYmxpbmcgYERBTU9OYCAodGhlIGNvcmUgZnJhbWV3b3JrKSwgYERBTU9OX1BBRERSYCBhbmQgYERBTU9OX1ZBRERSYCAoZm9yIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3MgbW9uaXRvcmluZyByZXNwZWN0aXZlbHkpLCBgREFNT05fU1lTRlNgIChmb3Igc3lzZnMgaW50ZXJmYWNlKSwgYERBTU9OX1JFQ0xBSU1gIGFuZCBgREFNT05fTFJVX1NPUlRgIChmb3IgcHJvYWN0aXZlIHJlY2xhbWF0aW9uIGFuZCBMUlUgc29ydGluZywgcmVzcGVjdGl2ZWx5KSwgYERBTU9OX1NUQVRgIChmb3Igc3RhdGlzdGljcyBtb25pdG9yaW5nKSwgYE5VTUFgIChmb3IgTlVNQSBzdXBwb3J0KSwgYE1FTUNHYCAoZm9yIG1lbWNnIHF1b3RhIGdvYWxzKSwgYW5kIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgKGZvciBUSFAgc3VwcG9ydCkuIFRoaXMgaXMgdGhlIGZ1bGwgc3VpdGUgb2Ygb3B0aW9ucywgYXMgZmFyIGFzIEkgY2FuIHNlZS5cblxuVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBub3cgY2xlYXI6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfcmVnaW9uc2AsIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBhbmQgYGRhbW9zX3dhbGtgLiBUaGV5IGNsZWFybHkgY292ZXIgdGhlIGtleSBpbnRlcmFjdGlvbiBwb2ludHMgYW5kIEkndmUgdmVyaWZpZWQgdGhhdCB0aGVyZSBhcmUgbm8gb2J2aW91cyBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZGV0YWlscyB0byBjb25zaWRlci5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcyDigJMgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgcG90ZW50aWFsIGRpdmlzaW9uLWJ5LXplcm8gZXJyb3JzIGFuZCBpbnZhbGlkIG1lbW9yeSBjYWxjdWxhdGlvbnMgd2l0aGluIGBkYW1vc19nZXRfbm9kZV9tZW1fYnBgLCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icGAsIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGAgYW5kIHJlZ2lvbiBzcGxpdHRpbmcsIGZvbGlvIGJvdW5kYXJ5IGNvcnJlY3Rpb25zIGZvciBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzIHNwYWNlcyDigJMgZnV6emluZyBzZWVtcyB3YXJyYW50ZWQuIFRoZSBwYXRjaCB0b3VjaGVzIGNyaXRpY2FsIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLlxuXG5BbHJpZ2h0LCBJJ20gc2F0aXNmaWVkLiBMZXQncyBtb3ZlIG9uIGFuZCBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczMDQsIk91dHB1dFRva2VucyI6MzAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjUyLjQ3NDE5NzY5MVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMjY4MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIkRBTU9OX1NUQVRcIixcbiAgICBcIk5VTUFcIixcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zZXRfYXR0cnNcIixcbiAgICBcImRhbW9uX3NldF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vbl9zZXRfcmVnaW9uc1wiLFxuICAgIFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb3Nfd2Fsa1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yaW5nKSBsb2dpYyBhY3Jvc3MgY29yZSwgcGFkZHIsIGFuZCB2YWRkciBjb21wb25lbnRzLiBJdCBmaXhlcyBoYW5kbGluZyBvZiBzcGxpdCBmYWlsdXJlcyBpbiBkYW1vc19hcHBseV9zY2hlbWUsIHByZXZlbnRzIGRpdmlkZS1ieS16ZXJvIC8gYm91bmRhcnkgY2FsY3VsYXRpb24gZXJyb3JzIGluIERBTU9TIHF1b3RhIG1ldHJpY3MgKGRhbW9zX2dldF9ub2RlX21lbV9icCwgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icCwgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnApLCBhbmQgZml4ZXMgZm9saW8gaXRlcmF0aW9uIGFkZHJlc3MgYWR2YW5jZXMgaW4gcGFkZHIgYW5kIHZhZGRyIHNjaGVtZXMgd2hlbiBkZWFsaW5nIHdpdGggc3VicGFnZXMgb2YgbGFyZ2UgZm9saW9zLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgREFNT1Mgc2NoZW1lIGFwcGxpY2F0aW9uIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9SRUNMQUlNXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiREFNT05fU1RBVFwiLFxuICAgIFwiTlVNQVwiLFxuICAgIFwiTUVNQ0dcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9hdHRyc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX3NldF9yZWdpb25zXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vc193YWxrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcpIGxvZ2ljIGFjcm9zcyBjb3JlLCBwYWRkciwgYW5kIHZhZGRyIGNvbXBvbmVudHMuIEl0IGZpeGVzIGhhbmRsaW5nIG9mIHNwbGl0IGZhaWx1cmVzIGluIGRhbW9zX2FwcGx5X3NjaGVtZSwgcHJldmVudHMgZGl2aWRlLWJ5LXplcm8gLyBib3VuZGFyeSBjYWxjdWxhdGlvbiBlcnJvcnMgaW4gREFNT1MgcXVvdGEgbWV0cmljcyAoZGFtb3NfZ2V0X25vZGVfbWVtX2JwLCBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwLCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icCksIGFuZCBmaXhlcyBmb2xpbyBpdGVyYXRpb24gYWRkcmVzcyBhZHZhbmNlcyBpbiBwYWRkciBhbmQgdmFkZHIgc2NoZW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyBvZiBsYXJnZSBmb2xpb3MuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBEQU1PUyBzY2hlbWUgYXBwbGljYXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjUyLjU0NDQ3MzI1NloiLCJTZXEiOjQzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc2NTE0Nzg2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAzOjMxOjUyLjU0NTEzMDI3NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjg3NjQ0ODYxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBsb2dpY2FsIGFyaXRobWV0aWMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYWRkcmVzcyBhZHZhbmNlbWVudCBidWdzIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKTpcXG4xLiBBZGRzIGVycm9yIGNoZWNraW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCBpbiBgbW0vZGFtb24vY29yZS5jYC5cXG4yLiBBZGRzIGJvdW5kYXJ5IGFuZCB6ZXJvIGNoZWNrcyB0byBhdm9pZCB1bmRlcmZsb3cgYW5kIGRpdmlzaW9uLWJ5LXplcm8gaW4gbm9kZS9jZ3JvdXAgbWVtb3J5IG1ldHJpY3MgY2FsY3VsYXRpb25zIChgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnBgKS5cXG4zLiBDb3JyZWN0cyBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9uIHdoZW4gYWR2YW5jaW5nIHBhc3QgZm9saW9zIGluIGBtbS9kYW1vbi9wYWRkci5jYC5cXG40LiBDb3JyZWN0cyBwYWdlIGluZGV4IG9mZnNldCBjYWxjdWxhdGlvbnMgd2hlbiBhZHZhbmNpbmcgb3ZlciBtdWx0aS1wYWdlIGZvbGlvcyBpbiBgbW0vZGFtb24vdmFkZHIuY2AuXFxuXFxuTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCByZWFkIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbGwgdmFyaWFibGVzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYXJlIHN0cmljdGx5IGluaXRpYWxpemVkIGFuZCBvcGVyYXRlZCBvbiBhcyBsb2NhbCBwcmltaXRpdmVzLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjc2MjJmMzkxYWQzODM1YjljOTZlZTlkNTYwNGE2MzZmODAxYmRhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDM6MzA6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDNmODljZmRmNWYwMjIuLjBkZjc4NWU3MjQzOGYgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTI2MDQsNyArMjYwNCw4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuIFx0XHRcdFx0XHRjLVx1MDAzZW1pbl9yZWdpb25fc3opO1xuIFx0XHRcdGlmICghc3opXG4gXHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuLVx0XHRcdGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeik7XG4rXHRcdFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXG4rXHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuIFx0XHR9XG4gXHRcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXG4gXHRcdFx0cmV0dXJuO1xuQEAgLTI4MDYsNiArMjgwNywxMyBAQCBzdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXG4gXHR9XG4gXG4gXHRzaV9tZW1pbmZvX25vZGUoXHUwMDI2aSwgZ29hbC1cdTAwM2VuaWQpO1xuK1x0aWYgKCFpLnRvdGFscmFtIHx8IGkudG90YWxyYW0gXHUwMDNjIGkuZnJlZXJhbSkge1xuK1x0XHRpZiAoZ29hbC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUClcbitcdFx0XHRyZXR1cm4gMTAwMDA7XG4rXHRcdGVsc2VcdC8qIERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAgKi9cbitcdFx0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQKVxuIFx0XHRudW1lcmF0b3IgPSBpLnRvdGFscmFtIC0gaS5mcmVlcmFtO1xuIFx0ZWxzZVx0LyogREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCAqL1xuQEAgLTI4NDYsNiArMjg1NCwxMiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKFxuIFx0bWVtX2Nncm91cF9wdXQobWVtY2cpO1xuIFxuIFx0c2lfbWVtaW5mb19ub2RlKFx1MDAyNmksIGdvYWwtXHUwMDNlbmlkKTtcbitcdGlmICghaS50b3RhbHJhbSB8fCBpLnRvdGFscmFtIFx1MDAzYyB1c2VkX3BhZ2VzKSB7XG4rXHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXG4rXHRcdFx0cmV0dXJuIDEwMDAwO1xuK1x0XHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cbitcdFx0XHRyZXR1cm4gMDtcbitcdH1cbiBcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX1VTRURfQlApXG4gXHRcdG51bWVyYXRvciA9IHVzZWRfcGFnZXM7XG4gXHRlbHNlXHQvKiBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAgKi9cbkBAIC0yOTkyLDcgKzMwMDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKGJvb2wgYWN0aXZlX3JhdGlvKVxuIFx0XHRnbG9iYWxfbm9kZV9wYWdlX3N0YXRlKE5SX0xSVV9CQVNFICsgTFJVX0FDVElWRV9GSUxFKTtcbiBcdGluYWN0aXZlID0gZ2xvYmFsX25vZGVfcGFnZV9zdGF0ZShOUl9MUlVfQkFTRSArIExSVV9JTkFDVElWRV9BTk9OKSArXG4gXHRcdGdsb2JhbF9ub2RlX3BhZ2Vfc3RhdGUoTlJfTFJVX0JBU0UgKyBMUlVfSU5BQ1RJVkVfRklMRSk7XG4tXHR0b3RhbCA9IGFjdGl2ZSArIGluYWN0aXZlO1xuK1x0dG90YWwgPSBtYXgoYWN0aXZlICsgaW5hY3RpdmUsIDEpO1xuIFx0aWYgKGFjdGl2ZV9yYXRpbylcbiBcdFx0cmV0dXJuIG11bHRfZnJhYyhhY3RpdmUsIDEwMDAwLCB0b3RhbCk7XG4gXHRyZXR1cm4gbXVsdF9mcmFjKGluYWN0aXZlLCAxMDAwMCwgdG90YWwpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3BhZGRyLmMgYi9tbS9kYW1vbi9wYWRkci5jXG5pbmRleCA1YzZjM2E1OTdmZDBiLi45ZGRkMWVjODIwMmI3IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vcGFkZHIuY1xuKysrIGIvbW0vZGFtb24vcGFkZHIuY1xuQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9wYWdlb3V0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdGVsc2VcbiBcdFx0XHRsaXN0X2FkZChcdTAwMjZmb2xpby1cdTAwM2VscnUsIFx1MDAyNmZvbGlvX2xpc3QpO1xuIHB1dF9mb2xpbzpcbi1cdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbitcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRpZiAoaW5zdGFsbF95b3VuZ19maWx0ZXIpXG5AQCAtMzAyLDcgKzMwMiw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZV9hY3RpdmF0ZShcbiBcdFx0XHRmb2xpb19kZWFjdGl2YXRlKGZvbGlvKTtcbiBcdFx0YXBwbGllZCArPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4gcHV0X2ZvbGlvOlxuLVx0XHRhZGRyICs9IGZvbGlvX3NpemUoZm9saW8pO1xuK1x0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgKyBmb2xpb19zaXplKGZvbGlvKTtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiBcdH1cbiBcdHMtXHUwMDNlbGFzdF9hcHBsaWVkID0gZm9saW87XG5AQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcdFx0XHRcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XG4gXHRcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2Zm9saW9fbGlzdCk7XG4gcHV0X2ZvbGlvOlxuLVx0XHRhZGRyICs9IGZvbGlvX3NpemUoZm9saW8pO1xuK1x0XHRhZGRyID0gUEZOX1BIWVMoZm9saW9fcGZuKGZvbGlvKSkgKyBmb2xpb19zaXplKGZvbGlvKTtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiBcdH1cbiBcdGFwcGxpZWQgPSBkYW1vbl9taWdyYXRlX3BhZ2VzKFx1MDAyNmZvbGlvX2xpc3QsIHMtXHUwMDNldGFyZ2V0X25pZCk7XG5AQCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX3N0YXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbiBcbiBcdFx0aWYgKCFkYW1vc19wYV9maWx0ZXJfb3V0KHMsIGZvbGlvKSlcbiBcdFx0XHQqc3pfZmlsdGVyX3Bhc3NlZCArPSBmb2xpb19zaXplKGZvbGlvKSAvIGFkZHJfdW5pdDtcbi1cdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbitcdFx0YWRkciA9IFBGTl9QSFlTKGZvbGlvX3Bmbihmb2xpbykpICsgZm9saW9fc2l6ZShmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHR9XG4gXHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IGZvbGlvO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3ZhZGRyLmMgYi9tbS9kYW1vbi92YWRkci5jXG5pbmRleCAwNjQ4NDAwYjJkNjViLi5jOGMzMmIyYWUwNDAyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xuKysrIGIvbW0vZGFtb24vdmFkZHIuY1xuQEAgLTY2OSw2ICs2NjksOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHRmb3IgKDsgYWRkciBcdTAwM2MgbmV4dDsgcHRlICs9IG5yLCBhZGRyICs9IG5yICogUEFHRV9TSVpFKSB7XG4rXHRcdHVuc2lnbmVkIGxvbmcgcGFnZV9pZHg7XG4rXG4gXHRcdG5yID0gMTtcbiBcdFx0cHRlbnQgPSBwdGVwX2dldChwdGUpO1xuIFxuQEAgLTY4MSw3ICs2ODMsOCBAQCBzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcbiBcdFx0XHRcdG1pZ3JhdGlvbl9saXN0cyk7XG4tXHRcdG5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xuK1x0XHRwYWdlX2lkeCA9IGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBwdGVfcGFnZShwdGVudCkpO1xuK1x0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKSAtIHBhZ2VfaWR4O1xuIFx0fVxuIFx0cHRlX3VubWFwX3VubG9jayhzdGFydF9wdGUsIHB0bCk7XG4gXHRyZXR1cm4gMDtcbkBAIC04MzEsNiArODM0LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yICg7IGFkZHIgXHUwMDNjIG5leHQ7IHB0ZSArPSBuciwgYWRkciArPSBuciAqIFBBR0VfU0laRSkge1xuK1x0XHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4O1xuK1xuIFx0XHRuciA9IDE7XG4gXHRcdHB0ZW50ID0gcHRlcF9nZXQocHRlKTtcbiBcbkBAIC04NDQsNyArODQ5LDggQEAgc3RhdGljIGludCBkYW1vc192YV9zdGF0X3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXG4gXHRcdGlmICghZGFtb3NfdmFfZmlsdGVyX291dChzLCBmb2xpbywgdm1hLCBhZGRyLCBwdGUsIE5VTEwpKVxuIFx0XHRcdCpzel9maWx0ZXJfcGFzc2VkICs9IGZvbGlvX3NpemUoZm9saW8pO1xuLVx0XHRuciA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTtcbitcdFx0cGFnZV9pZHggPSBmb2xpb19wYWdlX2lkeChmb2xpbywgcHRlX3BhZ2UocHRlbnQpKTtcbitcdFx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbykgLSBwYWdlX2lkeDtcbiBcdFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBmb2xpbztcbiBcdH1cbiBcdHB0ZV91bm1hcF91bmxvY2soc3RhcnRfcHRlLCBwdGwpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDM6MzE6NTIuNTQ1MTMxMzg2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg3NjQ0NjE2NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgYW5kIEtNU0FOIEp1c3RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyB0aHJvdWdoIGVhY2ggbW9kaWZpZWQgZmlsZSBhbmQgdW5kZXJzdGFuZCB0aGUgaW50ZW50LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSByb2J1c3RuZXNzIG9mIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKSBhbmQsIHNwZWNpZmljYWxseSwgdGhlIERBTU9TIChEQU1PTi1iYXNlZCBNb25pdG9yaW5nIFNjaGVtZSkgY29tcG9uZW50LlxuXG5GaXJzdCwgdGhlIGBtbS9kYW1vbi9jb3JlLmNgIGNoYW5nZXMgY2F0Y2ggbXkgYXR0ZW50aW9uLiBXZSdyZSBsb29raW5nIGF0IGFkZGVkIGVycm9yIGhhbmRsaW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gVGhlIHN1YnNlcXVlbnQgYXJpdGhtZXRpYyBjaGVja3MgaW4gYGRhbW9zX2dldF9ub2RlX21lbV9icGAsIGBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwYCwgYW5kIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGAgYXJlIGNydWNpYWwuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byBwb3RlbnRpYWxseSBoYW5kbGluZyBpbnZhbGlkIG1lbW9yeSBzdGF0cyBvciBhdm9pZGluZyBkaXZpc2lvbi1ieS16ZXJvIGVycm9ycy4gSXQgYXBwZWFycyB0aGF0IHRoZSBwYXRjaCBpcyBkZWZlbnNpdmVseSBwcm9ncmFtbWluZyBmb3IgZWRnZSBjYXNlcyB3aGVyZSB0aGUgc3lzdGVtIG1lbW9yeSByZXBvcnRpbmcgbWlnaHQgYmUgaW5jb25zaXN0ZW50IG9yIGV2ZW4sIHdlbGwsIGJyb2tlbi4gSSBjYW4gZGVmaW5pdGVseSBhcHByZWNpYXRlIHRoZSBlZmZvcnQgdG8gcHJldmVudCB0aGVzZSBraW5kcyBvZiBjcmFzaGVzIG9yIGluY29ycmVjdCByZWFkaW5ncy5cblxuTmV4dCwgYG1tL2RhbW9uL3BhZGRyLmNgIGlzIHVwZGF0ZWQuIEkgY2FuIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIGFkanVzdCBob3cgcGh5c2ljYWwgYWRkcmVzc2VzIGFyZSBjb21wdXRlZCB3aGVuIGl0ZXJhdGluZyB0aHJvdWdoIGZvbGlvcy4gSXQgY29ycmVjdHMgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3RlcHBpbmcgbG9naWMgZm9yIGNhc2VzIHdoZXJlIHRoZSBhZGRyZXNzIHdhcyB1bmFsaWduZWQgb3Igd2l0aGluIGEgZm9saW8sIGVuc3VyaW5nIGFjY3VyYXRlIGNhbGN1bGF0aW9uIG9mIHRoZSBmb2xpbydzIGVuZC4gVGhlIGBtbS9kYW1vbi92YWRkci5jYCBjaGFuZ2UgZG9lcyB0aGUgc2FtZSwgYnV0IGZvciB2aXJ0dWFsIGFkZHJlc3Nlcywgd2hpY2ggc2VlbXMgbG9naWNhbC4gV2UncmUgbm93IGNvcnJlY3RseSBhY2NvdW50aW5nIGZvciB0aGUgcGFnZSBpbmRleCB3aGVuIGRlYWxpbmcgd2l0aCBzdWJwYWdlcyB3aXRoaW4gbGFyZ2UgZm9saW9zLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gbm93IGlzIHdoZXRoZXIgYW55IG9mIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgbGVhayBwb3RlbnRpYWxseSBzZW5zaXRpdmUgZGF0YSB0byB1c2Vyc3BhY2UuIEknbGwgbmVlZCB0byBydW4gdGhpcyB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3Q6IERvIHdlIGhhdmUgbmV3IGFsbG9jYXRpb25zIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24/IEFyZSB3ZSByZWFkaW5nIGZyb20gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IEFyZSB3ZSBkb2luZyBhbnkgbWVtb3J5IGNvcGllcyB0byB1c2Vyc3BhY2Ugd2l0aG91dCB0aGUgcHJvcGVyIHNhZmVndWFyZHM/IEFyZSB0aGVyZSBhbnkgbG9naWNhbCBlcnJvcnMgaW4gYXJpdGhtZXRpYyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeT9cblxuTGV0J3MgcXVpY2tseSBnbyB0aHJvdWdoIHRoZSBjb2RlIGFnYWluOiBJbiBgY29yZS5jYCwgdmFyaWFibGVzIGFyZSBiZWluZyBpbml0aWFsaXplZCBiZWZvcmUgdXNlLCBhbmQgdGhlIGNoZWNrcyBhcmUgZm9yIG1hdGhlbWF0aWNhbCBzYW5pdHkuIEluIGBwYWRkci5jYCBhbmQgYHZhZGRyLmNgLCBhbGwgdmFyaWFibGVzIGFyZSBjbGVhcmx5IGFzc2lnbmVkLCB3aXRoIHRoZSB2YWx1ZXMgYmVpbmcgZGVyaXZlZCBmcm9tIHN0cnVjdHVyZXMgbGlrZSBgZm9saW9gLlxuXG5BZnRlciBhIHRob3JvdWdoIHJldmlldywgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IEtNU0FOIGNvbmNlcm5zLiBUaGVyZSBhcmUgbm8gYWxsb2NhdGlvbnMgb3IgY29waWVzIGludm9sdmluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIGFsbCBjZW50ZXJlZCBvbiBhcml0aG1ldGljIGNvcnJlY3RuZXNzLCBlcnJvciBoYW5kbGluZywgYW5kIGNvcnJlY3QgYWRkcmVzcyBtYW5pcHVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIEtNU0FOIGlzIGdyZWF0IGZvciBmaW5kaW5nIHRob3NlIGhhcmQtdG8tc3BvdCB1bmluaXRpYWxpemVkIG1lbW9yeSBidWdzLCBidXQgS0FTQU4sIFVCU0FOLCBhbmQgZ2VuZXJhbCB0ZXN0aW5nIHNob3VsZCBhbHJlYWR5IGNhdGNoIHRoZSB0eXBlcyBvZiBpc3N1ZXMgYWRkcmVzc2VkIGhlcmUg4oCTIGxpa2UgYm91bmRzIHZpb2xhdGlvbnMgb3IgZGl2aXNpb24tYnktemVyby4gSSdtIHNhdGlzZmllZCB0aGF0IHRoZXNlIGZpeGVzIGFyZSBzdHJpY3RseSBhYm91dCBpbXByb3ZpbmcgdGhlIHJlbGlhYmlsaXR5IGFuZCBhY2N1cmFjeSBvZiBEQU1PTiwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuIFRoZSBmaXhlcyBlbmhhbmNlIG92ZXJhbGwgY29kZSBxdWFsaXR5LCBidXQgZG8gbm90IHdhcnJhbnQgYSBLTVNBTiBzY2FuLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE1LCJPdXRwdXRUb2tlbnMiOjI2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMzozMjowMS4zMDk1OTY2MjdaIiwiU2VxIjo0NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBsb2dpY2FsIGFyaXRobWV0aWMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYWRkcmVzcyBhZHZhbmNlbWVudCBidWdzIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yKTpcXG4xLiBBZGRzIGVycm9yIGNoZWNraW5nIGZvciBgZGFtb25fc3BsaXRfcmVnaW9uX2F0YCBpbiBgbW0vZGFtb24vY29yZS5jYC5cXG4yLiBBZGRzIGJvdW5kYXJ5IGFuZCB6ZXJvIGNoZWNrcyB0byBhdm9pZCB1bmRlcmZsb3cgYW5kIGRpdmlzaW9uLWJ5LXplcm8gaW4gbm9kZS9jZ3JvdXAgbWVtb3J5IG1ldHJpY3MgY2FsY3VsYXRpb25zIChgZGFtb3NfZ2V0X25vZGVfbWVtX2JwYCwgYGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnBgLCBgZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnBgKS5cXG4zLiBDb3JyZWN0cyBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9uIHdoZW4gYWR2YW5jaW5nIHBhc3QgZm9saW9zIGluIGBtbS9kYW1vbi9wYWRkci5jYC5cXG40LiBDb3JyZWN0cyBwYWdlIGluZGV4IG9mZnNldCBjYWxjdWxhdGlvbnMgd2hlbiBhZHZhbmNpbmcgb3ZlciBtdWx0aS1wYWdlIGZvbGlvcyBpbiBgbW0vZGFtb24vdmFkZHIuY2AuXFxuXFxuTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCByZWFkIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbGwgdmFyaWFibGVzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQgYXJlIHN0cmljdGx5IGluaXRpYWxpemVkIGFuZCBvcGVyYXRlZCBvbiBhcyBsb2NhbCBwcmltaXRpdmVzLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvZ2ljYWwgYXJpdGhtZXRpYywgZXJyb3IgaGFuZGxpbmcsIGFuZCBhZGRyZXNzIGFkdmFuY2VtZW50IGJ1Z3MgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3IpOlxcbjEuIEFkZHMgZXJyb3IgY2hlY2tpbmcgZm9yIGBkYW1vbl9zcGxpdF9yZWdpb25fYXRgIGluIGBtbS9kYW1vbi9jb3JlLmNgLlxcbjIuIEFkZHMgYm91bmRhcnkgYW5kIHplcm8gY2hlY2tzIHRvIGF2b2lkIHVuZGVyZmxvdyBhbmQgZGl2aXNpb24tYnktemVybyBpbiBub2RlL2Nncm91cCBtZW1vcnkgbWV0cmljcyBjYWxjdWxhdGlvbnMgKGBkYW1vc19nZXRfbm9kZV9tZW1fYnBgLCBgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icGAsIGBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icGApLlxcbjMuIENvcnJlY3RzIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb24gd2hlbiBhZHZhbmNpbmcgcGFzdCBmb2xpb3MgaW4gYG1tL2RhbW9uL3BhZGRyLmNgLlxcbjQuIENvcnJlY3RzIHBhZ2UgaW5kZXggb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aGVuIGFkdmFuY2luZyBvdmVyIG11bHRpLXBhZ2UgZm9saW9zIGluIGBtbS9kYW1vbi92YWRkci5jYC5cXG5cXG5Ob25lIG9mIHRoZXNlIGNoYW5nZXMgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIHJlYWQgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFsbCB2YXJpYWJsZXMgaW50cm9kdWNlZCBvciBtb2RpZmllZCBhcmUgc3RyaWN0bHkgaW5pdGlhbGl6ZWQgYW5kIG9wZXJhdGVkIG9uIGFzIGxvY2FsIHByaW1pdGl2ZXMuIFRoZXJlZm9yZSwgdGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjk4tp[1] Phase: Succeeded StartedAt: 2026-09-02 03:32:12 +0000 UTC FinishedAt: 2026-09-02 03:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-02 03:32:12 +0000 UTC FinishedAt: 2026-09-02 03:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2] Phase: Succeeded StartedAt: 2026-09-02 03:32:12 +0000 UTC FinishedAt: 2026-09-02 07:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-02 03:32:12 +0000 UTC FinishedAt: 2026-09-02 07:16:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-02 03:32:12 +0000 UTC FinishedAt: 2026-09-02 03:32:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-02 03:32:12 +0000 UTC FinishedAt: 2026-09-02 03:32:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowjk4tp/series-workflowjk4tp-convert-artifact-2793109444/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-02 03:32:22 +0000 UTC FinishedAt: 2026-09-02 03:52:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-02 03:32:22 +0000 UTC FinishedAt: 2026-09-02 03:52:02 +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:*da33a163-4703-4295-a2e5-45e1d52e2041,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-workflowjk4tp/series-workflowjk4tp-convert-artifact-2793109444/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": "89a0766f-b8b1-4184-ae57-f10e57ab86a2", "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-workflowjk4tp/series-workflowjk4tp-build-action-2446441218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-02 03:32:22 +0000 UTC FinishedAt: 2026-09-02 03:51:40 +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:*da33a163-4703-4295-a2e5-45e1d52e2041,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-workflowjk4tp/series-workflowjk4tp-convert-artifact-2793109444/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": "89a0766f-b8b1-4184-ae57-f10e57ab86a2", "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-workflowjk4tp/series-workflowjk4tp-build-action-2446441218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-02 03:52:02 +0000 UTC FinishedAt: 2026-09-02 03:52:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-02 03:52:02 +0000 UTC FinishedAt: 2026-09-02 03:52:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-02 03:52:02 +0000 UTC FinishedAt: 2026-09-02 03:52:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-02 03:52:02 +0000 UTC FinishedAt: 2026-09-02 03:52:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowjk4tp/series-workflowjk4tp-convert-artifact-2565011779/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-02 03:52:13 +0000 UTC FinishedAt: 2026-09-02 03:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-02 03:52:13 +0000 UTC FinishedAt: 2026-09-02 03:53:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*89a0766f-b8b1-4184-ae57-f10e57ab86a2,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-workflowjk4tp/series-workflowjk4tp-build-action-2446441218/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-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-02 03:54:00 +0000 UTC FinishedAt: 2026-09-02 03:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-02 03:54:00 +0000 UTC FinishedAt: 2026-09-02 03:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-02 03:54:00 +0000 UTC FinishedAt: 2026-09-02 04:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-02 03:54:00 +0000 UTC FinishedAt: 2026-09-02 04:13: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:*da33a163-4703-4295-a2e5-45e1d52e2041,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-workflowjk4tp/series-workflowjk4tp-convert-artifact-2565011779/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": "36228f64-fbd2-4c3b-91ae-666fbd0ea272", "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-workflowjk4tp/series-workflowjk4tp-build-action-3919733751/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-02 03:54:00 +0000 UTC FinishedAt: 2026-09-02 04:13:08 +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:*da33a163-4703-4295-a2e5-45e1d52e2041,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-workflowjk4tp/series-workflowjk4tp-convert-artifact-2565011779/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": "36228f64-fbd2-4c3b-91ae-666fbd0ea272", "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-workflowjk4tp/series-workflowjk4tp-build-action-3919733751/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-02 04:13:18 +0000 UTC FinishedAt: 2026-09-02 04:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-02 04:13:18 +0000 UTC FinishedAt: 2026-09-02 04:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-02 04:13:18 +0000 UTC FinishedAt: 2026-09-02 04:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-02 04:13:18 +0000 UTC FinishedAt: 2026-09-02 04:14:55 +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:*36228f64-fbd2-4c3b-91ae-666fbd0ea272,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-workflowjk4tp/series-workflowjk4tp-build-action-3919733751/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-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-02 04:15:05 +0000 UTC FinishedAt: 2026-09-02 07:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-02 04:15:05 +0000 UTC FinishedAt: 2026-09-02 07:16:54 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},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:*89a0766f-b8b1-4184-ae57-f10e57ab86a2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*36228f64-fbd2-4c3b-91ae-666fbd0ea272,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-workflowjk4tp/series-workflowjk4tp-build-action-2446441218/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-workflowjk4tp/series-workflowjk4tp-build-action-3919733751/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-02 04:15:05 +0000 UTC FinishedAt: 2026-09-02 04:15:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-02 04:15:05 +0000 UTC FinishedAt: 2026-09-02 04:15:09 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},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-workflowjk4tp/series-workflowjk4tp-convert-artifact-2635258716/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-02 04:15:05 +0000 UTC FinishedAt: 2026-09-02 04:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-02 04:15:05 +0000 UTC FinishedAt: 2026-09-02 04:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-02 04:15:05 +0000 UTC FinishedAt: 2026-09-02 04:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-02 04:15:15 +0000 UTC FinishedAt: 2026-09-02 07:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjk4tp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_set_attrs","damon_set_schemes","damon_set_regions","damos_commit_quota_goals","damon_sysfs_add_schemes","damos_walk"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"ead700ca770c82167af32622cf8b68c9f87c3c7c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_VADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","DAMON_STAT","NUMA","MEMCG","TRANSPARENT_HUGEPAGE"],"series_id":"a03b7449-40a0-4dec-bdce-1eb698eb31e2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-02 04:15:15 +0000 UTC FinishedAt: 2026-09-02 07:16:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*89a0766f-b8b1-4184-ae57-f10e57ab86a2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*36228f64-fbd2-4c3b-91ae-666fbd0ea272,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-workflowjk4tp/series-workflowjk4tp-build-action-2446441218/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-workflowjk4tp/series-workflowjk4tp-build-action-3919733751/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-workflowjk4tp/series-workflowjk4tp-convert-artifact-2635258716/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,}