Name: series-workflow5z848 Phase: Succeeded StartedAt: 2026-08-01 11:20:53 +0000 UTC FinishedAt: 2026-08-01 16:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[0] Phase: Succeeded StartedAt: 2026-08-01 11:20:53 +0000 UTC FinishedAt: 2026-08-01 12:03:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 11:20:53 +0000 UTC FinishedAt: 2026-08-01 12:03:27 +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": "99cf84da3838f1613deed700ddfb033163b28106", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TRANSPARENT_HUGEPAGE", "MEMCG" ], "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": "99cf84da3838f1613deed700ddfb033163b28106", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TRANSPARENT_HUGEPAGE", "MEMCG" ], "series_id": "d7a9273d-4e40-474c-a06b-725e4c8fa0f2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "folio_split", "__split_huge_page_to_list_to_order", "xas_split_alloc" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm9saW9fc3BsaXQmIzM0OywKICAgICYjMzQ7X19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICAgJiMzNDt4YXNfc3BsaXRfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8mIzM5O3MgbWVtb3J5IGNncm91cCBkdXJpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGh1Z2UgcGFnZSBzcGxpdHRpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5MDhkZjExZDYzYzYzOTkyYjc2OWMzODZmZmQxODM0NTQxNmIyYTBkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAxMjowMjoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9saWIveGFycmF5LmMgYi9saWIveGFycmF5LmNcbmluZGV4IDlhOGI0OTE2NTQwY2YuLmJmZTdiZWY4MGYzNGUgMTAwNjQ0XG4tLS0gYS9saWIveGFycmF5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi94YXJyYXkuY1xuQEAgLTEwNTMsNiAmIzQzOzEwNTMsOSBAQCB2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlcixcbiBcdGlmICh4YXMtXHUwMDNleGFfc2hpZnQgJiM0MzsgWEFfQ0hVTktfU0hJRlQgXHUwMDNlIG9yZGVyKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0aWYgKHhhcy1cdTAwM2V4YS1cdTAwM2V4YV9mbGFncyBcdTAwMjYgWEFfRkxBR1NfQUNDT1VOVClcbiYjNDM7XHRcdGdmcCB8PSBfX0dGUF9BQ0NPVU5UO1xuJiM0MztcbiBcdGRvIHtcbiBcdFx0c3RydWN0IHhhX25vZGUgKm5vZGU7XG4gXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcbmluZGV4IDIxYzkyZWU0OGU0NjkuLjgwNGI4ZjZhYTU1NzAgMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtNDEwNiwzNCAmIzQzOzQxMDYsNDIgQEAgc3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4gXHRYQV9TVEFURSh4YXMsIFx1MDAyNmZvbGlvLVx1MDAzZW1hcHBpbmctXHUwMDNlaV9wYWdlcywgZm9saW8tXHUwMDNlaW5kZXgpO1xuIFx0c3RydWN0IGZvbGlvICplbmRfZm9saW8gPSBmb2xpb19uZXh0KGZvbGlvKTtcbiBcdGJvb2wgaXNfYW5vbiA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbyk7XG4mIzQzO1x0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCAqb2xkX21lbWNnO1xuIFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBOVUxMO1xuIFx0c3RydWN0IGFub25fdm1hICphbm9uX3ZtYSA9IE5VTEw7XG4gXHRpbnQgb2xkX29yZGVyID0gZm9saW9fb3JkZXIoZm9saW8pO1xuIFx0c3RydWN0IGZvbGlvICpuZXdfZm9saW8sICpuZXh0O1xuIFx0aW50IG5yX3NobWVtX2Ryb3BwZWQgPSAwO1xuIFx0ZW51bSB0dHVfZmxhZ3MgdHR1X2ZsYWdzID0gMDtcbi1cdGludCByZXQ7XG4gXHRwZ29mZl90IGVuZCA9IDA7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdFZNX1dBUk5fT05fT05DRV9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7XG4gXHRWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pLCBmb2xpbyk7XG4gXG4gXHRpZiAoZm9saW8gIT0gcGFnZV9mb2xpbyhzcGxpdF9hdCkgfHwgZm9saW8gIT0gcGFnZV9mb2xpbyhsb2NrX2F0KSkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X25vX21lbWNnO1xuIFx0fVxuIFxuIFx0aWYgKG5ld19vcmRlciBcdTAwM2U9IG9sZF9vcmRlcikge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X25vX21lbWNnO1xuIFx0fVxuIFxuIFx0cmV0ID0gZm9saW9fY2hlY2tfc3BsaXR0YWJsZShmb2xpbywgbmV3X29yZGVyLCBzcGxpdF90eXBlKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0Vk1fV0FSTl9PTkNFKHJldCA9PSAtRUlOVkFMLCBcJiMzNDtUcmllZCB0byBzcGxpdCBhbiB1bnNwbGl0dGFibGUgZm9saW9cJiMzNDspO1xuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X25vX21lbWNnO1xuIFx0fVxuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogc3dpdGNoIHRvIGZvbGlvJiMzOTtzIG1lbWNnIGFzIHhhcnJheSBub2RlIGFsbG9jYXRpb24gY2FuIGhhcHBlbiBhbmRcbiYjNDM7XHQgKiBuZWVkcyB0byBjaGFyZ2UgdG8gaXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbiYjNDM7XHRvbGRfbWVtY2cgPSBzZXRfYWN0aXZlX21lbWNnKG1lbWNnKTtcbiYjNDM7XG4gXHRpZiAoaXNfYW5vbikge1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgY2FsbGVyIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGhvbGQgYW4gbW1hcF9sb2NrIHRoYXQgd291bGRcbkBAIC00Mjc2LDYgJiM0Mzs0Mjg0LDEwIEBAIHN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxuIFx0aWYgKG1hcHBpbmcpXG4gXHRcdGlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTtcbiBvdXQ6XG4mIzQzO1x0LyogcmVzdG9yZSB0byBjYWxsZXImIzM5O3Mgb2xkX21lbWNnICovXG4mIzQzO1x0c2V0X2FjdGl2ZV9tZW1jZyhvbGRfbWVtY2cpO1xuJiM0MztcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcbiYjNDM7b3V0X25vX21lbWNnOlxuIFx0eGFzX2Rlc3Ryb3koXHUwMDI2eGFzKTtcbiBcdGlmIChpc19wbWRfb3JkZXIob2xkX29yZGVyKSlcbiBcdFx0Y291bnRfdm1fZXZlbnQoIXJldCA/IFRIUF9TUExJVF9QQUdFIDogVEhQX1NQTElUX1BBR0VfRkFJTEVEKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7TUVNQ0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmb2xpb19zcGxpdCYjMzQ7LAogICAgJiMzNDtfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyJiMzNDssCiAgICAmIzM0O3hhc19zcGxpdF9hbGxvYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSBjaGFyZ2UgbWVtb3J5IGFsbG9jYXRpb25zIHRvIHRoZSBmb2xpbyYjMzk7cyBtZW1vcnkgY2dyb3VwIGR1cmluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgaHVnZSBwYWdlIHNwbGl0dGluZyBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkwOGRmMTFkNjNjNjM5OTJiNzY5YzM4NmZmZDE4MzQ1NDE2YjJhMGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDEyOjAyOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbGliL3hhcnJheS5jIGIvbGliL3hhcnJheS5jCmluZGV4IDlhOGI0OTE2NTQwY2YuLmJmZTdiZWY4MGYzNGUgMTAwNjQ0Ci0tLSBhL2xpYi94YXJyYXkuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIveGFycmF5LmMKQEAgLTEwNTMsNiAmIzQzOzEwNTMsOSBAQCB2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlciwKIAlpZiAoeGFzLSZndDt4YV9zaGlmdCAmIzQzOyBYQV9DSFVOS19TSElGVCAmZ3Q7IG9yZGVyKQogCQlyZXR1cm47CiAKJiM0MzsJaWYgKHhhcy0mZ3Q7eGEtJmd0O3hhX2ZsYWdzICZhbXA7IFhBX0ZMQUdTX0FDQ09VTlQpCiYjNDM7CQlnZnAgfD0gX19HRlBfQUNDT1VOVDsKJiM0MzsKIAlkbyB7CiAJCXN0cnVjdCB4YV9ub2RlICpub2RlOwogCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCAyMWM5MmVlNDhlNDY5Li44MDRiOGY2YWE1NTcwIDEwMDY0NAotLS0gYS9tbS9odWdlX21lbW9yeS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2VfbWVtb3J5LmMKQEAgLTQxMDYsMzQgJiM0Mzs0MTA2LDQyIEBAIHN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLAogCVhBX1NUQVRFKHhhcywgJmFtcDtmb2xpby0mZ3Q7bWFwcGluZy0mZ3Q7aV9wYWdlcywgZm9saW8tJmd0O2luZGV4KTsKIAlzdHJ1Y3QgZm9saW8gKmVuZF9mb2xpbyA9IGZvbGlvX25leHQoZm9saW8pOwogCWJvb2wgaXNfYW5vbiA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbyk7CiYjNDM7CXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgKm9sZF9tZW1jZzsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IE5VTEw7CiAJc3RydWN0IGFub25fdm1hICphbm9uX3ZtYSA9IE5VTEw7CiAJaW50IG9sZF9vcmRlciA9IGZvbGlvX29yZGVyKGZvbGlvKTsKIAlzdHJ1Y3QgZm9saW8gKm5ld19mb2xpbywgKm5leHQ7CiAJaW50IG5yX3NobWVtX2Ryb3BwZWQgPSAwOwogCWVudW0gdHR1X2ZsYWdzIHR0dV9mbGFncyA9IDA7Ci0JaW50IHJldDsKIAlwZ29mZl90IGVuZCA9IDA7CiYjNDM7CWludCByZXQ7CiAKIAlWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbG9ja2VkKGZvbGlvKSwgZm9saW8pOwogCVZNX1dBUk5fT05fT05DRV9GT0xJTyghZm9saW9fdGVzdF9sYXJnZShmb2xpbyksIGZvbGlvKTsKIAogCWlmIChmb2xpbyAhPSBwYWdlX2ZvbGlvKHNwbGl0X2F0KSB8fCBmb2xpbyAhPSBwYWdlX2ZvbGlvKGxvY2tfYXQpKSB7CiAJCXJldCA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfbm9fbWVtY2c7CiAJfQogCiAJaWYgKG5ld19vcmRlciAmZ3Q7PSBvbGRfb3JkZXIpIHsKIAkJcmV0ID0gLUVJTlZBTDsKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9ub19tZW1jZzsKIAl9CiAKIAlyZXQgPSBmb2xpb19jaGVja19zcGxpdHRhYmxlKGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X3R5cGUpOwogCWlmIChyZXQpIHsKIAkJVk1fV0FSTl9PTkNFKHJldCA9PSAtRUlOVkFMLCAmIzM0O1RyaWVkIHRvIHNwbGl0IGFuIHVuc3BsaXR0YWJsZSBmb2xpbyYjMzQ7KTsKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9ub19tZW1jZzsKIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogc3dpdGNoIHRvIGZvbGlvJiMzOTtzIG1lbWNnIGFzIHhhcnJheSBub2RlIGFsbG9jYXRpb24gY2FuIGhhcHBlbiBhbmQKJiM0MzsJICogbmVlZHMgdG8gY2hhcmdlIHRvIGl0LgomIzQzOwkgKi8KJiM0MzsJbWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTsKJiM0MzsJb2xkX21lbWNnID0gc2V0X2FjdGl2ZV9tZW1jZyhtZW1jZyk7CiYjNDM7CiAJaWYgKGlzX2Fub24pIHsKIAkJLyoKIAkJICogVGhlIGNhbGxlciBkb2VzIG5vdCBuZWNlc3NhcmlseSBob2xkIGFuIG1tYXBfbG9jayB0aGF0IHdvdWxkCkBAIC00Mjc2LDYgJiM0Mzs0Mjg0LDEwIEBAIHN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLAogCWlmIChtYXBwaW5nKQogCQlpX21tYXBfdW5sb2NrX3JlYWQobWFwcGluZyk7CiBvdXQ6CiYjNDM7CS8qIHJlc3RvcmUgdG8gY2FsbGVyJiMzOTtzIG9sZF9tZW1jZyAqLwomIzQzOwlzZXRfYWN0aXZlX21lbWNnKG9sZF9tZW1jZyk7CiYjNDM7CW1lbV9jZ3JvdXBfcHV0KG1lbWNnKTsKJiM0MztvdXRfbm9fbWVtY2c6CiAJeGFzX2Rlc3Ryb3koJmFtcDt4YXMpOwogCWlmIChpc19wbWRfb3JkZXIob2xkX29yZGVyKSkKIAkJY291bnRfdm1fZXZlbnQoIXJldCA/IFRIUF9TUExJVF9QQUdFIDogVEhQX1NQTElUX1BBR0VfRkFJTEVEKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0NQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBhbmQgRnV6emluZyBhIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgYWN0dWFsbHkgZG9pbmcgYW55dGhpbmcgd2Ugc2hvdWxkIGJlIGNvbmNlcm5lZCBhYm91dCwgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggdGhlIGVmZm9ydCBvZiB0YXJnZXRpbmcgd2l0aCBmdXp6aW5nLiBJdCB0b3VjaGVzIGBsaWIveGFycmF5LmNgIGFuZCBgbW0vaHVnZV9tZW1vcnkuY2AsIHdoaWNoIGFsd2F5cyBjYXRjaGVzIG15IGF0dGVudGlvbi4KCkluIGBsaWIveGFycmF5LmNgLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYHhhc19zcGxpdF9hbGxvY2AuIEl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgYWRkaW5nIGBfX0dGUF9BQ0NPVU5UYCB0byB0aGUgYGdmcGAgZmxhZywgYnV0IG9ubHkgaWYgYSBzcGVjaWZpYyBmbGFnLCBgWEFfRkxBR1NfQUNDT1VOVGAsIGlzIHNldCBpbiB0aGUgeGFycmF5LiBUaGF04oCZcyBpbnRlcmVzdGluZywgYXMgaXQgaXMgcmVsYXRlZCB0byBtZW1vcnkgYWNjb3VudGluZy4KClRoZW4sIGBtbS9odWdlX21lbW9yeS5jYCBoYXMgYSBjaGFuZ2UgdG8gYF9fZm9saW9fc3BsaXRgLiBJdCBhcHBlYXJzIHRvIGJlIHN3aXRjaGluZyB0byB0aGUgZm9saW8mIzM5O3MgbWVtY2cgYmVmb3JlIGF0dGVtcHRpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbnMgZHVyaW5nIGEgc3BsaXQuIFRoaXMgKmRlZmluaXRlbHkqIHNvdW5kcyBsaWtlIGEgcG90ZW50aWFsIHBvaW50IG9mIGNvbnRlbnRpb24sIGFuZCBpdCBpcyBhIGNvbW1vbiBhcmVhIHRvIGNyZWF0ZSBpc3N1ZXMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBib3RoIGFyZSByZWFjaGFibGUsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gYF9fZm9saW9fc3BsaXRgIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIHVzZWZ1bCBpbiBmdXp6aW5nLiBUaGVuIGB4YXNfc3BsaXRfYWxsb2NgIGxvb2tzIGxpa2UgaXQgaXMgcmVhY2hhYmxlIGFzIHdlbGwuCgpOb3csIGxldCYjMzk7cyBzZWUgaG93IHRoaXMgaXMgY29uZmlndXJlZC4gVGhlIGNvZGUgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgIG9ubHkgZ2V0cyBjb21waWxlZCBpZiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGF0JiMzOTtzIHRydWUsIGJ1dCBpdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBpbiBidXNpbmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodWdlX21lbW9yeS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9MTAwPW9iai0kKENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OKSAmIzQzOz0gbWlncmF0ZV9kZXZpY2Uub1xubW0vTWFrZWZpbGU6MTAxOm9iai0kKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgJiM0Mzs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXG5tbS9NYWtlZmlsZS0xMDItb2JqLSQoQ09ORklHX1BBR0VfQ09VTlRFUikgJiM0Mzs9IHBhZ2VfY291bnRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gaXQmIzM5O3MgY2xlYXIgdGhhdCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBkZWZpbml0ZWx5IGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBtbS9odWdlX21lbW9yeS5jYCBtb2R1bGUuIFRoYXQgb25lJiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvYCBhbmQgYHNldF9hY3RpdmVfbWVtY2dgLiBUaG9zZSBmdW5jdGlvbnMsIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGhhdmUgYSBzdHJvbmcgYXNzb2NpYXRpb24gd2l0aCBtZW1vcnkgY29udHJvbCBncm91cHMsIG9yIGBDT05GSUdfTUVNQ0dgLiBUaGUgZGVwZW5kZW5jeSBmZWVscyB2ZXJ5IGxpa2VseS4gSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGF0IGBDT05GSUdfTUVNQ0dgIGlzLCBpbiBmYWN0LCBhbHNvIGEgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGlzIGNvbnRleHQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbmZpZ3VyYXRpb24gcGljdHVyZSBiZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyIHdpdGggYW55IGNoYW5nZXMgb3IgYW5hbHlzaXMuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGRlZXBlciBvbiB0aGlzIHNwZWNpZmljIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dldF9tZW1fY2dyb3VwX2Zyb21fZm9saW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmM9ODMyPXN0cnVjdCBidWZmZXJfaGVhZCAqZm9saW9fYWxsb2NfYnVmZmVycyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBsb25nIHNpemUsXG4tLVxuZnMvYnVmZmVyLmMtODM4LVxuZnMvYnVmZmVyLmM6ODM5Olx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbmZzL2J1ZmZlci5jLTg0MC1cdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTc1Mz1zdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9jdXJyZW50KHZvaWQpO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtNzU0LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6NzU1OnN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtNzU2LVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTEyMTA9c3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9jdXJyZW50KHZvaWQpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTIxNC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjEyMTU6c3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTIxNi17XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00MTAyPXN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDE0MS1cdCAqL1xubW0vaHVnZV9tZW1vcnkuYzo0MTQyOlx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbm1tL2h1Z2VfbWVtb3J5LmMtNDE0My1cdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xuLS1cbm1tL2xpc3RfbHJ1LmM9NjMxPWludCBmb2xpb19tZW1jZ19saXN0X2xydV9hbGxvYyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgbGlzdF9scnUgKmxydSxcbi0tXG5tbS9saXN0X2xydS5jLTY0OC1cdC8qIEFsbG9jYXRpb24gbWF5IGJsb2NrLCBwaW4gdGhlIG1lbWNnICovXG5tbS9saXN0X2xydS5jOjY0OTpcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XG5tbS9saXN0X2xydS5jLTY1MC1cdHJlcyA9IF9fbWVtY2dfbGlzdF9scnVfYWxsb2MobWVtY2csIGxydSwgZ2ZwKTtcbi0tXG5tbS9tZW1jb250cm9sLmM9MzM0PXN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpnZXRfbWVtX2Nncm91cF9jc3NfZnJvbV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0zNDAtXG5tbS9tZW1jb250cm9sLmM6MzQxOlx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbm1tL21lbWNvbnRyb2wuYy0zNDItXG4tLVxubW0vbWVtY29udHJvbC5jPTExOTk9c3RydWN0IG1lbV9jZ3JvdXAgKmdldF9tZW1fY2dyb3VwX2Zyb21fY3VycmVudCh2b2lkKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xMjE3LS8qKlxubW0vbWVtY29udHJvbC5jOjEyMTg6ICogZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyAtIE9idGFpbiBhIHJlZmVyZW5jZSBvbiBhIGdpdmVuIGZvbGlvJiMzOTtzIG1lbWNnLlxubW0vbWVtY29udHJvbC5jLTEyMTktICogQGZvbGlvOiBmb2xpbyBmcm9tIHdoaWNoIG1lbWNnIHNob3VsZCBiZSBleHRyYWN0ZWQuXG4tLVxubW0vbWVtY29udHJvbC5jLTEyMjItICovXG5tbS9tZW1jb250cm9sLmM6MTIyMzpzdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vbWVtY29udHJvbC5jLTEyMjQte1xuLS1cbm1tL21pZ3JhdGUuYz0yNzU4PWludCBtaWdyYXRlX21pc3BsYWNlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbm9kZSlcbi0tXG5tbS9taWdyYXRlLmMtMjc2My1cdExJU1RfSEVBRChtaWdyYXRlcGFnZXMpO1xubW0vbWlncmF0ZS5jOjI3NjQ6XHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbm1tL21pZ3JhdGUuYy0yNzY1LVx0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTtcbi0tXG5tbS92bXNjYW4uYz00MjU1PWJvb2wgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGludCBucilcbi0tXG5tbS92bXNjYW4uYy00MzA3LVxubW0vdm1zY2FuLmM6NDMwODpcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XG5tbS92bXNjYW4uYy00MzA5LVx0bHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTtcbi0tXG5tbS93b3JraW5nc2V0LmM9NTQ4PXZvaWQgd29ya2luZ3NldF9yZWZhdWx0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHZvaWQgKnNoYWRvdylcbi0tXG5tbS93b3JraW5nc2V0LmMtNTcyLVx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG5tbS93b3JraW5nc2V0LmM6NTczOlx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbm1tL3dvcmtpbmdzZXQuYy01NzQtXHRscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgZm9saW9fcGdkYXQoZm9saW8pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRm9saW8gU3BsaXQgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgX19mb2xpb19zcGxpdGAsIHNwZWNpZmljYWxseSB0byB1dGlsaXplIGBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvYC4gVGhhdCYjMzk7cyBpbiBgbW0vaHVnZV9tZW1vcnkuY2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBuZXcgY29kZSBwYXRoIGlzIGFjdHVhbGx5IGFjdGl2ZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7RG8gd2UgcmVxdWlyZSBgQ09ORklHX01FTUNHYCB0byBtYWtlIHRoaXMgY2hhbmdlIG1lYW5pbmdmdWw/JiMzNDsKCkxldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpb2AgaW4gYGluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oYCwgaXQmIzM5O3MgYSBzdGF0aWMgaW5saW5lLCBhbmQgY3J1Y2lhbGx5LCByZXR1cm5zIE5VTEwgaWYgYENPTkZJR19NRU1DR2AgaXNuJiMzOTt0IGVuYWJsZWQuIEJpbmdvLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTUVNQ0dgIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgaGVyZSwgb3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gd2lsbCBqdXN0IGFsd2F5cyByZXR1cm4gbnVsbCBhbmQgdGhlIGNoYW5nZXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aG8gdGhlIGNhbGxlcnMgb2YgYF9fZm9saW9fc3BsaXRgIGFyZSB0byBnZXQgYSBiZXR0ZXIgY29udGV4dCBvbiB0aGUgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2ZvbGlvX3NwbGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmM9MzkyNj1zdGF0aWMgaW50IF9fZm9saW9fZnJlZXplX2FuZF9zcGxpdF91bm1hcHBlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDA4MS0vKipcbm1tL2h1Z2VfbWVtb3J5LmM6NDA4MjogKiBfX2ZvbGlvX3NwbGl0KCkgLSBzcGxpdCBhIGZvbGlvIGF0IEBzcGxpdF9hdCB0byBhIEBuZXdfb3JkZXIgZm9saW9cbm1tL2h1Z2VfbWVtb3J5LmMtNDA4My0gKiBAZm9saW86IGZvbGlvIHRvIHNwbGl0XG4tLVxubW0vaHVnZV9tZW1vcnkuYy00MTAxLSAqL1xubW0vaHVnZV9tZW1vcnkuYzo0MTAyOnN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxubW0vaHVnZV9tZW1vcnkuYy00MTAzLVx0XHRzdHJ1Y3QgcGFnZSAqc3BsaXRfYXQsIHN0cnVjdCBwYWdlICpsb2NrX2F0LFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9NDM4Nz1pbnQgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcihzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCxcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQzOTEtXG5tbS9odWdlX21lbW9yeS5jOjQzOTI6XHRyZXR1cm4gX19mb2xpb19zcGxpdChmb2xpbywgbmV3X29yZGVyLCBcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBwYWdlLCBsaXN0LFxubW0vaHVnZV9tZW1vcnkuYy00MzkzLVx0XHRcdCAgICAgU1BMSVRfVFlQRV9VTklGT1JNKTtcbi0tXG5tbS9odWdlX21lbW9yeS5jPTQ0MjA9aW50IGZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00NDIyLXtcbm1tL2h1Z2VfbWVtb3J5LmM6NDQyMzpcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X2F0LCBcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBsaXN0LFxubW0vaHVnZV9tZW1vcnkuYy00NDI0LVx0XHRcdCAgICAgU1BMSVRfVFlQRV9OT05fVU5JRk9STSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgxOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRm9saW8gU3BsaXR0aW5nIEFQSSBVc2FnZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBtaW5kIGlzIGltbWVkaWF0ZWx5IGRyYXduIHRvIHRoZSBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgYW5kIGBmb2xpb19zcGxpdGAgZnVuY3Rpb25zLiBUaGUgZmFjdCB0aGF0IGJvdGggb2YgdGhlc2UgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGBmb2xpb19zcGxpdGAsIGRpcmVjdGx5IGNhbGwgYF9fZm9saW9fc3BsaXRgIGlzIGludGVyZXN0aW5nLiBJJiMzOTttIG5vdGluZyB0aGF0IGBmb2xpb19zcGxpdGAgaXMgYW4gQVBJIGZ1bmN0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIGxpa2VseSBhIHB1YmxpYyBlbnRyeSBwb2ludCwgYXQgbGVhc3QgaW50ZXJuYWxseSwgZm9yIG1hbmlwdWxhdGluZyBmb2xpb3MuIFRoaXMgc3VnZ2VzdHMgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvciBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVneS4gVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gaWRlbnRpZnkgYWxsIHRoZSBwb3RlbnRpYWwgY2FsbGVycyBvZiBgZm9saW9fc3BsaXRgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHdpbGwgZ2l2ZSBtZSB0aGUgYmVzdCBpbnNpZ2h0IGludG8gaXRzIG92ZXJhbGwgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgY2FsbCBncmFwaCBhbmQgc2VlIHdobyYjMzk7cyBpbnZva2luZyB0aGlzIEFQSS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fc3BsaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTM0OD1zdGF0aWMgdm1fZmF1bHRfdCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzU5LVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTM2MDpzdGF0aWMgdm9pZCBkcm1fcGFnZW1hcF9mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKm9yaWdfZm9saW8sIHN0cnVjdCBmb2xpbyAqbmV3X2ZvbGlvKVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTM2MS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTM3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wYWdlbWFwX29wcyBkcm1fcGFnZW1hcF9wYWdlbWFwX29wcyA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzc0LVx0Lm1pZ3JhdGVfdG9fcmFtID0gZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19yYW0sXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzc1Olx0LmZvbGlvX3NwbGl0ID0gZHJtX3BhZ2VtYXBfZm9saW9fc3BsaXQsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzc2LX07XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9MTgzPXN0YXRpYyB2bV9mYXVsdF90IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNzktXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYzoyODA6c3RhdGljIHZvaWQgbm91dmVhdV9kbWVtX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqaGVhZCwgc3RydWN0IGZvbGlvICp0YWlsKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjgxLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz0yODk9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcGFnZW1hcF9vcHMgbm91dmVhdV9kbWVtX3BhZ2VtYXBfb3BzID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTI5MS1cdC5taWdyYXRlX3RvX3JhbVx0XHQ9IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbSxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI5MjpcdC5mb2xpb19zcGxpdFx0XHQ9IG5vdXZlYXVfZG1lbV9mb2xpb19zcGxpdCxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTI5My19O1xuLS1cbmZzL2Vyb2ZzL2RhdGEuYz0yNTk9dm9pZCBlcm9mc19vbmxpbmVmb2xpb19pbml0KHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvZXJvZnMvZGF0YS5jLTI2OC1cbmZzL2Vyb2ZzL2RhdGEuYzoyNjk6dm9pZCBlcm9mc19vbmxpbmVmb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuZnMvZXJvZnMvZGF0YS5jLTI3MC17XG4tLVxuZnMvZXJvZnMvZmlsZWlvLmM9ODk9c3RhdGljIGludCBlcm9mc19maWxlaW9fc2Nhbl9mb2xpbyhzdHJ1Y3QgZXJvZnNfZmlsZWlvICppbyxcbi0tXG5mcy9lcm9mcy9maWxlaW8uYy0xNDctXHRcdFx0aWYgKCFhdHRhY2hlZCYjNDM7JiM0MzspXG5mcy9lcm9mcy9maWxlaW8uYzoxNDg6XHRcdFx0XHRlcm9mc19vbmxpbmVmb2xpb19zcGxpdChmb2xpbyk7XG5mcy9lcm9mcy9maWxlaW8uYy0xNDktXHRcdFx0aW8tXHUwMDNlZGV2Lm1fcGEgJiM0Mzs9IGxlbjtcbi0tXG5mcy9lcm9mcy9pbnRlcm5hbC5oPTQxNT12b2lkIGVyb2ZzX29ubGluZWZvbGlvX2luaXQoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5mcy9lcm9mcy9pbnRlcm5hbC5oOjQxNjp2b2lkIGVyb2ZzX29ubGluZWZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuZnMvZXJvZnMvaW50ZXJuYWwuaC00MTctdm9pZCBlcm9mc19vbmxpbmVmb2xpb19lbmQoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IGVyciwgYm9vbCBkaXJ0eSk7XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xMDA1PXN0YXRpYyBpbnQgel9lcm9mc19zY2FuX2ZvbGlvKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmLFxuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtMTA3NS1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTA3NjpcdFx0XHRlcm9mc19vbmxpbmVmb2xpb19zcGxpdChmb2xpbyk7XG5mcy9lcm9mcy96ZGF0YS5jLTEwNzctXHRcdFx0aWYgKGYtXHUwMDNlcGNsLVx1MDAzZWxlbmd0aCBcdTAwM2Mgb2Zmc2V0ICYjNDM7IGVuZCAtIG1hcC1cdTAwM2VtX2xhKSB7XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDAzPWludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA0LVx0XHR1bnNpZ25lZCBpbnQgbmV3X29yZGVyKTtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjQwNTppbnQgZm9saW9fc3BsaXRfdW5tYXBwZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcik7XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MDYtdW5zaWduZWQgaW50IG1pbl9vcmRlcl9mb3Jfc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbyk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDA4PWludCBmb2xpb19jaGVja19zcGxpdHRhYmxlKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MDktXHRcdFx0ICAgZW51bSBzcGxpdF90eXBlIHNwbGl0X3R5cGUpO1xuaW5jbHVkZS9saW51eC9odWdlX21tLmg6NDEwOmludCBmb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQxMS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NjY5PXN0YXRpYyBpbmxpbmUgaW50IHNwbGl0X2ZvbGlvX3RvX2xpc3Qoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IGxpc3RfaGVhZCAqbGlzdClcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC02NzQtXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo2NzU6c3RhdGljIGlubGluZSBpbnQgZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTY3Ni1cdFx0c3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTAyMj12b2lkIHNwbGl0X3BhZ2VfbWVtY2coc3RydWN0IHBhZ2UgKmZpcnN0LCB1bnNpZ25lZCBvcmRlcik7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxMDIzOnZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBvbGRfb3JkZXIsXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xMDI0LVx0XHR1bnNpZ25lZCBuZXdfb3JkZXIpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE0NTM9c3RhdGljIGlubGluZSB2b2lkIHNwbGl0X3BhZ2VfbWVtY2coc3RydWN0IHBhZ2UgKmZpcnN0LCB1bnNpZ25lZCBvcmRlcilcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDU2LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTQ1NzpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQ1OC1cdFx0dW5zaWduZWQgb2xkX29yZGVyLCB1bnNpZ25lZCBuZXdfb3JkZXIpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oPTc3PXN0cnVjdCBkZXZfcGFnZW1hcF9vcHMge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaC0xMDctXHQgKi9cbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaDoxMDg6XHR2b2lkICgqZm9saW9fc3BsaXQpKHN0cnVjdCBmb2xpbyAqaGVhZCwgc3RydWN0IGZvbGlvICp0YWlsKTtcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaC0xMDktfTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmg9MjQ3PXN0YXRpYyBpbmxpbmUgdm9pZCB6b25lX2RldmljZV9wcml2YXRlX3NwbGl0X2NiKHN0cnVjdCBmb2xpbyAqb3JpZ2luYWxfZm9saW8sXG4tLVxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oLTI1MC1cdGlmIChmb2xpb19pc19kZXZpY2VfcHJpdmF0ZShvcmlnaW5hbF9mb2xpbykpIHtcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaDoyNTE6XHRcdGlmICghb3JpZ2luYWxfZm9saW8tXHUwMDNlcGdtYXAtXHUwMDNlb3BzLVx1MDAzZWZvbGlvX3NwbGl0KSB7XG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmgtMjUyLVx0XHRcdGlmIChuZXdfZm9saW8pIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmgtMjU3LVx0XHR9IGVsc2Uge1xuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oOjI1ODpcdFx0XHRvcmlnaW5hbF9mb2xpby1cdTAwM2VwZ21hcC1cdTAwM2VvcHMtXHUwMDNlZm9saW9fc3BsaXQob3JpZ2luYWxfZm9saW8sXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmgtMjU5LVx0XHRcdFx0XHRcdFx0XHQgbmV3X2ZvbGlvKTtcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg9NTA9VFJBQ0VfRVZFTlQobW1fbWlncmF0ZV9wYWdlcyxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtNTMtXHRcdCB1bnNpZ25lZCBsb25nIHRocF9zdWNjZWVkZWQsIHVuc2lnbmVkIGxvbmcgdGhwX2ZhaWxlZCxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaDo1NDpcdFx0IHVuc2lnbmVkIGxvbmcgdGhwX3NwbGl0LCB1bnNpZ25lZCBsb25nIGxhcmdlX2ZvbGlvX3NwbGl0LFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTU1LVx0XHQgZW51bSBtaWdyYXRlX21vZGUgbW9kZSwgZW51bSBtaWdyYXRlX3JlYXNvbiByZWFzb24pLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC01Ny1cdFRQX0FSR1Moc3VjY2VlZGVkLCBmYWlsZWQsIHRocF9zdWNjZWVkZWQsIHRocF9mYWlsZWQsXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg6NTg6XHRcdHRocF9zcGxpdCwgbGFyZ2VfZm9saW9fc3BsaXQsIG1vZGUsIHJlYXNvbiksXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtNTktXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTY1LVx0XHRfX2ZpZWxkKFx0dW5zaWduZWQgbG9uZyxcdFx0dGhwX3NwbGl0KVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oOjY2Olx0XHRfX2ZpZWxkKFx0dW5zaWduZWQgbG9uZyxcdFx0bGFyZ2VfZm9saW9fc3BsaXQpXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtNjctXHRcdF9fZmllbGQoXHRlbnVtIG1pZ3JhdGVfbW9kZSxcdG1vZGUpXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTc2LVx0XHRfX2VudHJ5LVx1MDAzZXRocF9zcGxpdFx0XHRcdD0gdGhwX3NwbGl0O1xuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oOjc3Olx0XHRfX2VudHJ5LVx1MDAzZWxhcmdlX2ZvbGlvX3NwbGl0XHQ9IGxhcmdlX2ZvbGlvX3NwbGl0O1xuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTc4LVx0XHRfX2VudHJ5LVx1MDAzZW1vZGVcdFx0XHRcdD0gbW9kZTtcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtODctXHRcdF9fZW50cnktXHUwMDNldGhwX3NwbGl0LFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oOjg4Olx0XHRfX2VudHJ5LVx1MDAzZWxhcmdlX2ZvbGlvX3NwbGl0LFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTg5LVx0XHRfX3ByaW50X3N5bWJvbGljKF9fZW50cnktXHUwMDNlbW9kZSwgTUlHUkFURV9NT0RFKSxcbi0tXG5saWIvdGVzdF9obW0uYz0xNzU4PXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE4MzYtXG5saWIvdGVzdF9obW0uYzoxODM3OnN0YXRpYyB2b2lkIGRtaXJyb3JfZGV2bWVtX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqaGVhZCwgc3RydWN0IGZvbGlvICp0YWlsKVxubGliL3Rlc3RfaG1tLmMtMTgzOC17XG4tLVxubGliL3Rlc3RfaG1tLmM9MTg3MT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wYWdlbWFwX29wcyBkbWlycm9yX2Rldm1lbV9vcHMgPSB7XG4tLVxubGliL3Rlc3RfaG1tLmMtMTg3My1cdC5taWdyYXRlX3RvX3JhbVx0PSBkbWlycm9yX2Rldm1lbV9mYXVsdCxcbmxpYi90ZXN0X2htbS5jOjE4NzQ6XHQuZm9saW9fc3BsaXRcdD0gZG1pcnJvcl9kZXZtZW1fZm9saW9fc3BsaXQsXG5saWIvdGVzdF9obW0uYy0xODc1LX07XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zNzk5PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzg0MS1cbm1tL2h1Z2VfbWVtb3J5LmM6Mzg0MjpcdFx0Zm9saW9fc3BsaXRfbWVtY2dfcmVmcyhmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XG5tbS9odWdlX21lbW9yeS5jLTM4NDMtXHRcdHNwbGl0X3BhZ2Vfb3duZXIoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSwgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zOTI2PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00MDgxLS8qKlxubW0vaHVnZV9tZW1vcnkuYzo0MDgyOiAqIF9fZm9saW9fc3BsaXQoKSAtIHNwbGl0IGEgZm9saW8gYXQgQHNwbGl0X2F0IHRvIGEgQG5ld19vcmRlciBmb2xpb1xubW0vaHVnZV9tZW1vcnkuYy00MDgzLSAqIEBmb2xpbzogZm9saW8gdG8gc3BsaXRcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQxMDEtICovXG5tbS9odWdlX21lbW9yeS5jOjQxMDI6c3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG5tbS9odWdlX21lbW9yeS5jLTQxMDMtXHRcdHN0cnVjdCBwYWdlICpzcGxpdF9hdCwgc3RydWN0IHBhZ2UgKmxvY2tfYXQsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00Mjk4LS8qKlxubW0vaHVnZV9tZW1vcnkuYzo0Mjk5OiAqIGZvbGlvX3NwbGl0X3VubWFwcGVkKCkgLSBzcGxpdCBhIGxhcmdlIGFub24gZm9saW8gdGhhdCBpcyBhbHJlYWR5IHVubWFwcGVkXG5tbS9odWdlX21lbW9yeS5jLTQzMDAtICogQGZvbGlvOiBmb2xpbyB0byBzcGxpdFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDMxOS0gKi9cbm1tL2h1Z2VfbWVtb3J5LmM6NDMyMDppbnQgZm9saW9fc3BsaXRfdW5tYXBwZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcilcbm1tL2h1Z2VfbWVtb3J5LmMtNDMyMS17XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00Mzg3PWludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDM5MS1cbm1tL2h1Z2VfbWVtb3J5LmM6NDM5MjpcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIFx1MDAyNmZvbGlvLVx1MDAzZXBhZ2UsIHBhZ2UsIGxpc3QsXG5tbS9odWdlX21lbW9yeS5jLTQzOTMtXHRcdFx0ICAgICBTUExJVF9UWVBFX1VOSUZPUk0pO1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDM5Ni0vKipcbm1tL2h1Z2VfbWVtb3J5LmM6NDM5NzogKiBmb2xpb19zcGxpdCgpIC0gc3BsaXQgYSBmb2xpbyBhdCBAc3BsaXRfYXQgdG8gYSBAbmV3X29yZGVyIGZvbGlvXG5tbS9odWdlX21lbW9yeS5jLTQzOTgtICogQGZvbGlvOiBmb2xpbyB0byBzcGxpdFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDQxOS0gKi9cbm1tL2h1Z2VfbWVtb3J5LmM6NDQyMDppbnQgZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcbm1tL2h1Z2VfbWVtb3J5LmMtNDQyMS1cdFx0c3RydWN0IHBhZ2UgKnNwbGl0X2F0LCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KVxubW0vaHVnZV9tZW1vcnkuYy00NDIyLXtcbm1tL2h1Z2VfbWVtb3J5LmM6NDQyMzpcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X2F0LCBcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBsaXN0LFxubW0vaHVnZV9tZW1vcnkuYy00NDI0LVx0XHRcdCAgICAgU1BMSVRfVFlQRV9OT05fVU5JRk9STSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00NzQwPXN0YXRpYyBpbnQgc3BsaXRfaHVnZV9wYWdlc19waWQoaW50IHBpZCwgdW5zaWduZWQgbG9uZyB2YWRkcl9zdGFydCxcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQ4MzItXHRcdFx0XHRcdFx0XHQgICBpbl9mb2xpb19vZmZzZXQpO1xubW0vaHVnZV9tZW1vcnkuYzo0ODMzOlx0XHRcdGlmICghZm9saW9fc3BsaXQoZm9saW8sIHRhcmdldF9vcmRlciwgc3BsaXRfYXQsIE5VTEwpKVxubW0vaHVnZV9tZW1vcnkuYy00ODM0LVx0XHRcdFx0c3BsaXQmIzQzOyYjNDM7O1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9NDg1Nz1zdGF0aWMgaW50IHNwbGl0X2h1Z2VfcGFnZXNfaW5fZmlsZShjb25zdCBjaGFyICpmaWxlX3BhdGgsIHBnb2ZmX3Qgb2ZmX3N0YXJ0LFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDkwOC1cdFx0XHRcdFx0XHRcdCAgIGluX2ZvbGlvX29mZnNldCk7XG5tbS9odWdlX21lbW9yeS5jOjQ5MDk6XHRcdFx0aWYgKCFmb2xpb19zcGxpdChmb2xpbywgdGFyZ2V0X29yZGVyLCBzcGxpdF9hdCwgTlVMTCkpXG5tbS9odWdlX21lbW9yeS5jLTQ5MTAtXHRcdFx0XHRzcGxpdCYjNDM7JiM0Mzs7XG4tLVxubW0vbWVtY29udHJvbC5jPTM3MTc9dm9pZCBzcGxpdF9wYWdlX21lbWNnKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBvcmRlcilcbi0tXG5tbS9tZW1jb250cm9sLmMtMzczMC1cbm1tL21lbWNvbnRyb2wuYzozNzMxOnZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBvbGRfb3JkZXIsXG5tbS9tZW1jb250cm9sLmMtMzczMi1cdFx0dW5zaWduZWQgbmV3X29yZGVyKVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9OTEyPXN0YXRpYyBpbnQgbWlncmF0ZV92bWFfc3BsaXRfdW5tYXBwZWRfZm9saW8oc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtOTI2LVx0c3BsaXRfaHVnZV9wbWRfYWRkcmVzcyhtaWdyYXRlLVx1MDAzZXZtYSwgYWRkciwgdHJ1ZSk7XG5tbS9taWdyYXRlX2RldmljZS5jOjkyNzpcdHJldCA9IGZvbGlvX3NwbGl0X3VubWFwcGVkKGZvbGlvLCAwKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtOTI4LVx0aWYgKHJldClcbi0tXG5tbS90cnVuY2F0ZS5jPTE3MD1pbnQgdHJ1bmNhdGVfaW5vZGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vdHJ1bmNhdGUuYy0xNzktXG5tbS90cnVuY2F0ZS5jOjE4MDpzdGF0aWMgaW50IGZvbGlvX3NwbGl0X29yX3VubWFwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBwYWdlICpzcGxpdF9hdCxcbm1tL3RydW5jYXRlLmMtMTgxLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbWluX29yZGVyKVxuLS1cbm1tL3RydW5jYXRlLmMtMTg4LVxubW0vdHJ1bmNhdGUuYzoxODk6XHRyZXQgPSBmb2xpb19zcGxpdChmb2xpbywgbWluX29yZGVyLCBzcGxpdF9hdCwgTlVMTCk7XG5tbS90cnVuY2F0ZS5jLTE5MC1cbi0tXG5tbS90cnVuY2F0ZS5jPTIxNz1ib29sIHRydW5jYXRlX2lub2RlX3BhcnRpYWxfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kKVxuLS1cbm1tL3RydW5jYXRlLmMtMjU0LVx0c3BsaXRfYXQgPSBmb2xpb19wYWdlKGZvbGlvLCBQQUdFX0FMSUdOX0RPV04ob2Zmc2V0KSAvIFBBR0VfU0laRSk7XG5tbS90cnVuY2F0ZS5jOjI1NTpcdGlmICghZm9saW9fc3BsaXRfb3JfdW5tYXAoZm9saW8sIHNwbGl0X2F0LCBtaW5fb3JkZXIpKSB7XG5tbS90cnVuY2F0ZS5jLTI1Ni1cdFx0Lypcbi0tXG5tbS90cnVuY2F0ZS5jLTI4MS1cdFx0ICAgIGZvbGlvMi1cdTAwM2VtYXBwaW5nID09IGZvbGlvLVx1MDAzZW1hcHBpbmcpXG5tbS90cnVuY2F0ZS5jOjI4MjpcdFx0XHRmb2xpb19zcGxpdF9vcl91bm1hcChmb2xpbzIsIHNwbGl0X2F0MiwgbWluX29yZGVyKTtcbm1tL3RydW5jYXRlLmMtMjgzLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy5naXRpZ25vcmU9Njc9cm1hcFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vLmdpdGlnbm9yZTo2ODpmb2xpb19zcGxpdF9yYWNlX3Rlc3Rcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZT0xMDU9VEVTVF9HRU5fRklMRVMgJiM0Mzs9IHJtYXBcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlOjEwNjpURVNUX0dFTl9GSUxFUyAmIzQzOz0gZm9saW9fc3BsaXRfcmFjZV90ZXN0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZS0xMDctXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmMtNi0gKlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmM6NzogKiBJdCB0ZXN0cyB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBmb2xpb19zcGxpdCgpIGFuZCBmaWxlbWFwX2dldF9lbnRyeSgpLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmM6ODogKiB3aGVyZSB0aGUgaG9sZSBwdW5jaGVzIG9uIHNobWVtIGxlYWQgdG8gZm9saW9fc3BsaXQoKSBhbmQgcmVhZGluZyB0aGUgc2htZW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2ZvbGlvX3NwbGl0X3JhY2VfdGVzdC5jLTktICogbGVhZCB0byBmaWxlbWFwX2dldF9lbnRyeSgpLlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoPTQ0Mz1DQVRFR09SWT1cJiMzNDt0aHBcJiMzNDsgcnVuX3Rlc3QgLi90cmFuc2h1Z2Utc3RyZXNzIC1kIDIwXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaC00NDQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaDo0NDU6Q0FURUdPUlk9XCYjMzQ7dGhwXCYjMzQ7IHJ1bl90ZXN0IC4vZm9saW9fc3BsaXRfcmFjZV90ZXN0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaC00NDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTY5CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggZGl2ZXMgaW50byBzb21lIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgcm91dGluZXMg4oCTIHNwZWNpZmljYWxseSwgaG93IHdlIGhhbmRsZSBtZW1vcnkgZHVyaW5nIGZpbGUgdHJ1bmNhdGlvbiBhbmQgaHVnZSBwYWdlIHNwbGl0dGluZy4gYGZvbGlvX3NwbGl0YCBpcyB0cmlnZ2VyZWQgYnkgYHRydW5jYXRlX2lub2RlX3BhcnRpYWxfZm9saW9gLCBhbmQgdGhhdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSB0cnVuY2F0aW9uIHByb2Nlc3MsIHNvIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGZvY3VzLiBUaGVuIHRoZXJlJiMzOTtzIHRoZSBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgZmFtaWx5IG9mIGZ1bmN0aW9uczogd2UmIzM5O3ZlIGdvdCB0aGUgaW50ZXJuYWwgaGVscGVycyBhbGwgdGhlIHdheSB1cCB0byB0aGUgcHVibGljbHkgdmlzaWJsZSBgc3BsaXRfaHVnZV9wYWdlYCDigJMgdGhhdCYjMzk7cyBhIGNsZWFyIGluZGljYXRvciBvZiBjaGFuZ2VzIGltcGFjdGluZyBodWdlIHBhZ2UgbWFuYWdlbWVudCwgYSBjcml0aWNhbCBhcmVhIGZvciBwZXJmb3JtYW5jZS4KCkdpdmVuIHRoaXMgY29udGV4dCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGUgcGF0Y2ggaXMgZnVuY3Rpb25hbGx5IHNvdW5kIGFuZCB3b3J0aCBhIGdvb2QgZnV6emluZyBjYW1wYWlnbi4gTWVtb3J5IG1hbmFnZW1lbnQgaW50ZXJhY3Rpb25zIGFyZSBhbHdheXMgY29tcGxleCwgYW5kIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZm91bmRhdGlvbmFsLiBXZSBuZWVkIHRvIHN0cmVzcy10ZXN0IHRoZW0sIHBhcnRpY3VsYXJseSBhcm91bmQgdGhvc2UgZmlsZSB0cnVuY2F0aW9uIGFuZCBodWdlIHBhZ2Ugc3BsaXR0aW5nIG9wZXJhdGlvbnMgdG8gZmx1c2ggb3V0IGFueSBzdWJ0bGUgaXNzdWVzLiBJIHdhbnQgdG8gY2hlY2sgYHhhc19zcGxpdF9hbGxvY2Agd2hpbGUgSSYjMzk7bSBhdCBpdCwgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSByZWxhdGVkIGNoYW5nZXMgdGhlcmUgdGhhdCBjb3VsZCBpbnRlcmFjdCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hhc19zcGxpdF9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3Q9NDkwPWVudHJ5IGNhbiBiZSBzcGxpdCBpbnRvIGVudHJpZXMgb2NjdXB5aW5nIHNtYWxsZXIgcmFuZ2VzIGJ5IGNhbGxpbmdcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdDo0OTE6eGFzX3NwbGl0X2FsbG9jKCkgd2l0aG91dCB0aGUgeGFfbG9jayBoZWxkLCBmb2xsb3dlZCBieSB0YWtpbmcgdGhlIGxvY2tcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdC00OTItYW5kIGNhbGxpbmcgeGFzX3NwbGl0KCkgb3IgY2FsbGluZyB4YXNfdHJ5X3NwbGl0KCkgd2l0aCB4YV9sb2NrLiBUaGVcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdDo0OTM6ZGlmZmVyZW5jZSBiZXR3ZWVuIHhhc19zcGxpdF9hbGxvYygpJiM0Mzt4YXNfc3BsaXQoKSBhbmQgeGFzX3RyeV9hbGxvYygpIGlzXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3Q6NDk0OnRoYXQgeGFzX3NwbGl0X2FsbG9jKCkgJiM0MzsgeGFzX3NwbGl0KCkgc3BsaXQgdGhlIGVudHJ5IGZyb20gdGhlIG9yaWdpbmFsXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3QtNDk1LW9yZGVyIHRvIHRoZSBuZXcgb3JkZXIgaW4gb25lIHNob3QgdW5pZm9ybWx5LCB3aGVyZWFzIHhhc190cnlfc3BsaXQoKVxuLS1cbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdD00OTc9Rm9yIGV4YW1wbGUsIHRvIHNwbGl0IGFuIG9yZGVyLTkgZW50cnksIHdoaWNoIHRha2VzIDJeKDktNik9OCBzbG90cyxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdDo0OTg6YXNzdW1pbmcgYGBYQV9DSFVOS19TSElGVGBgIGlzIDYsIHhhc19zcGxpdF9hbGxvYygpICYjNDM7IHhhc19zcGxpdCgpIG5lZWRcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdC00OTktOCB4YV9ub2RlLiB4YXNfdHJ5X3NwbGl0KCkgc3BsaXRzIHRoZSBvcmRlci05IGVudHJ5IGludG9cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0PTM0NT1YQXJyYXnmnInog73lipvlsIblpJrkuKrntKLlvJXogZTns7vlnKjkuIDotbfvvIzlm6DmraTlr7nkuIDkuKrntKLlvJXnmoTmk43kvZzkvJrlvbHlk43liLDmiYDmnInnmoTntKLlvJXjgILkvovlpoLvvIzlrZjlgqjliLDku7vkvZXntKLlvJXlsIZcdWZmZmRcdWZmZmQuLi5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0LTM2Mi3lnKjkuIDkuKrlpJrntKLlvJXmnaHnm67nmoTku7vkvZXkuIDkuKrntKLlvJXkuK3lrZjlgqggYGBOVUxMYGAg77yM5bCG5oqK5q+P5Liq57Si5byV55qE5p2h55uu6K6+572u5Li6IGBgTlVMTGBgIO+8jOW5tuino+mZpOe7keWumuOAgumAmui/h+iwg1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkveGFycmF5LnJzdDozNjM655SoeGFzX3NwbGl0X2FsbG9jKCnvvIzlnKjmsqHmnIl4YV9sb2Nr55qE5oOF5Ya15LiL77yM5Y+v5Lul5bCG5LiA5Liq5aSa57Si5byV5p2h55uu5YiG5Ymy5oiQ5Y2g5o2u6L6D5bCP6IyD5Zu055qE5p2h55uu77yM54S25ZCO5YaN5Y+W6ZSB5bm2XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0LTM2NC3osIPnlKh4YXNfc3BsaXQoKeOAglxuLS1cbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oPTM2ND1zdGF0aWMgaW5saW5lIHZvaWQgbWFwcGluZ19zZXRfZ2ZwX21hc2soc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm0sIGdmcF90IG1hc2spXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmgtMzgyLS8qXG5pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaDozODM6ICogeGFzX3NwbGl0X2FsbG9jKCkgZG9lcyBub3Qgc3VwcG9ydCBhcmJpdHJhcnkgb3JkZXJzLiBUaGlzIGltcGxpZXMgbm9cbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oLTM4NC0gKiA1MTJNQiBUSFAgb24gQVJNNjQgd2l0aCA2NEtCIGJhc2UgcGFnZSBzaXplLlxuLS1cbmluY2x1ZGUvbGludXgveGFycmF5Lmg9MTU2Mj12b2lkIHhhc19zcGxpdChzdHJ1Y3QgeGFfc3RhdGUgKiwgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlcik7XG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oOjE1NjM6dm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICosIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsIGdmcF90KTtcbmluY2x1ZGUvbGludXgveGFycmF5LmgtMTU2NC12b2lkIHhhc190cnlfc3BsaXQoc3RydWN0IHhhX3N0YXRlICp4YXMsIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIpO1xuLS1cbmluY2x1ZGUvbGludXgveGFycmF5Lmg9MTU3Nz1zdGF0aWMgaW5saW5lIHZvaWQgeGFzX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB2b2lkICplbnRyeSxcbi0tXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oLTE1ODItXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oOjE1ODM6c3RhdGljIGlubGluZSB2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oLTE1ODQtXHRcdHVuc2lnbmVkIGludCBvcmRlciwgZ2ZwX3QgZ2ZwKVxuLS1cbmxpYi90ZXN0X3hhcnJheS5jPTE4MzY9c3RhdGljIHZvaWQgY2hlY2tfc3BsaXRfMShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCxcbi0tXG5saWIvdGVzdF94YXJyYXkuYy0xODQ1LVxubGliL3Rlc3RfeGFycmF5LmM6MTg0NjpcdHhhc19zcGxpdF9hbGxvYyhcdTAwMjZ4YXMsIHhhLCBvcmRlciwgR0ZQX0tFUk5FTCk7XG5saWIvdGVzdF94YXJyYXkuYy0xODQ3LVx0eGFzX2xvY2soXHUwMDI2eGFzKTtcbi0tXG5saWIveGFycmF5LmM9MTAxMT1zdGF0aWMgdm9pZCBfX3hhc19pbml0X25vZGVfZm9yX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLFxuLS1cbmxpYi94YXJyYXkuYy0xMDMxLS8qKlxubGliL3hhcnJheS5jOjEwMzI6ICogeGFzX3NwbGl0X2FsbG9jKCkgLSBBbGxvY2F0ZSBtZW1vcnkgZm9yIHNwbGl0dGluZyBhbiBlbnRyeS5cbmxpYi94YXJyYXkuYy0xMDMzLSAqIEB4YXM6IFhBcnJheSBvcGVyYXRpb24gc3RhdGUuXG4tLVxubGliL3hhcnJheS5jLTEwNDQtICovXG5saWIveGFycmF5LmM6MTA0NTp2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlcixcbmxpYi94YXJyYXkuYy0xMDQ2LVx0XHRnZnBfdCBnZnApXG4tLVxubGliL3hhcnJheS5jLTEwNzUtfVxubGliL3hhcnJheS5jOjEwNzY6RVhQT1JUX1NZTUJPTF9HUEwoeGFzX3NwbGl0X2FsbG9jKTtcbmxpYi94YXJyYXkuYy0xMDc3LVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9Mzc5OT1zdGF0aWMgaW50IF9fc3BsaXRfdW5tYXBwZWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5ld19vcmRlcixcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM4MjMtXHRcdFx0Lypcbm1tL2h1Z2VfbWVtb3J5LmM6MzgyNDpcdFx0XHQgKiB1bmlmb3JtIHNwbGl0IGhhcyB4YXNfc3BsaXRfYWxsb2MoKSBjYWxsZWQgYmVmb3JlXG5tbS9odWdlX21lbW9yeS5jLTM4MjUtXHRcdFx0ICogaXJxIGlzIGRpc2FibGVkIHRvIGFsbG9jYXRlIGVub3VnaCBtZW1vcnksIHdoZXJlYXNcbi0tXG5tbS9odWdlX21lbW9yeS5jPTQxMDI9c3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00MTgzLVx0XHRcdHhhc19zZXRfb3JkZXIoXHUwMDI2eGFzLCBmb2xpby1cdTAwM2VpbmRleCwgbmV3X29yZGVyKTtcbm1tL2h1Z2VfbWVtb3J5LmM6NDE4NDpcdFx0XHR4YXNfc3BsaXRfYWxsb2MoXHUwMDI2eGFzLCBmb2xpbywgb2xkX29yZGVyLCBnZnApO1xubW0vaHVnZV9tZW1vcnkuYy00MTg1LVx0XHRcdGlmICh4YXNfZXJyb3IoXHUwMDI2eGFzKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM4OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZvbGlvIFNwbGl0dGluZyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGB4YXNfc3BsaXRfYWxsb2NgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgY2FsbGVkIGZyb20gYF9fZm9saW9fc3BsaXRgLiBUaGUgcGF0Y2ggaXMgYWRkaW5nIGBfX0dGUF9BQ0NPVU5UYCB0byBgZ2ZwYCB3aXRoaW4gYHhhc19zcGxpdF9hbGxvY2AgaWYgYHhhcy0mZ3Q7eGEtJmd0O3hhX2ZsYWdzYCBoYXMgYFhBX0ZMQUdTX0FDQ09VTlRgIHNldC4gVGhpcyBtYWtlcyBzZW5zZTsgaXQgYXBwZWFycyB3ZSYjMzk7cmUgZW5hYmxpbmcgbWVtY2cgYWNjb3VudGluZyBkdXJpbmcgdGhlIHNwbGl0IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gVGhlIG90aGVyIGNyaXRpY2FsIHBpZWNlIGlzIHRoYXQgdGhlIGNvZGUgc3dpdGNoZXMgdG8gdGhlIGZvbGlvJiMzOTtzIG1lbWNnIHdpdGhpbiBgX19mb2xpb19zcGxpdGAgKmJlZm9yZSogY2FsbGluZyBgeGFzX3NwbGl0X2FsbG9jYC4gVGhpcyBjb25maXJtcyBtZW1jZyBhc3NvY2lhdGlvbiBpcyBoYXBwZW5pbmcgYXQgdGhlIHJpZ2h0IHBvaW50LgoKU28sIGBfX2ZvbGlvX3NwbGl0YCBhbmQgYHhhc19zcGxpdF9hbGxvY2AgYXJlIHRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHRoaXMgcGF0Y2guIFdhaXQsIGBfX2ZvbGlvX3NwbGl0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gbG9vayB1cHN0cmVhbSBhdCBpdHMgY2FsbGVycyBhbmQgdGhlIG5vbi1zdGF0aWMgY291bnRlcnBhcnRzIGxpa2UgYGZvbGlvX3NwbGl0YCBhbmQgYGZvbGlvX3NwbGl0X3VubWFwcGVkYCBhbmQgbWF5YmUgYWxzbyBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAuIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCBpcyBhbHNvIG5vdCBzdGF0aWMuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBpbnNwZWN0IGBmb2xpb19zcGxpdGAsIGBmb2xpb19zcGxpdF91bm1hcHBlZGAsIGFuZCBgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD0zOTg9ZW51bSBzcGxpdF90eXBlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MDItXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MDM6aW50IF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MDQtXHRcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpO1xuLS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTQxMD1pbnQgZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlciwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDEyLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6NDEzOnN0YXRpYyBpbmxpbmUgaW50IHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE0LVx0XHR1bnNpZ25lZCBpbnQgbmV3X29yZGVyKVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE1LXtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjQxNjpcdHJldHVybiBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHBhZ2UsIGxpc3QsIG5ld19vcmRlcik7XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MTctfVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDE4PXN0YXRpYyBpbmxpbmUgaW50IHNwbGl0X2h1Z2VfcGFnZV90b19vcmRlcihzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG5ld19vcmRlcilcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQxOS17XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MjA6XHRyZXR1cm4gc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIocGFnZSwgTlVMTCwgbmV3X29yZGVyKTtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQyMS19XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDIzPXN0YXRpYyBpbmxpbmUgaW50IHNwbGl0X2h1Z2VfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQyNC17XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MjU6XHRyZXR1cm4gc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIocGFnZSwgTlVMTCwgMCk7XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MjYtfVxuLS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTY0NT1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6NjQ2OnNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNjQ3LVx0XHR1bnNpZ25lZCBpbnQgbmV3X29yZGVyKVxuLS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTgyNj1zdGF0aWMgaW5saW5lIGludCBzcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyKVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtODI3LXtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjgyODpcdHJldHVybiBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcihcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBOVUxMLCBuZXdfb3JkZXIpO1xuaW5jbHVkZS9saW51eC9odWdlX21tLmgtODI5LX1cbi0tXG5tbS9odWdlX21lbW9yeS5jPTQzMjA9aW50IGZvbGlvX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00Mzg2LSAqL1xubW0vaHVnZV9tZW1vcnkuYzo0Mzg3OmludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxubW0vaHVnZV9tZW1vcnkuYy00Mzg4LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbmV3X29yZGVyKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDQwNC0gKiBJdCBoYXMgdGhlIHNhbWUgcHJlcmVxdWlzaXRlcyBhbmQgcmV0dXJucyBhc1xubW0vaHVnZV9tZW1vcnkuYzo0NDA1OiAqIHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKCkuXG5tbS9odWdlX21lbW9yeS5jLTQ0MDYtICpcbi0tXG5tbS9odWdlX21lbW9yeS5jPTQ0NTQ9aW50IHNwbGl0X2ZvbGlvX3RvX2xpc3Qoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IGxpc3RfaGVhZCAqbGlzdClcbm1tL2h1Z2VfbWVtb3J5LmMtNDQ1NS17XG5tbS9odWdlX21lbW9yeS5jOjQ0NTY6XHRyZXR1cm4gc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSwgbGlzdCwgMCk7XG5tbS9odWdlX21lbW9yeS5jLTQ0NTctfVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9NDc0MD1zdGF0aWMgaW50IHNwbGl0X2h1Z2VfcGFnZXNfcGlkKGludCBwaWQsIHVuc2lnbmVkIGxvbmcgdmFkZHJfc3RhcnQsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00ODA5LVx0XHQvKlxubW0vaHVnZV9tZW1vcnkuYzo0ODEwOlx0XHQgKiBGb3IgZm9saW9zIHdpdGggcHJpdmF0ZSwgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoKVxubW0vaHVnZV9tZW1vcnkuYy00ODExLVx0XHQgKiB3aWxsIHRyeSB0byBkcm9wIGl0IGJlZm9yZSBzcGxpdCBhbmQgdGhlbiBjaGVjayBpZiB0aGUgZm9saW9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQwNzUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZvbGlvIFNwbGl0dGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gZm9saW8gc3BsaXR0aW5nLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgZm9saW9fc3BsaXRgIGFuZCBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgdGhpcywgYWxvbmcgd2l0aCBgeGFzX3NwbGl0X2FsbG9jYCwgd2hpY2ggaXMgYWxzbyBleHBvcnRlZC4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuCgpGaXJzdCwgbGV0JiMzOTtzIGNoZWNrIGZvciB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSXQmIzM5O3MgY2xlYXIgdGhhdCBgQ09ORklHX01FTUNHYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBhbmQgc28gaXMgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEdvb2QsIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBjb25jZXJuIG15c2VsZiB3aXRoLgoKQXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkga25vdyBgbGliL3hhcnJheS5jYCBpcyBhbHdheXMgY29tcGlsZWQuIEhvd2V2ZXIsIGBtbS9odWdlX21lbW9yeS5jYCByZXF1aXJlcyBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCwgd2hpY2ggaXMgd2hhdCBJIGFscmVhZHkgbm90ZWQuCgpUaGVyZWZvcmUsIGZvciBlbmFibGluZyB0aGUgZnVuY3Rpb25hbGl0eSwgSSBuZWVkIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBNRU1DR2AuIE15IGZvY3VzLCB0aG91Z2gsIHdpbGwgcmVtYWluIG9uIHRoZSBrZXkgc3ltYm9scyBvZiBpbnRlcmVzdDogYGZvbGlvX3NwbGl0YCwgYF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgLCBhbmQgYHhhc19zcGxpdF9hbGxvY2AuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGZvbGlvX3NwbGl0YCBhbmQgYF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgIGFyZSwgaW5kZWVkLCBleHBvcnRlZCBvciBhdCBsZWFzdCBub24tc3RhdGljLiBZZXMsIHRoZXkgYXJlIGluIGBtbS9odWdlX21lbW9yeS5jYC4gT2theSwgdGhhdCBjb25maXJtcyBteSBpbml0aWFsIGFzc3VtcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmZvbGlvX3NwbGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NzkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBFeHBvcnQgU3RhdHVzIGZvciBGdXp6aW5nKioKCkhtbSwgSSYjMzk7bSBqdXN0IGxvb2tpbmcgYXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgc2V0IHVwIGluIHRoZSBjb2RlLCBhbmQgSSBzZWUgdGhhdCBgZm9saW9fc3BsaXRgIGlzbiYjMzk7dCBhY3R1YWxseSBleHBvcnRlZC4gVGhhdCBpbml0aWFsbHkgZ2F2ZSBtZSBwYXVzZSwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGZvciBmdXp6aW5nLCBpdCBkb2VzbiYjMzk7dCBtYXR0ZXIgKnRvbyogbXVjaCBpZiBzb21ldGhpbmcmIzM5O3MgcHVibGljbHkgYXZhaWxhYmxlLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIG5vbi1zdGF0aWMgbWVhbnMgSSBjYW4gcHJvYmFibHkgc3RpbGwgZ2V0IGF0IGl0IGlmIEkgZGlnIGEgYml0LiBHb29kLCB0aGF0JiMzOTtzIHdvcmthYmxlIGZvciB0aGUgZnV6emluZyBJJiMzOTttIHBsYW5uaW5nLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYC4gSXMgKnRoYXQqIGZ1bmN0aW9uIGV4cG9ydGVkPyBJZiBpdCBpcywgYW5kIEkgY2FuIHVzZSBpdCwgdGhhdCYjMzk7cyBwb3RlbnRpYWxseSBldmVuIGJldHRlci4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMgYW5kIGxvb2sgaXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTYzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgYSBGdW5jdGlvbiYjMzk7cyBFeHBvcnQgU3RhdHVzKioKCkFscmlnaHQsIHRoYXQgc291bmRzIHBlcmZlY3RseSBhY2NlcHRhYmxlLCBubyBpbW1lZGlhdGUgY29uY2VybnMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSBhIHNwZWNpZmljIGRldGFpbCwgcGFydGljdWxhcmx5IGNvbmNlcm5pbmcgdGhlIGZ1bmN0aW9uIGBmb2xpb19zcGxpdF91bm1hcHBlZGAuIEkgbmVlZCB0byBjb25maXJtIGl0cyBhdmFpbGFiaWxpdHksIHNwZWNpZmljYWxseSB3aGV0aGVyIG9yIG5vdCBpdCYjMzk7cyBiZWVuIGV4cG9ydGVkIGFuZCBpcyB0aGVyZWZvcmUgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgb3IgbW9kdWxlIEkmIzM5O20gd29ya2luZyB3aXRoLiBUaGlzIGlzIGEgY29tbW9uIGFuZCBxdWljayBzYW5pdHkgY2hlY2sgSSBvZnRlbiBwZXJmb3JtIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgdXNpbmcgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uOyBlbnN1cmluZyBpdHMgZXhwb3J0IGlzIGNyaXRpY2FsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmZvbGlvX3NwbGl0X3VubWFwcGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUxNDkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzczoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBhIFF1aWNrIENoZWNrKioKClRoYXQmIzM5O3MgZmluZS4gQWxyaWdodCwgbm8gaW1tZWRpYXRlIGNvbmNlcm5zIG9yIHJlZCBmbGFncy4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55dGhpbmcgZWxzZSwgSSBuZWVkIHRvIG1ha2UgYSBxdWljayB2ZXJpZmljYXRpb24uIExldCYjMzk7cyBjaGVjayBpZiB0aGUgZnVuY3Rpb24gYHhhc19zcGxpdF9hbGxvY2AgaXMgcHJvcGVybHkgZXhwb3J0ZWQgYW5kIGFjY2Vzc2libGUuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwcmVyZXF1aXNpdGUgZm9yIHdoYXRldmVyIGZvbGxvd3MsIHNvIGxldCYjMzk7cyBnZXQgdGhhdCB2YWxpZGF0aW9uIG91dCBvZiB0aGUgd2F5IGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLip4YXNfc3BsaXRfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3hhcnJheS5jPTEwNDU9dm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICp4YXMsIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubGliL3hhcnJheS5jLTEwNzUtfVxubGliL3hhcnJheS5jOjEwNzY6RVhQT1JUX1NZTUJPTF9HUEwoeGFzX3NwbGl0X2FsbG9jKTtcbmxpYi94YXJyYXkuYy0xMDc3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM5NQoJCQkJCQkJb3V0cHV0OiAxMTgKCQkJCQkJCXRob3VnaHRzOiAxNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBGb2xpbyBTcGxpdHRpbmcgUGF0Y2gqKgoKQWxyaWdodCwgSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBhbmQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGZvbGlvIHNwbGl0dGluZywgc3BlY2lmaWNhbGx5IGhvdyB3ZSBhY2NvdW50IGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgd2l0aGluIGEgbWVtb3J5IGNncm91cCBkdXJpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBjcml0aWNhbCDigJMgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZnVuZGFtZW50YWwgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMsIGFuZCBpdCYjMzk7cyB0cmlnZ2VyZWQgd2hlbiBhIGh1Z2UgcGFnZSBpcyBzcGxpdC4gU291bmRzIGxpa2UgYSBjb3JlIGlzc3VlLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB0aGUgaW1wb3J0YW50IGBFbmFibGVDb25maWdzYCBhcmUgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYE1FTUNHYC4gQW5kIHRoZSBrZXkgYEZvY3VzU3ltYm9sc2AgbG9vayBsaWtlIGBmb2xpb19zcGxpdGAsIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCwgYW5kIGB4YXNfc3BsaXRfYWxsb2NgLiBUaG9zZSBmdW5jdGlvbnMgZGVmaW5pdGVseSByaW5nIGEgYmVsbCBhcyBjcml0aWNhbCBwb2ludHMgaW4gdGhlIHNwbGl0dGluZyBwcm9jZXNzLgoKUXVpY2sgZG91YmxlLWNoZWNrOiBgQ09ORklHX01FTUNHYCBkZXBlbmRzIG9uIGBDT05GSUdfQ0dST1VQU2AsIGJ1dCBgQ09ORklHX01FTUNHYCBzaG91bGQgYmUgc3VmZmljaWVudCBvbiBpdHMgb3duLCBhbmQgdGhlIHNhbWUgZ29lcyBmb3IgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIE5vIG5lZWQgdG8gZ2V0IG1vcmUgZ3JhbnVsYXIgdGhhbiBuZWNlc3NhcnkuIE9rYXksIHRoZSBjb25maWdzIGFyZSBhcyBleHBlY3RlZC4KCkkgYW0gc2F0aXNmaWVkIGFuZCByZWFkeSB0byBzZXQgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm9saW9fc3BsaXQmIzM0OywKICAgICYjMzQ7X19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICAgJiMzNDt4YXNfc3BsaXRfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8mIzM5O3MgbWVtb3J5IGNncm91cCBkdXJpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGh1Z2UgcGFnZSBzcGxpdHRpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm9saW9fc3BsaXQmIzM0OywKICAgICYjMzQ7X19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICAgJiMzNDt4YXNfc3BsaXRfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8mIzM5O3MgbWVtb3J5IGNncm91cCBkdXJpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGh1Z2UgcGFnZSBzcGxpdHRpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjoxOC4wNzQ2MDgzOThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODA1NTg4ODg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiTUVNQ0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmb2xpb19zcGxpdFwiLFxuICAgIFwiX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlclwiLFxuICAgIFwieGFzX3NwbGl0X2FsbG9jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8ncyBtZW1vcnkgY2dyb3VwIGR1cmluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgaHVnZSBwYWdlIHNwbGl0dGluZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MTguMDc0NjEzNTE4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTI4ODEyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5MDhkZjExZDYzYzYzOTkyYjc2OWMzODZmZmQxODM0NTQxNmIyYTBkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MDI6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbGliL3hhcnJheS5jIGIvbGliL3hhcnJheS5jXFxuaW5kZXggOWE4YjQ5MTY1NDBjZi4uYmZlN2JlZjgwZjM0ZSAxMDA2NDRcXG4tLS0gYS9saWIveGFycmF5LmNcXG4rKysgYi9saWIveGFycmF5LmNcXG5AQCAtMTA1Myw2ICsxMDUzLDkgQEAgdm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICp4YXMsIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuIFxcdGlmICh4YXMtXFx1MDAzZXhhX3NoaWZ0ICsgWEFfQ0hVTktfU0hJRlQgXFx1MDAzZSBvcmRlcilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0aWYgKHhhcy1cXHUwMDNleGEtXFx1MDAzZXhhX2ZsYWdzIFxcdTAwMjYgWEFfRkxBR1NfQUNDT1VOVClcXG4rXFx0XFx0Z2ZwIHw9IF9fR0ZQX0FDQ09VTlQ7XFxuK1xcbiBcXHRkbyB7XFxuIFxcdFxcdHN0cnVjdCB4YV9ub2RlICpub2RlO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcXG5pbmRleCAyMWM5MmVlNDhlNDY5Li44MDRiOGY2YWE1NTcwIDEwMDY0NFxcbi0tLSBhL21tL2h1Z2VfbWVtb3J5LmNcXG4rKysgYi9tbS9odWdlX21lbW9yeS5jXFxuQEAgLTQxMDYsMzQgKzQxMDYsNDIgQEAgc3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuIFxcdFhBX1NUQVRFKHhhcywgXFx1MDAyNmZvbGlvLVxcdTAwM2VtYXBwaW5nLVxcdTAwM2VpX3BhZ2VzLCBmb2xpby1cXHUwMDNlaW5kZXgpO1xcbiBcXHRzdHJ1Y3QgZm9saW8gKmVuZF9mb2xpbyA9IGZvbGlvX25leHQoZm9saW8pO1xcbiBcXHRib29sIGlzX2Fub24gPSBmb2xpb190ZXN0X2Fub24oZm9saW8pO1xcbitcXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csICpvbGRfbWVtY2c7XFxuIFxcdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gTlVMTDtcXG4gXFx0c3RydWN0IGFub25fdm1hICphbm9uX3ZtYSA9IE5VTEw7XFxuIFxcdGludCBvbGRfb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XFxuIFxcdHN0cnVjdCBmb2xpbyAqbmV3X2ZvbGlvLCAqbmV4dDtcXG4gXFx0aW50IG5yX3NobWVtX2Ryb3BwZWQgPSAwO1xcbiBcXHRlbnVtIHR0dV9mbGFncyB0dHVfZmxhZ3MgPSAwO1xcbi1cXHRpbnQgcmV0O1xcbiBcXHRwZ29mZl90IGVuZCA9IDA7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbG9ja2VkKGZvbGlvKSwgZm9saW8pO1xcbiBcXHRWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pLCBmb2xpbyk7XFxuIFxcbiBcXHRpZiAoZm9saW8gIT0gcGFnZV9mb2xpbyhzcGxpdF9hdCkgfHwgZm9saW8gIT0gcGFnZV9mb2xpbyhsb2NrX2F0KSkge1xcbiBcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0Z290byBvdXRfbm9fbWVtY2c7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChuZXdfb3JkZXIgXFx1MDAzZT0gb2xkX29yZGVyKSB7XFxuIFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9ub19tZW1jZztcXG4gXFx0fVxcbiBcXG4gXFx0cmV0ID0gZm9saW9fY2hlY2tfc3BsaXR0YWJsZShmb2xpbywgbmV3X29yZGVyLCBzcGxpdF90eXBlKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRWTV9XQVJOX09OQ0UocmV0ID09IC1FSU5WQUwsIFxcXCJUcmllZCB0byBzcGxpdCBhbiB1bnNwbGl0dGFibGUgZm9saW9cXFwiKTtcXG4tXFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdGdvdG8gb3V0X25vX21lbWNnO1xcbiBcXHR9XFxuIFxcbitcXHQvKlxcbitcXHQgKiBzd2l0Y2ggdG8gZm9saW8ncyBtZW1jZyBhcyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uIGNhbiBoYXBwZW4gYW5kXFxuK1xcdCAqIG5lZWRzIHRvIGNoYXJnZSB0byBpdC5cXG4rXFx0ICovXFxuK1xcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxuK1xcdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xcbitcXG4gXFx0aWYgKGlzX2Fub24pIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogVGhlIGNhbGxlciBkb2VzIG5vdCBuZWNlc3NhcmlseSBob2xkIGFuIG1tYXBfbG9jayB0aGF0IHdvdWxkXFxuQEAgLTQyNzYsNiArNDI4NCwxMCBAQCBzdGF0aWMgaW50IF9fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcXG4gXFx0aWYgKG1hcHBpbmcpXFxuIFxcdFxcdGlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTtcXG4gb3V0OlxcbitcXHQvKiByZXN0b3JlIHRvIGNhbGxlcidzIG9sZF9tZW1jZyAqL1xcbitcXHRzZXRfYWN0aXZlX21lbWNnKG9sZF9tZW1jZyk7XFxuK1xcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcXG4rb3V0X25vX21lbWNnOlxcbiBcXHR4YXNfZGVzdHJveShcXHUwMDI2eGFzKTtcXG4gXFx0aWYgKGlzX3BtZF9vcmRlcihvbGRfb3JkZXIpKVxcbiBcXHRcXHRjb3VudF92bV9ldmVudCghcmV0ID8gVEhQX1NQTElUX1BBR0UgOiBUSFBfU1BMSVRfUEFHRV9GQUlMRUQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjoxOC40ODgyNTg5MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NzY0MjIyNjg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiTUVNQ0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmb2xpb19zcGxpdFwiLFxuICAgIFwiX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlclwiLFxuICAgIFwieGFzX3NwbGl0X2FsbG9jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8ncyBtZW1vcnkgY2dyb3VwIGR1cmluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgaHVnZSBwYWdlIHNwbGl0dGluZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTA4ZGYxMWQ2M2M2Mzk5MmI3NjljMzg2ZmZkMTgzNDU0MTZiMmEwZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MDI6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9saWIveGFycmF5LmMgYi9saWIveGFycmF5LmNcbmluZGV4IDlhOGI0OTE2NTQwY2YuLmJmZTdiZWY4MGYzNGUgMTAwNjQ0XG4tLS0gYS9saWIveGFycmF5LmNcbisrKyBiL2xpYi94YXJyYXkuY1xuQEAgLTEwNTMsNiArMTA1Myw5IEBAIHZvaWQgeGFzX3NwbGl0X2FsbG9jKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB2b2lkICplbnRyeSwgdW5zaWduZWQgaW50IG9yZGVyLFxuIFx0aWYgKHhhcy1cdTAwM2V4YV9zaGlmdCArIFhBX0NIVU5LX1NISUZUIFx1MDAzZSBvcmRlcilcbiBcdFx0cmV0dXJuO1xuIFxuK1x0aWYgKHhhcy1cdTAwM2V4YS1cdTAwM2V4YV9mbGFncyBcdTAwMjYgWEFfRkxBR1NfQUNDT1VOVClcbitcdFx0Z2ZwIHw9IF9fR0ZQX0FDQ09VTlQ7XG4rXG4gXHRkbyB7XG4gXHRcdHN0cnVjdCB4YV9ub2RlICpub2RlO1xuIFxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXG5pbmRleCAyMWM5MmVlNDhlNDY5Li44MDRiOGY2YWE1NTcwIDEwMDY0NFxuLS0tIGEvbW0vaHVnZV9tZW1vcnkuY1xuKysrIGIvbW0vaHVnZV9tZW1vcnkuY1xuQEAgLTQxMDYsMzQgKzQxMDYsNDIgQEAgc3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4gXHRYQV9TVEFURSh4YXMsIFx1MDAyNmZvbGlvLVx1MDAzZW1hcHBpbmctXHUwMDNlaV9wYWdlcywgZm9saW8tXHUwMDNlaW5kZXgpO1xuIFx0c3RydWN0IGZvbGlvICplbmRfZm9saW8gPSBmb2xpb19uZXh0KGZvbGlvKTtcbiBcdGJvb2wgaXNfYW5vbiA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbyk7XG4rXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csICpvbGRfbWVtY2c7XG4gXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IE5VTEw7XG4gXHRzdHJ1Y3QgYW5vbl92bWEgKmFub25fdm1hID0gTlVMTDtcbiBcdGludCBvbGRfb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XG4gXHRzdHJ1Y3QgZm9saW8gKm5ld19mb2xpbywgKm5leHQ7XG4gXHRpbnQgbnJfc2htZW1fZHJvcHBlZCA9IDA7XG4gXHRlbnVtIHR0dV9mbGFncyB0dHVfZmxhZ3MgPSAwO1xuLVx0aW50IHJldDtcbiBcdHBnb2ZmX3QgZW5kID0gMDtcbitcdGludCByZXQ7XG4gXG4gXHRWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbG9ja2VkKGZvbGlvKSwgZm9saW8pO1xuIFx0Vk1fV0FSTl9PTl9PTkNFX0ZPTElPKCFmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSwgZm9saW8pO1xuIFxuIFx0aWYgKGZvbGlvICE9IHBhZ2VfZm9saW8oc3BsaXRfYXQpIHx8IGZvbGlvICE9IHBhZ2VfZm9saW8obG9ja19hdCkpIHtcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4rXHRcdGdvdG8gb3V0X25vX21lbWNnO1xuIFx0fVxuIFxuIFx0aWYgKG5ld19vcmRlciBcdTAwM2U9IG9sZF9vcmRlcikge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfbm9fbWVtY2c7XG4gXHR9XG4gXG4gXHRyZXQgPSBmb2xpb19jaGVja19zcGxpdHRhYmxlKGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X3R5cGUpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRWTV9XQVJOX09OQ0UocmV0ID09IC1FSU5WQUwsIFwiVHJpZWQgdG8gc3BsaXQgYW4gdW5zcGxpdHRhYmxlIGZvbGlvXCIpO1xuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfbm9fbWVtY2c7XG4gXHR9XG4gXG4rXHQvKlxuK1x0ICogc3dpdGNoIHRvIGZvbGlvJ3MgbWVtY2cgYXMgeGFycmF5IG5vZGUgYWxsb2NhdGlvbiBjYW4gaGFwcGVuIGFuZFxuK1x0ICogbmVlZHMgdG8gY2hhcmdlIHRvIGl0LlxuK1x0ICovXG4rXHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW8oZm9saW8pO1xuK1x0b2xkX21lbWNnID0gc2V0X2FjdGl2ZV9tZW1jZyhtZW1jZyk7XG4rXG4gXHRpZiAoaXNfYW5vbikge1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgY2FsbGVyIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGhvbGQgYW4gbW1hcF9sb2NrIHRoYXQgd291bGRcbkBAIC00Mjc2LDYgKzQyODQsMTAgQEAgc3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4gXHRpZiAobWFwcGluZylcbiBcdFx0aV9tbWFwX3VubG9ja19yZWFkKG1hcHBpbmcpO1xuIG91dDpcbitcdC8qIHJlc3RvcmUgdG8gY2FsbGVyJ3Mgb2xkX21lbWNnICovXG4rXHRzZXRfYWN0aXZlX21lbWNnKG9sZF9tZW1jZyk7XG4rXHRtZW1fY2dyb3VwX3B1dChtZW1jZyk7XG4rb3V0X25vX21lbWNnOlxuIFx0eGFzX2Rlc3Ryb3koXHUwMDI2eGFzKTtcbiBcdGlmIChpc19wbWRfb3JkZXIob2xkX29yZGVyKSlcbiBcdFx0Y291bnRfdm1fZXZlbnQoIXJldCA/IFRIUF9TUExJVF9QQUdFIDogVEhQX1NQTElUX1BBR0VfRkFJTEVEKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjE4LjQ4ODI2MDUzM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NTM3ODcyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgYW5kIEZ1enppbmcgYSBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGFjdHVhbGx5IGRvaW5nIGFueXRoaW5nIHdlIHNob3VsZCBiZSBjb25jZXJuZWQgYWJvdXQsIGFuZCB3aGV0aGVyIGl0J3Mgd29ydGggdGhlIGVmZm9ydCBvZiB0YXJnZXRpbmcgd2l0aCBmdXp6aW5nLiBJdCB0b3VjaGVzIGBsaWIveGFycmF5LmNgIGFuZCBgbW0vaHVnZV9tZW1vcnkuY2AsIHdoaWNoIGFsd2F5cyBjYXRjaGVzIG15IGF0dGVudGlvbi5cblxuSW4gYGxpYi94YXJyYXkuY2AsIHRoZSBwYXRjaCBtb2RpZmllcyBgeGFzX3NwbGl0X2FsbG9jYC4gSXQncyBjb25kaXRpb25hbGx5IGFkZGluZyBgX19HRlBfQUNDT1VOVGAgdG8gdGhlIGBnZnBgIGZsYWcsIGJ1dCBvbmx5IGlmIGEgc3BlY2lmaWMgZmxhZywgYFhBX0ZMQUdTX0FDQ09VTlRgLCBpcyBzZXQgaW4gdGhlIHhhcnJheS4gVGhhdOKAmXMgaW50ZXJlc3RpbmcsIGFzIGl0IGlzIHJlbGF0ZWQgdG8gbWVtb3J5IGFjY291bnRpbmcuXG5cblRoZW4sIGBtbS9odWdlX21lbW9yeS5jYCBoYXMgYSBjaGFuZ2UgdG8gYF9fZm9saW9fc3BsaXRgLiBJdCBhcHBlYXJzIHRvIGJlIHN3aXRjaGluZyB0byB0aGUgZm9saW8ncyBtZW1jZyBiZWZvcmUgYXR0ZW1wdGluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9ucyBkdXJpbmcgYSBzcGxpdC4gVGhpcyAqZGVmaW5pdGVseSogc291bmRzIGxpa2UgYSBwb3RlbnRpYWwgcG9pbnQgb2YgY29udGVudGlvbiwgYW5kIGl0IGlzIGEgY29tbW9uIGFyZWEgdG8gY3JlYXRlIGlzc3Vlcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYm90aCBhcmUgcmVhY2hhYmxlLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIGBfX2ZvbGlvX3NwbGl0YCBpcyBkZWZpbml0ZWx5IGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSB1c2VmdWwgaW4gZnV6emluZy4gVGhlbiBgeGFzX3NwbGl0X2FsbG9jYCBsb29rcyBsaWtlIGl0IGlzIHJlYWNoYWJsZSBhcyB3ZWxsLlxuXG5Ob3csIGxldCdzIHNlZSBob3cgdGhpcyBpcyBjb25maWd1cmVkLiBUaGUgY29kZSBpbiBgbW0vaHVnZV9tZW1vcnkuY2Agb25seSBnZXRzIGNvbXBpbGVkIGlmIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGVuYWJsZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhhdCdzIHRydWUsIGJ1dCBpdCBsb29rcyBsaWtlIHdlJ3JlIGluIGJ1c2luZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQ1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MjMuMDQyMDUxNDM3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTExMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh1Z2VfbWVtb3J5Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9MTAwPW9iai0kKENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OKSArPSBtaWdyYXRlX2RldmljZS5vXFxubW0vTWFrZWZpbGU6MTAxOm9iai0kKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgKz0gaHVnZV9tZW1vcnkubyBraHVnZXBhZ2VkLm9cXG5tbS9NYWtlZmlsZS0xMDItb2JqLSQoQ09ORklHX1BBR0VfQ09VTlRFUikgKz0gcGFnZV9jb3VudGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MjMuMDg1MTc5NzU1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODE5NzYzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIGl0J3MgY2xlYXIgdGhhdCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBkZWZpbml0ZWx5IGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBtbS9odWdlX21lbW9yeS5jYCBtb2R1bGUuIFRoYXQgb25lJ3Mgc3RyYWlnaHRmb3J3YXJkLiBOb3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW9gIGFuZCBgc2V0X2FjdGl2ZV9tZW1jZ2AuIFRob3NlIGZ1bmN0aW9ucywgYmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgaGF2ZSBhIHN0cm9uZyBhc3NvY2lhdGlvbiB3aXRoIG1lbW9yeSBjb250cm9sIGdyb3Vwcywgb3IgYENPTkZJR19NRU1DR2AuIFRoZSBkZXBlbmRlbmN5IGZlZWxzIHZlcnkgbGlrZWx5LiBJJ2QgYmV0dGVyIGNvbmZpcm0gdGhhdCBgQ09ORklHX01FTUNHYCBpcywgaW4gZmFjdCwgYWxzbyBhIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIHBpY3R1cmUgYmVmb3JlIHByb2NlZWRpbmcgZnVydGhlciB3aXRoIGFueSBjaGFuZ2VzIG9yIGFuYWx5c2lzLiBJdCdzIHRpbWUgdG8gZGlnIGRlZXBlciBvbiB0aGlzIHNwZWNpZmljIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTE5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MjYuNDMzMzgwMDEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjM0MDY5MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnVmZmVyLmM9ODMyPXN0cnVjdCBidWZmZXJfaGVhZCAqZm9saW9fYWxsb2NfYnVmZmVycyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBsb25nIHNpemUsXFxuLS1cXG5mcy9idWZmZXIuYy04MzgtXFxuZnMvYnVmZmVyLmM6ODM5OlxcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxuZnMvYnVmZmVyLmMtODQwLVxcdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9NzUzPXN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbWVtX2Nncm91cF9mcm9tX2N1cnJlbnQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtNzU0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjc1NTpzdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC03NTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xMjEwPXN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9tZW1fY2dyb3VwX2Zyb21fY3VycmVudCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTIxNC1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxMjE1OnN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xMjE2LXtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9NDEwMj1zdGF0aWMgaW50IF9fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDE0MS1cXHQgKi9cXG5tbS9odWdlX21lbW9yeS5jOjQxNDI6XFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcXG5tbS9odWdlX21lbW9yeS5jLTQxNDMtXFx0b2xkX21lbWNnID0gc2V0X2FjdGl2ZV9tZW1jZyhtZW1jZyk7XFxuLS1cXG5tbS9saXN0X2xydS5jPTYzMT1pbnQgZm9saW9fbWVtY2dfbGlzdF9scnVfYWxsb2Moc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IGxpc3RfbHJ1ICpscnUsXFxuLS1cXG5tbS9saXN0X2xydS5jLTY0OC1cXHQvKiBBbGxvY2F0aW9uIG1heSBibG9jaywgcGluIHRoZSBtZW1jZyAqL1xcbm1tL2xpc3RfbHJ1LmM6NjQ5OlxcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxubW0vbGlzdF9scnUuYy02NTAtXFx0cmVzID0gX19tZW1jZ19saXN0X2xydV9hbGxvYyhtZW1jZywgbHJ1LCBnZnApO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTMzND1zdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqZ2V0X21lbV9jZ3JvdXBfY3NzX2Zyb21fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0zNDAtXFxubW0vbWVtY29udHJvbC5jOjM0MTpcXHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW8oZm9saW8pO1xcbm1tL21lbWNvbnRyb2wuYy0zNDItXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTE5OT1zdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9jdXJyZW50KHZvaWQpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTIxNy0vKipcXG5tbS9tZW1jb250cm9sLmM6MTIxODogKiBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvIC0gT2J0YWluIGEgcmVmZXJlbmNlIG9uIGEgZ2l2ZW4gZm9saW8ncyBtZW1jZy5cXG5tbS9tZW1jb250cm9sLmMtMTIxOS0gKiBAZm9saW86IGZvbGlvIGZyb20gd2hpY2ggbWVtY2cgc2hvdWxkIGJlIGV4dHJhY3RlZC5cXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xMjIyLSAqL1xcbm1tL21lbWNvbnRyb2wuYzoxMjIzOnN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vbWVtY29udHJvbC5jLTEyMjQte1xcbi0tXFxubW0vbWlncmF0ZS5jPTI3NTg9aW50IG1pZ3JhdGVfbWlzcGxhY2VkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBub2RlKVxcbi0tXFxubW0vbWlncmF0ZS5jLTI3NjMtXFx0TElTVF9IRUFEKG1pZ3JhdGVwYWdlcyk7XFxubW0vbWlncmF0ZS5jOjI3NjQ6XFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxubW0vbWlncmF0ZS5jLTI3NjUtXFx0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTQyNTU9Ym9vbCBscnVfZ2VuX2xvb2tfYXJvdW5kKHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdywgdW5zaWduZWQgaW50IG5yKVxcbi0tXFxubW0vdm1zY2FuLmMtNDMwNy1cXG5tbS92bXNjYW4uYzo0MzA4OlxcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxubW0vdm1zY2FuLmMtNDMwOS1cXHRscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgcGdkYXQpO1xcbi0tXFxubW0vd29ya2luZ3NldC5jPTU0OD12b2lkIHdvcmtpbmdzZXRfcmVmYXVsdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB2b2lkICpzaGFkb3cpXFxuLS1cXG5tbS93b3JraW5nc2V0LmMtNTcyLVxcdG5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xcbm1tL3dvcmtpbmdzZXQuYzo1NzM6XFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcXG5tbS93b3JraW5nc2V0LmMtNTc0LVxcdGxydXZlYyA9IG1lbV9jZ3JvdXBfbHJ1dmVjKG1lbWNnLCBmb2xpb19wZ2RhdChmb2xpbykpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjoyOC4wNTY3OTI5NTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDUwNjQzNzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRm9saW8gU3BsaXQgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIGNoYW5naW5nIGBfX2ZvbGlvX3NwbGl0YCwgc3BlY2lmaWNhbGx5IHRvIHV0aWxpemUgYGdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW9gLiBUaGF0J3MgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgbmV3IGNvZGUgcGF0aCBpcyBhY3R1YWxseSBhY3RpdmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkRvIHdlIHJlcXVpcmUgYENPTkZJR19NRU1DR2AgdG8gbWFrZSB0aGlzIGNoYW5nZSBtZWFuaW5nZnVsP1wiXG5cbkxldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvYCBpbiBgaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhgLCBpdCdzIGEgc3RhdGljIGlubGluZSwgYW5kIGNydWNpYWxseSwgcmV0dXJucyBOVUxMIGlmIGBDT05GSUdfTUVNQ0dgIGlzbid0IGVuYWJsZWQuIEJpbmdvLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTUVNQ0dgIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgaGVyZSwgb3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gd2lsbCBqdXN0IGFsd2F5cyByZXR1cm4gbnVsbCBhbmQgdGhlIGNoYW5nZXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aG8gdGhlIGNhbGxlcnMgb2YgYF9fZm9saW9fc3BsaXRgIGFyZSB0byBnZXQgYSBiZXR0ZXIgY29udGV4dCBvbiB0aGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjozMi4xMDc0Mzk3MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MjMzOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19mb2xpb19zcGxpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz0zOTI2PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQwODEtLyoqXFxubW0vaHVnZV9tZW1vcnkuYzo0MDgyOiAqIF9fZm9saW9fc3BsaXQoKSAtIHNwbGl0IGEgZm9saW8gYXQgQHNwbGl0X2F0IHRvIGEgQG5ld19vcmRlciBmb2xpb1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDA4My0gKiBAZm9saW86IGZvbGlvIHRvIHNwbGl0XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQxMDEtICovXFxubW0vaHVnZV9tZW1vcnkuYzo0MTAyOnN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDEwMy1cXHRcXHRzdHJ1Y3QgcGFnZSAqc3BsaXRfYXQsIHN0cnVjdCBwYWdlICpsb2NrX2F0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00Mzg3PWludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00MzkxLVxcbm1tL2h1Z2VfbWVtb3J5LmM6NDM5MjpcXHRyZXR1cm4gX19mb2xpb19zcGxpdChmb2xpbywgbmV3X29yZGVyLCBcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UsIHBhZ2UsIGxpc3QsXFxubW0vaHVnZV9tZW1vcnkuYy00MzkzLVxcdFxcdFxcdCAgICAgU1BMSVRfVFlQRV9VTklGT1JNKTtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9NDQyMD1pbnQgZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQyMi17XFxubW0vaHVnZV9tZW1vcnkuYzo0NDIzOlxcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X2F0LCBcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UsIGxpc3QsXFxubW0vaHVnZV9tZW1vcnkuYy00NDI0LVxcdFxcdFxcdCAgICAgU1BMSVRfVFlQRV9OT05fVU5JRk9STSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjMyLjE1NTI2OTIwN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTk4ODY2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRm9saW8gU3BsaXR0aW5nIEFQSSBVc2FnZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgbWluZCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgYF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgIGFuZCBgZm9saW9fc3BsaXRgIGZ1bmN0aW9ucy4gVGhlIGZhY3QgdGhhdCBib3RoIG9mIHRoZXNlIGZ1bmN0aW9ucywgZXNwZWNpYWxseSBgZm9saW9fc3BsaXRgLCBkaXJlY3RseSBjYWxsIGBfX2ZvbGlvX3NwbGl0YCBpcyBpbnRlcmVzdGluZy4gSSdtIG5vdGluZyB0aGF0IGBmb2xpb19zcGxpdGAgaXMgYW4gQVBJIGZ1bmN0aW9uLCBtZWFuaW5nIGl0J3MgbGlrZWx5IGEgcHVibGljIGVudHJ5IHBvaW50LCBhdCBsZWFzdCBpbnRlcm5hbGx5LCBmb3IgbWFuaXB1bGF0aW5nIGZvbGlvcy4gVGhpcyBzdWdnZXN0cyBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIG9yIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWd5LiBUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBpZGVudGlmeSBhbGwgdGhlIHBvdGVudGlhbCBjYWxsZXJzIG9mIGBmb2xpb19zcGxpdGAuIFVuZGVyc3RhbmRpbmcgd2hlcmUgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IGluc2lnaHQgaW50byBpdHMgb3ZlcmFsbCByb2xlIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQncyBkaWcgaW50byB0aGF0IGNhbGwgZ3JhcGggYW5kIHNlZSB3aG8ncyBpbnZva2luZyB0aGlzIEFQSS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxOCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjM1LjIxNTE1Nzg3MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MTkyMDU1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19zcGxpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTM0OD1zdGF0aWMgdm1fZmF1bHRfdCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzNTktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTM2MDpzdGF0aWMgdm9pZCBkcm1fcGFnZW1hcF9mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKm9yaWdfZm9saW8sIHN0cnVjdCBmb2xpbyAqbmV3X2ZvbGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzNjEte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTM3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wYWdlbWFwX29wcyBkcm1fcGFnZW1hcF9wYWdlbWFwX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzNzQtXFx0Lm1pZ3JhdGVfdG9fcmFtID0gZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19yYW0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTM3NTpcXHQuZm9saW9fc3BsaXQgPSBkcm1fcGFnZW1hcF9mb2xpb19zcGxpdCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzc2LX07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz0xODM9c3RhdGljIHZtX2ZhdWx0X3Qgbm91dmVhdV9kbWVtX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjc5LVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI4MDpzdGF0aWMgdm9pZCBub3V2ZWF1X2RtZW1fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpoZWFkLCBzdHJ1Y3QgZm9saW8gKnRhaWwpXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjgxLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTI4OT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wYWdlbWFwX29wcyBub3V2ZWF1X2RtZW1fcGFnZW1hcF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yOTEtXFx0Lm1pZ3JhdGVfdG9fcmFtXFx0XFx0PSBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0sXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6MjkyOlxcdC5mb2xpb19zcGxpdFxcdFxcdD0gbm91dmVhdV9kbWVtX2ZvbGlvX3NwbGl0LFxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTI5My19O1xcbi0tXFxuZnMvZXJvZnMvZGF0YS5jPTI1OT12b2lkIGVyb2ZzX29ubGluZWZvbGlvX2luaXQoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmZzL2Vyb2ZzL2RhdGEuYy0yNjgtXFxuZnMvZXJvZnMvZGF0YS5jOjI2OTp2b2lkIGVyb2ZzX29ubGluZWZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuZnMvZXJvZnMvZGF0YS5jLTI3MC17XFxuLS1cXG5mcy9lcm9mcy9maWxlaW8uYz04OT1zdGF0aWMgaW50IGVyb2ZzX2ZpbGVpb19zY2FuX2ZvbGlvKHN0cnVjdCBlcm9mc19maWxlaW8gKmlvLFxcbi0tXFxuZnMvZXJvZnMvZmlsZWlvLmMtMTQ3LVxcdFxcdFxcdGlmICghYXR0YWNoZWQrKylcXG5mcy9lcm9mcy9maWxlaW8uYzoxNDg6XFx0XFx0XFx0XFx0ZXJvZnNfb25saW5lZm9saW9fc3BsaXQoZm9saW8pO1xcbmZzL2Vyb2ZzL2ZpbGVpby5jLTE0OS1cXHRcXHRcXHRpby1cXHUwMDNlZGV2Lm1fcGEgKz0gbGVuO1xcbi0tXFxuZnMvZXJvZnMvaW50ZXJuYWwuaD00MTU9dm9pZCBlcm9mc19vbmxpbmVmb2xpb19pbml0KHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmZzL2Vyb2ZzL2ludGVybmFsLmg6NDE2OnZvaWQgZXJvZnNfb25saW5lZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuZnMvZXJvZnMvaW50ZXJuYWwuaC00MTctdm9pZCBlcm9mc19vbmxpbmVmb2xpb19lbmQoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IGVyciwgYm9vbCBkaXJ0eSk7XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTEwMDU9c3RhdGljIGludCB6X2Vyb2ZzX3NjYW5fZm9saW8oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTEwNzUtXFxuZnMvZXJvZnMvemRhdGEuYzoxMDc2OlxcdFxcdFxcdGVyb2ZzX29ubGluZWZvbGlvX3NwbGl0KGZvbGlvKTtcXG5mcy9lcm9mcy96ZGF0YS5jLTEwNzctXFx0XFx0XFx0aWYgKGYtXFx1MDAzZXBjbC1cXHUwMDNlbGVuZ3RoIFxcdTAwM2Mgb2Zmc2V0ICsgZW5kIC0gbWFwLVxcdTAwM2VtX2xhKSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD00MDM9aW50IF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA0LVxcdFxcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjQwNTppbnQgZm9saW9fc3BsaXRfdW5tYXBwZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcik7XFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA2LXVuc2lnbmVkIGludCBtaW5fb3JkZXJfZm9yX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbi0tXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDA4PWludCBmb2xpb19jaGVja19zcGxpdHRhYmxlKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA5LVxcdFxcdFxcdCAgIGVudW0gc3BsaXRfdHlwZSBzcGxpdF90eXBlKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MTA6aW50IGZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsIHN0cnVjdCBwYWdlICpwYWdlLFxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQxMS1cXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTY2OT1zdGF0aWMgaW5saW5lIGludCBzcGxpdF9mb2xpb190b19saXN0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC02NzQtXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6Njc1OnN0YXRpYyBpbmxpbmUgaW50IGZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNjc2LVxcdFxcdHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTAyMj12b2lkIHNwbGl0X3BhZ2VfbWVtY2coc3RydWN0IHBhZ2UgKmZpcnN0LCB1bnNpZ25lZCBvcmRlcik7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTAyMzp2b2lkIGZvbGlvX3NwbGl0X21lbWNnX3JlZnMoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgb2xkX29yZGVyLFxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTEwMjQtXFx0XFx0dW5zaWduZWQgbmV3X29yZGVyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE0NTM9c3RhdGljIGlubGluZSB2b2lkIHNwbGl0X3BhZ2VfbWVtY2coc3RydWN0IHBhZ2UgKmZpcnN0LCB1bnNpZ25lZCBvcmRlcilcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE0NTYtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTQ1NzpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE0NTgtXFx0XFx0dW5zaWduZWQgb2xkX29yZGVyLCB1bnNpZ25lZCBuZXdfb3JkZXIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmg9Nzc9c3RydWN0IGRldl9wYWdlbWFwX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmgtMTA3LVxcdCAqL1xcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaDoxMDg6XFx0dm9pZCAoKmZvbGlvX3NwbGl0KShzdHJ1Y3QgZm9saW8gKmhlYWQsIHN0cnVjdCBmb2xpbyAqdGFpbCk7XFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oLTEwOS19O1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oPTI0Nz1zdGF0aWMgaW5saW5lIHZvaWQgem9uZV9kZXZpY2VfcHJpdmF0ZV9zcGxpdF9jYihzdHJ1Y3QgZm9saW8gKm9yaWdpbmFsX2ZvbGlvLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oLTI1MC1cXHRpZiAoZm9saW9faXNfZGV2aWNlX3ByaXZhdGUob3JpZ2luYWxfZm9saW8pKSB7XFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oOjI1MTpcXHRcXHRpZiAoIW9yaWdpbmFsX2ZvbGlvLVxcdTAwM2VwZ21hcC1cXHUwMDNlb3BzLVxcdTAwM2Vmb2xpb19zcGxpdCkge1xcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaC0yNTItXFx0XFx0XFx0aWYgKG5ld19mb2xpbykge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oLTI1Ny1cXHRcXHR9IGVsc2Uge1xcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaDoyNTg6XFx0XFx0XFx0b3JpZ2luYWxfZm9saW8tXFx1MDAzZXBnbWFwLVxcdTAwM2VvcHMtXFx1MDAzZWZvbGlvX3NwbGl0KG9yaWdpbmFsX2ZvbGlvLFxcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaC0yNTktXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IG5ld19mb2xpbyk7XFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg9NTA9VFJBQ0VfRVZFTlQobW1fbWlncmF0ZV9wYWdlcyxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC01My1cXHRcXHQgdW5zaWduZWQgbG9uZyB0aHBfc3VjY2VlZGVkLCB1bnNpZ25lZCBsb25nIHRocF9mYWlsZWQsXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oOjU0OlxcdFxcdCB1bnNpZ25lZCBsb25nIHRocF9zcGxpdCwgdW5zaWduZWQgbG9uZyBsYXJnZV9mb2xpb19zcGxpdCxcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtNTUtXFx0XFx0IGVudW0gbWlncmF0ZV9tb2RlIG1vZGUsIGVudW0gbWlncmF0ZV9yZWFzb24gcmVhc29uKSxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC01Ny1cXHRUUF9BUkdTKHN1Y2NlZWRlZCwgZmFpbGVkLCB0aHBfc3VjY2VlZGVkLCB0aHBfZmFpbGVkLFxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaDo1ODpcXHRcXHR0aHBfc3BsaXQsIGxhcmdlX2ZvbGlvX3NwbGl0LCBtb2RlLCByZWFzb24pLFxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC01OS1cXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC02NS1cXHRcXHRfX2ZpZWxkKFxcdHVuc2lnbmVkIGxvbmcsXFx0XFx0dGhwX3NwbGl0KVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaDo2NjpcXHRcXHRfX2ZpZWxkKFxcdHVuc2lnbmVkIGxvbmcsXFx0XFx0bGFyZ2VfZm9saW9fc3BsaXQpXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTY3LVxcdFxcdF9fZmllbGQoXFx0ZW51bSBtaWdyYXRlX21vZGUsXFx0bW9kZSlcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC03Ni1cXHRcXHRfX2VudHJ5LVxcdTAwM2V0aHBfc3BsaXRcXHRcXHRcXHQ9IHRocF9zcGxpdDtcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg6Nzc6XFx0XFx0X19lbnRyeS1cXHUwMDNlbGFyZ2VfZm9saW9fc3BsaXRcXHQ9IGxhcmdlX2ZvbGlvX3NwbGl0O1xcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC03OC1cXHRcXHRfX2VudHJ5LVxcdTAwM2Vtb2RlXFx0XFx0XFx0XFx0PSBtb2RlO1xcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTg3LVxcdFxcdF9fZW50cnktXFx1MDAzZXRocF9zcGxpdCxcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg6ODg6XFx0XFx0X19lbnRyeS1cXHUwMDNlbGFyZ2VfZm9saW9fc3BsaXQsXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTg5LVxcdFxcdF9fcHJpbnRfc3ltYm9saWMoX19lbnRyeS1cXHUwMDNlbW9kZSwgTUlHUkFURV9NT0RFKSxcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTE3NTg9c3RhdGljIHZtX2ZhdWx0X3QgZG1pcnJvcl9kZXZtZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xODM2LVxcbmxpYi90ZXN0X2htbS5jOjE4Mzc6c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZtZW1fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpoZWFkLCBzdHJ1Y3QgZm9saW8gKnRhaWwpXFxubGliL3Rlc3RfaG1tLmMtMTgzOC17XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xODcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BhZ2VtYXBfb3BzIGRtaXJyb3JfZGV2bWVtX29wcyA9IHtcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE4NzMtXFx0Lm1pZ3JhdGVfdG9fcmFtXFx0PSBkbWlycm9yX2Rldm1lbV9mYXVsdCxcXG5saWIvdGVzdF9obW0uYzoxODc0OlxcdC5mb2xpb19zcGxpdFxcdD0gZG1pcnJvcl9kZXZtZW1fZm9saW9fc3BsaXQsXFxubGliL3Rlc3RfaG1tLmMtMTg3NS19O1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zNzk5PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zODQxLVxcbm1tL2h1Z2VfbWVtb3J5LmM6Mzg0MjpcXHRcXHRmb2xpb19zcGxpdF9tZW1jZ19yZWZzKGZvbGlvLCBvbGRfb3JkZXIsIHNwbGl0X29yZGVyKTtcXG5tbS9odWdlX21lbW9yeS5jLTM4NDMtXFx0XFx0c3BsaXRfcGFnZV9vd25lcihcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UsIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zOTI2PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQwODEtLyoqXFxubW0vaHVnZV9tZW1vcnkuYzo0MDgyOiAqIF9fZm9saW9fc3BsaXQoKSAtIHNwbGl0IGEgZm9saW8gYXQgQHNwbGl0X2F0IHRvIGEgQG5ld19vcmRlciBmb2xpb1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDA4My0gKiBAZm9saW86IGZvbGlvIHRvIHNwbGl0XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQxMDEtICovXFxubW0vaHVnZV9tZW1vcnkuYzo0MTAyOnN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDEwMy1cXHRcXHRzdHJ1Y3QgcGFnZSAqc3BsaXRfYXQsIHN0cnVjdCBwYWdlICpsb2NrX2F0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00Mjk4LS8qKlxcbm1tL2h1Z2VfbWVtb3J5LmM6NDI5OTogKiBmb2xpb19zcGxpdF91bm1hcHBlZCgpIC0gc3BsaXQgYSBsYXJnZSBhbm9uIGZvbGlvIHRoYXQgaXMgYWxyZWFkeSB1bm1hcHBlZFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDMwMC0gKiBAZm9saW86IGZvbGlvIHRvIHNwbGl0XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzMTktICovXFxubW0vaHVnZV9tZW1vcnkuYzo0MzIwOmludCBmb2xpb19zcGxpdF91bm1hcHBlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyKVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDMyMS17XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQzODc9aW50IF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzOTEtXFxubW0vaHVnZV9tZW1vcnkuYzo0MzkyOlxcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIFxcdTAwMjZmb2xpby1cXHUwMDNlcGFnZSwgcGFnZSwgbGlzdCxcXG5tbS9odWdlX21lbW9yeS5jLTQzOTMtXFx0XFx0XFx0ICAgICBTUExJVF9UWVBFX1VOSUZPUk0pO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00Mzk2LS8qKlxcbm1tL2h1Z2VfbWVtb3J5LmM6NDM5NzogKiBmb2xpb19zcGxpdCgpIC0gc3BsaXQgYSBmb2xpbyBhdCBAc3BsaXRfYXQgdG8gYSBAbmV3X29yZGVyIGZvbGlvXFxubW0vaHVnZV9tZW1vcnkuYy00Mzk4LSAqIEBmb2xpbzogZm9saW8gdG8gc3BsaXRcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQxOS0gKi9cXG5tbS9odWdlX21lbW9yeS5jOjQ0MjA6aW50IGZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxubW0vaHVnZV9tZW1vcnkuYy00NDIxLVxcdFxcdHN0cnVjdCBwYWdlICpzcGxpdF9hdCwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdClcXG5tbS9odWdlX21lbW9yeS5jLTQ0MjIte1xcbm1tL2h1Z2VfbWVtb3J5LmM6NDQyMzpcXHRyZXR1cm4gX19mb2xpb19zcGxpdChmb2xpbywgbmV3X29yZGVyLCBzcGxpdF9hdCwgXFx1MDAyNmZvbGlvLVxcdTAwM2VwYWdlLCBsaXN0LFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQyNC1cXHRcXHRcXHQgICAgIFNQTElUX1RZUEVfTk9OX1VOSUZPUk0pO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00NzQwPXN0YXRpYyBpbnQgc3BsaXRfaHVnZV9wYWdlc19waWQoaW50IHBpZCwgdW5zaWduZWQgbG9uZyB2YWRkcl9zdGFydCxcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDgzMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBpbl9mb2xpb19vZmZzZXQpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6NDgzMzpcXHRcXHRcXHRpZiAoIWZvbGlvX3NwbGl0KGZvbGlvLCB0YXJnZXRfb3JkZXIsIHNwbGl0X2F0LCBOVUxMKSlcXG5tbS9odWdlX21lbW9yeS5jLTQ4MzQtXFx0XFx0XFx0XFx0c3BsaXQrKztcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9NDg1Nz1zdGF0aWMgaW50IHNwbGl0X2h1Z2VfcGFnZXNfaW5fZmlsZShjb25zdCBjaGFyICpmaWxlX3BhdGgsIHBnb2ZmX3Qgb2ZmX3N0YXJ0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00OTA4LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGluX2ZvbGlvX29mZnNldCk7XFxubW0vaHVnZV9tZW1vcnkuYzo0OTA5OlxcdFxcdFxcdGlmICghZm9saW9fc3BsaXQoZm9saW8sIHRhcmdldF9vcmRlciwgc3BsaXRfYXQsIE5VTEwpKVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDkxMC1cXHRcXHRcXHRcXHRzcGxpdCsrO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTM3MTc9dm9pZCBzcGxpdF9wYWdlX21lbWNnKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBvcmRlcilcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0zNzMwLVxcbm1tL21lbWNvbnRyb2wuYzozNzMxOnZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBvbGRfb3JkZXIsXFxubW0vbWVtY29udHJvbC5jLTM3MzItXFx0XFx0dW5zaWduZWQgbmV3X29yZGVyKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz05MTI9c3RhdGljIGludCBtaWdyYXRlX3ZtYV9zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTkyNi1cXHRzcGxpdF9odWdlX3BtZF9hZGRyZXNzKG1pZ3JhdGUtXFx1MDAzZXZtYSwgYWRkciwgdHJ1ZSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYzo5Mjc6XFx0cmV0ID0gZm9saW9fc3BsaXRfdW5tYXBwZWQoZm9saW8sIDApO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtOTI4LVxcdGlmIChyZXQpXFxuLS1cXG5tbS90cnVuY2F0ZS5jPTE3MD1pbnQgdHJ1bmNhdGVfaW5vZGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS90cnVuY2F0ZS5jLTE3OS1cXG5tbS90cnVuY2F0ZS5jOjE4MDpzdGF0aWMgaW50IGZvbGlvX3NwbGl0X29yX3VubWFwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBwYWdlICpzcGxpdF9hdCxcXG5tbS90cnVuY2F0ZS5jLTE4MS1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBtaW5fb3JkZXIpXFxuLS1cXG5tbS90cnVuY2F0ZS5jLTE4OC1cXG5tbS90cnVuY2F0ZS5jOjE4OTpcXHRyZXQgPSBmb2xpb19zcGxpdChmb2xpbywgbWluX29yZGVyLCBzcGxpdF9hdCwgTlVMTCk7XFxubW0vdHJ1bmNhdGUuYy0xOTAtXFxuLS1cXG5tbS90cnVuY2F0ZS5jPTIxNz1ib29sIHRydW5jYXRlX2lub2RlX3BhcnRpYWxfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kKVxcbi0tXFxubW0vdHJ1bmNhdGUuYy0yNTQtXFx0c3BsaXRfYXQgPSBmb2xpb19wYWdlKGZvbGlvLCBQQUdFX0FMSUdOX0RPV04ob2Zmc2V0KSAvIFBBR0VfU0laRSk7XFxubW0vdHJ1bmNhdGUuYzoyNTU6XFx0aWYgKCFmb2xpb19zcGxpdF9vcl91bm1hcChmb2xpbywgc3BsaXRfYXQsIG1pbl9vcmRlcikpIHtcXG5tbS90cnVuY2F0ZS5jLTI1Ni1cXHRcXHQvKlxcbi0tXFxubW0vdHJ1bmNhdGUuYy0yODEtXFx0XFx0ICAgIGZvbGlvMi1cXHUwMDNlbWFwcGluZyA9PSBmb2xpby1cXHUwMDNlbWFwcGluZylcXG5tbS90cnVuY2F0ZS5jOjI4MjpcXHRcXHRcXHRmb2xpb19zcGxpdF9vcl91bm1hcChmb2xpbzIsIHNwbGl0X2F0MiwgbWluX29yZGVyKTtcXG5tbS90cnVuY2F0ZS5jLTI4My1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy5naXRpZ25vcmU9Njc9cm1hcFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy5naXRpZ25vcmU6Njg6Zm9saW9fc3BsaXRfcmFjZV90ZXN0XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZT0xMDU9VEVTVF9HRU5fRklMRVMgKz0gcm1hcFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlOjEwNjpURVNUX0dFTl9GSUxFUyArPSBmb2xpb19zcGxpdF9yYWNlX3Rlc3RcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZS0xMDctXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9mb2xpb19zcGxpdF9yYWNlX3Rlc3QuYy02LSAqXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmM6NzogKiBJdCB0ZXN0cyB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBmb2xpb19zcGxpdCgpIGFuZCBmaWxlbWFwX2dldF9lbnRyeSgpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2ZvbGlvX3NwbGl0X3JhY2VfdGVzdC5jOjg6ICogd2hlcmUgdGhlIGhvbGUgcHVuY2hlcyBvbiBzaG1lbSBsZWFkIHRvIGZvbGlvX3NwbGl0KCkgYW5kIHJlYWRpbmcgdGhlIHNobWVtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmMtOS0gKiBsZWFkIHRvIGZpbGVtYXBfZ2V0X2VudHJ5KCkuXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaD00NDM9Q0FURUdPUlk9XFxcInRocFxcXCIgcnVuX3Rlc3QgLi90cmFuc2h1Z2Utc3RyZXNzIC1kIDIwXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2gtNDQ0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoOjQ0NTpDQVRFR09SWT1cXFwidGhwXFxcIiBydW5fdGVzdCAuL2ZvbGlvX3NwbGl0X3JhY2VfdGVzdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoLTQ0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MzcuMDU3MDg4MTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MDI5MjgyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXZlcyBpbnRvIHNvbWUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCByb3V0aW5lcyDigJMgc3BlY2lmaWNhbGx5LCBob3cgd2UgaGFuZGxlIG1lbW9yeSBkdXJpbmcgZmlsZSB0cnVuY2F0aW9uIGFuZCBodWdlIHBhZ2Ugc3BsaXR0aW5nLiBgZm9saW9fc3BsaXRgIGlzIHRyaWdnZXJlZCBieSBgdHJ1bmNhdGVfaW5vZGVfcGFydGlhbF9mb2xpb2AsIGFuZCB0aGF0J3MgYSBrZXkgcGFydCBvZiB0aGUgdHJ1bmNhdGlvbiBwcm9jZXNzLCBzbyB0aGF0J3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGZvY3VzLiBUaGVuIHRoZXJlJ3MgdGhlIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCBmYW1pbHkgb2YgZnVuY3Rpb25zOiB3ZSd2ZSBnb3QgdGhlIGludGVybmFsIGhlbHBlcnMgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIHB1YmxpY2x5IHZpc2libGUgYHNwbGl0X2h1Z2VfcGFnZWAg4oCTIHRoYXQncyBhIGNsZWFyIGluZGljYXRvciBvZiBjaGFuZ2VzIGltcGFjdGluZyBodWdlIHBhZ2UgbWFuYWdlbWVudCwgYSBjcml0aWNhbCBhcmVhIGZvciBwZXJmb3JtYW5jZS5cblxuR2l2ZW4gdGhpcyBjb250ZXh0LCBJJ20gY29uZmlkZW50IHRoYXQgdGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWxseSBzb3VuZCBhbmQgd29ydGggYSBnb29kIGZ1enppbmcgY2FtcGFpZ24uIE1lbW9yeSBtYW5hZ2VtZW50IGludGVyYWN0aW9ucyBhcmUgYWx3YXlzIGNvbXBsZXgsIGFuZCB0aGVzZSBmdW5jdGlvbnMgYXJlIGZvdW5kYXRpb25hbC4gV2UgbmVlZCB0byBzdHJlc3MtdGVzdCB0aGVtLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHRob3NlIGZpbGUgdHJ1bmNhdGlvbiBhbmQgaHVnZSBwYWdlIHNwbGl0dGluZyBvcGVyYXRpb25zIHRvIGZsdXNoIG91dCBhbnkgc3VidGxlIGlzc3Vlcy4gSSB3YW50IHRvIGNoZWNrIGB4YXNfc3BsaXRfYWxsb2NgIHdoaWxlIEknbSBhdCBpdCwgc2VlIGlmIHRoZXJlJ3MgYW55IHJlbGF0ZWQgY2hhbmdlcyB0aGVyZSB0aGF0IGNvdWxkIGludGVyYWN0IHdpdGggdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1NjksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6NDEuMDQ3Mzg0NDM5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgwNDA3ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhhc19zcGxpdF9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS94YXJyYXkucnN0PTQ5MD1lbnRyeSBjYW4gYmUgc3BsaXQgaW50byBlbnRyaWVzIG9jY3VweWluZyBzbWFsbGVyIHJhbmdlcyBieSBjYWxsaW5nXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS94YXJyYXkucnN0OjQ5MTp4YXNfc3BsaXRfYWxsb2MoKSB3aXRob3V0IHRoZSB4YV9sb2NrIGhlbGQsIGZvbGxvd2VkIGJ5IHRha2luZyB0aGUgbG9ja1xcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdC00OTItYW5kIGNhbGxpbmcgeGFzX3NwbGl0KCkgb3IgY2FsbGluZyB4YXNfdHJ5X3NwbGl0KCkgd2l0aCB4YV9sb2NrLiBUaGVcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3Q6NDkzOmRpZmZlcmVuY2UgYmV0d2VlbiB4YXNfc3BsaXRfYWxsb2MoKSt4YXNfc3BsaXQoKSBhbmQgeGFzX3RyeV9hbGxvYygpIGlzXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS94YXJyYXkucnN0OjQ5NDp0aGF0IHhhc19zcGxpdF9hbGxvYygpICsgeGFzX3NwbGl0KCkgc3BsaXQgdGhlIGVudHJ5IGZyb20gdGhlIG9yaWdpbmFsXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS94YXJyYXkucnN0LTQ5NS1vcmRlciB0byB0aGUgbmV3IG9yZGVyIGluIG9uZSBzaG90IHVuaWZvcm1seSwgd2hlcmVhcyB4YXNfdHJ5X3NwbGl0KClcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdD00OTc9Rm9yIGV4YW1wbGUsIHRvIHNwbGl0IGFuIG9yZGVyLTkgZW50cnksIHdoaWNoIHRha2VzIDJeKDktNik9OCBzbG90cyxcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3Q6NDk4OmFzc3VtaW5nIGBgWEFfQ0hVTktfU0hJRlRgYCBpcyA2LCB4YXNfc3BsaXRfYWxsb2MoKSArIHhhc19zcGxpdCgpIG5lZWRcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3QtNDk5LTggeGFfbm9kZS4geGFzX3RyeV9zcGxpdCgpIHNwbGl0cyB0aGUgb3JkZXItOSBlbnRyeSBpbnRvXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0PTM0NT1YQXJyYXnmnInog73lipvlsIblpJrkuKrntKLlvJXogZTns7vlnKjkuIDotbfvvIzlm6DmraTlr7nkuIDkuKrntKLlvJXnmoTmk43kvZzkvJrlvbHlk43liLDmiYDmnInnmoTntKLlvJXjgILkvovlpoLvvIzlrZjlgqjliLDku7vkvZXntKLlvJXlsIZcXHVmZmZkXFx1ZmZmZC4uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkveGFycmF5LnJzdC0zNjIt5Zyo5LiA5Liq5aSa57Si5byV5p2h55uu55qE5Lu75L2V5LiA5Liq57Si5byV5Lit5a2Y5YKoIGBgTlVMTGBgIO+8jOWwhuaKiuavj+S4que0ouW8leeahOadoeebruiuvue9ruS4uiBgYE5VTExgYCDvvIzlubbop6PpmaTnu5HlrprjgILpgJrov4fosINcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0OjM2MzrnlKh4YXNfc3BsaXRfYWxsb2MoKe+8jOWcqOayoeaciXhhX2xvY2vnmoTmg4XlhrXkuIvvvIzlj6/ku6XlsIbkuIDkuKrlpJrntKLlvJXmnaHnm67liIblibLmiJDljaDmja7ovoPlsI/ojIPlm7TnmoTmnaHnm67vvIznhLblkI7lho3lj5bplIHlubZcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0LTM2NC3osIPnlKh4YXNfc3BsaXQoKeOAglxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmg9MzY0PXN0YXRpYyBpbmxpbmUgdm9pZCBtYXBwaW5nX3NldF9nZnBfbWFzayhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbSwgZ2ZwX3QgbWFzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oLTM4Mi0vKlxcbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oOjM4MzogKiB4YXNfc3BsaXRfYWxsb2MoKSBkb2VzIG5vdCBzdXBwb3J0IGFyYml0cmFyeSBvcmRlcnMuIFRoaXMgaW1wbGllcyBub1xcbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oLTM4NC0gKiA1MTJNQiBUSFAgb24gQVJNNjQgd2l0aCA2NEtCIGJhc2UgcGFnZSBzaXplLlxcbi0tXFxuaW5jbHVkZS9saW51eC94YXJyYXkuaD0xNTYyPXZvaWQgeGFzX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqLCB2b2lkICplbnRyeSwgdW5zaWduZWQgaW50IG9yZGVyKTtcXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oOjE1NjM6dm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICosIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsIGdmcF90KTtcXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oLTE1NjQtdm9pZCB4YXNfdHJ5X3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB2b2lkICplbnRyeSwgdW5zaWduZWQgaW50IG9yZGVyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgveGFycmF5Lmg9MTU3Nz1zdGF0aWMgaW5saW5lIHZvaWQgeGFzX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB2b2lkICplbnRyeSxcXG4tLVxcbmluY2x1ZGUvbGludXgveGFycmF5LmgtMTU4Mi1cXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oOjE1ODM6c3RhdGljIGlubGluZSB2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksXFxuaW5jbHVkZS9saW51eC94YXJyYXkuaC0xNTg0LVxcdFxcdHVuc2lnbmVkIGludCBvcmRlciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubGliL3Rlc3RfeGFycmF5LmM9MTgzNj1zdGF0aWMgdm9pZCBjaGVja19zcGxpdF8xKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LFxcbi0tXFxubGliL3Rlc3RfeGFycmF5LmMtMTg0NS1cXG5saWIvdGVzdF94YXJyYXkuYzoxODQ2OlxcdHhhc19zcGxpdF9hbGxvYyhcXHUwMDI2eGFzLCB4YSwgb3JkZXIsIEdGUF9LRVJORUwpO1xcbmxpYi90ZXN0X3hhcnJheS5jLTE4NDctXFx0eGFzX2xvY2soXFx1MDAyNnhhcyk7XFxuLS1cXG5saWIveGFycmF5LmM9MTAxMT1zdGF0aWMgdm9pZCBfX3hhc19pbml0X25vZGVfZm9yX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLFxcbi0tXFxubGliL3hhcnJheS5jLTEwMzEtLyoqXFxubGliL3hhcnJheS5jOjEwMzI6ICogeGFzX3NwbGl0X2FsbG9jKCkgLSBBbGxvY2F0ZSBtZW1vcnkgZm9yIHNwbGl0dGluZyBhbiBlbnRyeS5cXG5saWIveGFycmF5LmMtMTAzMy0gKiBAeGFzOiBYQXJyYXkgb3BlcmF0aW9uIHN0YXRlLlxcbi0tXFxubGliL3hhcnJheS5jLTEwNDQtICovXFxubGliL3hhcnJheS5jOjEwNDU6dm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICp4YXMsIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxubGliL3hhcnJheS5jLTEwNDYtXFx0XFx0Z2ZwX3QgZ2ZwKVxcbi0tXFxubGliL3hhcnJheS5jLTEwNzUtfVxcbmxpYi94YXJyYXkuYzoxMDc2OkVYUE9SVF9TWU1CT0xfR1BMKHhhc19zcGxpdF9hbGxvYyk7XFxubGliL3hhcnJheS5jLTEwNzctXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTM3OTk9c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM4MjMtXFx0XFx0XFx0LypcXG5tbS9odWdlX21lbW9yeS5jOjM4MjQ6XFx0XFx0XFx0ICogdW5pZm9ybSBzcGxpdCBoYXMgeGFzX3NwbGl0X2FsbG9jKCkgY2FsbGVkIGJlZm9yZVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzgyNS1cXHRcXHRcXHQgKiBpcnEgaXMgZGlzYWJsZWQgdG8gYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSwgd2hlcmVhc1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00MTAyPXN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00MTgzLVxcdFxcdFxcdHhhc19zZXRfb3JkZXIoXFx1MDAyNnhhcywgZm9saW8tXFx1MDAzZWluZGV4LCBuZXdfb3JkZXIpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6NDE4NDpcXHRcXHRcXHR4YXNfc3BsaXRfYWxsb2MoXFx1MDAyNnhhcywgZm9saW8sIG9sZF9vcmRlciwgZ2ZwKTtcXG5tbS9odWdlX21lbW9yeS5jLTQxODUtXFx0XFx0XFx0aWYgKHhhc19lcnJvcihcXHUwMDI2eGFzKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjo0Mi43Mjc3OTkzMThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg0MTc0MTYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZvbGlvIFNwbGl0dGluZyBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgeGFzX3NwbGl0X2FsbG9jYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGNhbGxlZCBmcm9tIGBfX2ZvbGlvX3NwbGl0YC4gVGhlIHBhdGNoIGlzIGFkZGluZyBgX19HRlBfQUNDT1VOVGAgdG8gYGdmcGAgd2l0aGluIGB4YXNfc3BsaXRfYWxsb2NgIGlmIGB4YXMtXHUwMDNleGEtXHUwMDNleGFfZmxhZ3NgIGhhcyBgWEFfRkxBR1NfQUNDT1VOVGAgc2V0LiBUaGlzIG1ha2VzIHNlbnNlOyBpdCBhcHBlYXJzIHdlJ3JlIGVuYWJsaW5nIG1lbWNnIGFjY291bnRpbmcgZHVyaW5nIHRoZSBzcGxpdCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuIFRoZSBvdGhlciBjcml0aWNhbCBwaWVjZSBpcyB0aGF0IHRoZSBjb2RlIHN3aXRjaGVzIHRvIHRoZSBmb2xpbydzIG1lbWNnIHdpdGhpbiBgX19mb2xpb19zcGxpdGAgKmJlZm9yZSogY2FsbGluZyBgeGFzX3NwbGl0X2FsbG9jYC4gVGhpcyBjb25maXJtcyBtZW1jZyBhc3NvY2lhdGlvbiBpcyBoYXBwZW5pbmcgYXQgdGhlIHJpZ2h0IHBvaW50LlxuXG5TbywgYF9fZm9saW9fc3BsaXRgIGFuZCBgeGFzX3NwbGl0X2FsbG9jYCBhcmUgdGhlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBmb3IgdGhpcyBwYXRjaC4gV2FpdCwgYF9fZm9saW9fc3BsaXRgIGlzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoYXQgbWVhbnMgd2UgbmVlZCB0byBsb29rIHVwc3RyZWFtIGF0IGl0cyBjYWxsZXJzIGFuZCB0aGUgbm9uLXN0YXRpYyBjb3VudGVycGFydHMgbGlrZSBgZm9saW9fc3BsaXRgIGFuZCBgZm9saW9fc3BsaXRfdW5tYXBwZWRgIGFuZCBtYXliZSBhbHNvIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYC4gYF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgIGlzIGFsc28gbm90IHN0YXRpYy4gTGV0J3MgZGlnIGRlZXBlciBhbmQgaW5zcGVjdCBgZm9saW9fc3BsaXRgLCBgZm9saW9fc3BsaXRfdW5tYXBwZWRgLCBhbmQgYHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzODksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6NDcuNTY5NTQzMjk1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ5NDQ3OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD0zOTg9ZW51bSBzcGxpdF90eXBlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQwMi1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MDM6aW50IF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA0LVxcdFxcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDEwPWludCBmb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQxMi1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MTM6c3RhdGljIGlubGluZSBpbnQgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE0LVxcdFxcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE1LXtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MTY6XFx0cmV0dXJuIF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIocGFnZSwgbGlzdCwgbmV3X29yZGVyKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MTctfVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTQxOD1zdGF0aWMgaW5saW5lIGludCBzcGxpdF9odWdlX3BhZ2VfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE5LXtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MjA6XFx0cmV0dXJuIHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHBhZ2UsIE5VTEwsIG5ld19vcmRlcik7XFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDIxLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTQyMz1zdGF0aWMgaW5saW5lIGludCBzcGxpdF9odWdlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDI0LXtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MjU6XFx0cmV0dXJuIHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHBhZ2UsIE5VTEwsIDApO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQyNi19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD02NDU9c3RhdGljIGlubGluZSBpbnRcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo2NDY6c3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNjQ3LVxcdFxcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD04MjY9c3RhdGljIGlubGluZSBpbnQgc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5ld19vcmRlcilcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC04Mjcte1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjgyODpcXHRyZXR1cm4gc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoXFx1MDAyNmZvbGlvLVxcdTAwM2VwYWdlLCBOVUxMLCBuZXdfb3JkZXIpO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTgyOS19XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQzMjA9aW50IGZvbGlvX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzODYtICovXFxubW0vaHVnZV9tZW1vcnkuYzo0Mzg3OmludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDM4OC1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQ0MDQtICogSXQgaGFzIHRoZSBzYW1lIHByZXJlcXVpc2l0ZXMgYW5kIHJldHVybnMgYXNcXG5tbS9odWdlX21lbW9yeS5jOjQ0MDU6ICogc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoKS5cXG5tbS9odWdlX21lbW9yeS5jLTQ0MDYtICpcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9NDQ1ND1pbnQgc3BsaXRfZm9saW9fdG9fbGlzdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQ1NS17XFxubW0vaHVnZV9tZW1vcnkuYzo0NDU2OlxcdHJldHVybiBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcihcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UsIGxpc3QsIDApO1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDQ1Ny19XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQ3NDA9c3RhdGljIGludCBzcGxpdF9odWdlX3BhZ2VzX3BpZChpbnQgcGlkLCB1bnNpZ25lZCBsb25nIHZhZGRyX3N0YXJ0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00ODA5LVxcdFxcdC8qXFxubW0vaHVnZV9tZW1vcnkuYzo0ODEwOlxcdFxcdCAqIEZvciBmb2xpb3Mgd2l0aCBwcml2YXRlLCBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcigpXFxubW0vaHVnZV9tZW1vcnkuYy00ODExLVxcdFxcdCAqIHdpbGwgdHJ5IHRvIGRyb3AgaXQgYmVmb3JlIHNwbGl0IGFuZCB0aGVuIGNoZWNrIGlmIHRoZSBmb2xpb1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjo0OS4xMTg5OTcwMzFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxMjY5OTc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRm9saW8gU3BsaXR0aW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gZm9saW8gc3BsaXR0aW5nLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgZm9saW9fc3BsaXRgIGFuZCBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgdGhpcywgYWxvbmcgd2l0aCBgeGFzX3NwbGl0X2FsbG9jYCwgd2hpY2ggaXMgYWxzbyBleHBvcnRlZC4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuXG5cbkZpcnN0LCBsZXQncyBjaGVjayBmb3IgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEl0J3MgY2xlYXIgdGhhdCBgQ09ORklHX01FTUNHYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBhbmQgc28gaXMgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEdvb2QsIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBjb25jZXJuIG15c2VsZiB3aXRoLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBrbm93IGBsaWIveGFycmF5LmNgIGlzIGFsd2F5cyBjb21waWxlZC4gSG93ZXZlciwgYG1tL2h1Z2VfbWVtb3J5LmNgIHJlcXVpcmVzIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCB3aGljaCBpcyB3aGF0IEkgYWxyZWFkeSBub3RlZC5cblxuVGhlcmVmb3JlLCBmb3IgZW5hYmxpbmcgdGhlIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgTUVNQ0dgLiBNeSBmb2N1cywgdGhvdWdoLCB3aWxsIHJlbWFpbiBvbiB0aGUga2V5IHN5bWJvbHMgb2YgaW50ZXJlc3Q6IGBmb2xpb19zcGxpdGAsIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCwgYW5kIGB4YXNfc3BsaXRfYWxsb2NgLlxuXG5Ob3csIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgZm9saW9fc3BsaXRgIGFuZCBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgYXJlLCBpbmRlZWQsIGV4cG9ydGVkIG9yIGF0IGxlYXN0IG5vbi1zdGF0aWMuIFllcywgdGhleSBhcmUgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgLiBPa2F5LCB0aGF0IGNvbmZpcm1zIG15IGluaXRpYWwgYXNzdW1wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDc1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjUzLjkzMTY5OTc1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIxNzgzNTI3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipmb2xpb19zcGxpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjU1Ljk1MzQ5MTc3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk0NTIwMjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gRXhwb3J0IFN0YXR1cyBmb3IgRnV6emluZyoqXG5cbkhtbSwgSSdtIGp1c3QgbG9va2luZyBhdCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBzZXQgdXAgaW4gdGhlIGNvZGUsIGFuZCBJIHNlZSB0aGF0IGBmb2xpb19zcGxpdGAgaXNuJ3QgYWN0dWFsbHkgZXhwb3J0ZWQuIFRoYXQgaW5pdGlhbGx5IGdhdmUgbWUgcGF1c2UsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBmb3IgZnV6emluZywgaXQgZG9lc24ndCBtYXR0ZXIgKnRvbyogbXVjaCBpZiBzb21ldGhpbmcncyBwdWJsaWNseSBhdmFpbGFibGUuIFRoZSBmYWN0IHRoYXQgaXQncyBub24tc3RhdGljIG1lYW5zIEkgY2FuIHByb2JhYmx5IHN0aWxsIGdldCBhdCBpdCBpZiBJIGRpZyBhIGJpdC4gR29vZCwgdGhhdCdzIHdvcmthYmxlIGZvciB0aGUgZnV6emluZyBJJ20gcGxhbm5pbmcuXG5cbk5vdywgbGV0J3Mgc2VlIGFib3V0IGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYC4gSXMgKnRoYXQqIGZ1bmN0aW9uIGV4cG9ydGVkPyBJZiBpdCBpcywgYW5kIEkgY2FuIHVzZSBpdCwgdGhhdCdzIHBvdGVudGlhbGx5IGV2ZW4gYmV0dGVyLiBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcyBhbmQgbG9vayBpdCB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NzksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjo1OS4xNDgwMTQ4NDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzM1MjM1NjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKl9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMzowMS4zMjE1NDY1MzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2MzEwNDU5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgYSBGdW5jdGlvbidzIEV4cG9ydCBTdGF0dXMqKlxuXG5BbHJpZ2h0LCB0aGF0IHNvdW5kcyBwZXJmZWN0bHkgYWNjZXB0YWJsZSwgbm8gaW1tZWRpYXRlIGNvbmNlcm5zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgYSBzcGVjaWZpYyBkZXRhaWwsIHBhcnRpY3VsYXJseSBjb25jZXJuaW5nIHRoZSBmdW5jdGlvbiBgZm9saW9fc3BsaXRfdW5tYXBwZWRgLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgYXZhaWxhYmlsaXR5LCBzcGVjaWZpY2FsbHkgd2hldGhlciBvciBub3QgaXQncyBiZWVuIGV4cG9ydGVkIGFuZCBpcyB0aGVyZWZvcmUgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgb3IgbW9kdWxlIEknbSB3b3JraW5nIHdpdGguIFRoaXMgaXMgYSBjb21tb24gYW5kIHF1aWNrIHNhbml0eSBjaGVjayBJIG9mdGVuIHBlcmZvcm0gYmVmb3JlIEkgZXZlbiBjb25zaWRlciB1c2luZyBhIHBhcnRpY3VsYXIgZnVuY3Rpb247IGVuc3VyaW5nIGl0cyBleHBvcnQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTYzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDM6MDQuMjg0NjUzNDE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDczMzQyMTE0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipmb2xpb19zcGxpdF91bm1hcHBlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAzOjA2LjM1ODAwMjUxOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkxMTQ2NjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBhIFF1aWNrIENoZWNrKipcblxuVGhhdCdzIGZpbmUuIEFscmlnaHQsIG5vIGltbWVkaWF0ZSBjb25jZXJucyBvciByZWQgZmxhZ3MuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueXRoaW5nIGVsc2UsIEkgbmVlZCB0byBtYWtlIGEgcXVpY2sgdmVyaWZpY2F0aW9uLiBMZXQncyBjaGVjayBpZiB0aGUgZnVuY3Rpb24gYHhhc19zcGxpdF9hbGxvY2AgaXMgcHJvcGVybHkgZXhwb3J0ZWQgYW5kIGFjY2Vzc2libGUuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHByZXJlcXVpc2l0ZSBmb3Igd2hhdGV2ZXIgZm9sbG93cywgc28gbGV0J3MgZ2V0IHRoYXQgdmFsaWRhdGlvbiBvdXQgb2YgdGhlIHdheSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUxNDksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMzowOS4xNDkxNTE3MDFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjg4NDQ2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qeGFzX3NwbGl0X2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIveGFycmF5LmM9MTA0NT12b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbmxpYi94YXJyYXkuYy0xMDc1LX1cXG5saWIveGFycmF5LmM6MTA3NjpFWFBPUlRfU1lNQk9MX0dQTCh4YXNfc3BsaXRfYWxsb2MpO1xcbmxpYi94YXJyYXkuYy0xMDc3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMzoxMS4zMTgwMDI1OTlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDczMTE1NTA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIEZvbGlvIFNwbGl0dGluZyBQYXRjaCoqXG5cbkFscmlnaHQsIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBhbmQgaXQncyBkZWFsaW5nIHdpdGggZm9saW8gc3BsaXR0aW5nLCBzcGVjaWZpY2FsbHkgaG93IHdlIGFjY291bnQgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoaW4gYSBtZW1vcnkgY2dyb3VwIGR1cmluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIOKAkyB3ZSdyZSB0YWxraW5nIGFib3V0IGZ1bmRhbWVudGFsIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLCBhbmQgaXQncyB0cmlnZ2VyZWQgd2hlbiBhIGh1Z2UgcGFnZSBpcyBzcGxpdC4gU291bmRzIGxpa2UgYSBjb3JlIGlzc3VlLlxuXG5Ob3csIGxldCdzIHNlZSwgdGhlIGltcG9ydGFudCBgRW5hYmxlQ29uZmlnc2AgYXJlIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBNRU1DR2AuIEFuZCB0aGUga2V5IGBGb2N1c1N5bWJvbHNgIGxvb2sgbGlrZSBgZm9saW9fc3BsaXRgLCBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAsIGFuZCBgeGFzX3NwbGl0X2FsbG9jYC4gVGhvc2UgZnVuY3Rpb25zIGRlZmluaXRlbHkgcmluZyBhIGJlbGwgYXMgY3JpdGljYWwgcG9pbnRzIGluIHRoZSBzcGxpdHRpbmcgcHJvY2Vzcy5cblxuUXVpY2sgZG91YmxlLWNoZWNrOiBgQ09ORklHX01FTUNHYCBkZXBlbmRzIG9uIGBDT05GSUdfQ0dST1VQU2AsIGJ1dCBgQ09ORklHX01FTUNHYCBzaG91bGQgYmUgc3VmZmljaWVudCBvbiBpdHMgb3duLCBhbmQgdGhlIHNhbWUgZ29lcyBmb3IgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIE5vIG5lZWQgdG8gZ2V0IG1vcmUgZ3JhbnVsYXIgdGhhbiBuZWNlc3NhcnkuIE9rYXksIHRoZSBjb25maWdzIGFyZSBhcyBleHBlY3RlZC5cblxuSSBhbSBzYXRpc2ZpZWQgYW5kIHJlYWR5IHRvIHNldCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM5NSwiT3V0cHV0VG9rZW5zIjoxMTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDM6MTYuMDQ5MTYxNTYzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEzMTk5ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJNRU1DR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZvbGlvX3NwbGl0XCIsXG4gICAgXCJfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyXCIsXG4gICAgXCJ4YXNfc3BsaXRfYWxsb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSBjaGFyZ2UgbWVtb3J5IGFsbG9jYXRpb25zIHRvIHRoZSBmb2xpbydzIG1lbW9yeSBjZ3JvdXAgZHVyaW5nIHhhcnJheSBub2RlIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBodWdlIHBhZ2Ugc3BsaXR0aW5nIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJNRU1DR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZvbGlvX3NwbGl0XCIsXG4gICAgXCJfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyXCIsXG4gICAgXCJ4YXNfc3BsaXRfYWxsb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSBjaGFyZ2UgbWVtb3J5IGFsbG9jYXRpb25zIHRvIHRoZSBmb2xpbydzIG1lbW9yeSBjZ3JvdXAgZHVyaW5nIHhhcnJheSBub2RlIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBodWdlIHBhZ2Ugc3BsaXR0aW5nIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow5z848[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 11:20:53 +0000 UTC FinishedAt: 2026-08-01 12:03:17 +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": "99cf84da3838f1613deed700ddfb033163b28106", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TRANSPARENT_HUGEPAGE", "MEMCG" ], "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": "99cf84da3838f1613deed700ddfb033163b28106", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TRANSPARENT_HUGEPAGE", "MEMCG" ], "series_id": "d7a9273d-4e40-474c-a06b-725e4c8fa0f2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "folio_split", "__split_huge_page_to_list_to_order", "xas_split_alloc" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm9saW9fc3BsaXQmIzM0OywKICAgICYjMzQ7X19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICAgJiMzNDt4YXNfc3BsaXRfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8mIzM5O3MgbWVtb3J5IGNncm91cCBkdXJpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGh1Z2UgcGFnZSBzcGxpdHRpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5MDhkZjExZDYzYzYzOTkyYjc2OWMzODZmZmQxODM0NTQxNmIyYTBkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAxMjowMjoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9saWIveGFycmF5LmMgYi9saWIveGFycmF5LmNcbmluZGV4IDlhOGI0OTE2NTQwY2YuLmJmZTdiZWY4MGYzNGUgMTAwNjQ0XG4tLS0gYS9saWIveGFycmF5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi94YXJyYXkuY1xuQEAgLTEwNTMsNiAmIzQzOzEwNTMsOSBAQCB2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlcixcbiBcdGlmICh4YXMtXHUwMDNleGFfc2hpZnQgJiM0MzsgWEFfQ0hVTktfU0hJRlQgXHUwMDNlIG9yZGVyKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0aWYgKHhhcy1cdTAwM2V4YS1cdTAwM2V4YV9mbGFncyBcdTAwMjYgWEFfRkxBR1NfQUNDT1VOVClcbiYjNDM7XHRcdGdmcCB8PSBfX0dGUF9BQ0NPVU5UO1xuJiM0MztcbiBcdGRvIHtcbiBcdFx0c3RydWN0IHhhX25vZGUgKm5vZGU7XG4gXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcbmluZGV4IDIxYzkyZWU0OGU0NjkuLjgwNGI4ZjZhYTU1NzAgMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtNDEwNiwzNCAmIzQzOzQxMDYsNDIgQEAgc3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4gXHRYQV9TVEFURSh4YXMsIFx1MDAyNmZvbGlvLVx1MDAzZW1hcHBpbmctXHUwMDNlaV9wYWdlcywgZm9saW8tXHUwMDNlaW5kZXgpO1xuIFx0c3RydWN0IGZvbGlvICplbmRfZm9saW8gPSBmb2xpb19uZXh0KGZvbGlvKTtcbiBcdGJvb2wgaXNfYW5vbiA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbyk7XG4mIzQzO1x0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCAqb2xkX21lbWNnO1xuIFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBOVUxMO1xuIFx0c3RydWN0IGFub25fdm1hICphbm9uX3ZtYSA9IE5VTEw7XG4gXHRpbnQgb2xkX29yZGVyID0gZm9saW9fb3JkZXIoZm9saW8pO1xuIFx0c3RydWN0IGZvbGlvICpuZXdfZm9saW8sICpuZXh0O1xuIFx0aW50IG5yX3NobWVtX2Ryb3BwZWQgPSAwO1xuIFx0ZW51bSB0dHVfZmxhZ3MgdHR1X2ZsYWdzID0gMDtcbi1cdGludCByZXQ7XG4gXHRwZ29mZl90IGVuZCA9IDA7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdFZNX1dBUk5fT05fT05DRV9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7XG4gXHRWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pLCBmb2xpbyk7XG4gXG4gXHRpZiAoZm9saW8gIT0gcGFnZV9mb2xpbyhzcGxpdF9hdCkgfHwgZm9saW8gIT0gcGFnZV9mb2xpbyhsb2NrX2F0KSkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X25vX21lbWNnO1xuIFx0fVxuIFxuIFx0aWYgKG5ld19vcmRlciBcdTAwM2U9IG9sZF9vcmRlcikge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X25vX21lbWNnO1xuIFx0fVxuIFxuIFx0cmV0ID0gZm9saW9fY2hlY2tfc3BsaXR0YWJsZShmb2xpbywgbmV3X29yZGVyLCBzcGxpdF90eXBlKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0Vk1fV0FSTl9PTkNFKHJldCA9PSAtRUlOVkFMLCBcJiMzNDtUcmllZCB0byBzcGxpdCBhbiB1bnNwbGl0dGFibGUgZm9saW9cJiMzNDspO1xuLVx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdGdvdG8gb3V0X25vX21lbWNnO1xuIFx0fVxuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogc3dpdGNoIHRvIGZvbGlvJiMzOTtzIG1lbWNnIGFzIHhhcnJheSBub2RlIGFsbG9jYXRpb24gY2FuIGhhcHBlbiBhbmRcbiYjNDM7XHQgKiBuZWVkcyB0byBjaGFyZ2UgdG8gaXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbiYjNDM7XHRvbGRfbWVtY2cgPSBzZXRfYWN0aXZlX21lbWNnKG1lbWNnKTtcbiYjNDM7XG4gXHRpZiAoaXNfYW5vbikge1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgY2FsbGVyIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGhvbGQgYW4gbW1hcF9sb2NrIHRoYXQgd291bGRcbkBAIC00Mjc2LDYgJiM0Mzs0Mjg0LDEwIEBAIHN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxuIFx0aWYgKG1hcHBpbmcpXG4gXHRcdGlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTtcbiBvdXQ6XG4mIzQzO1x0LyogcmVzdG9yZSB0byBjYWxsZXImIzM5O3Mgb2xkX21lbWNnICovXG4mIzQzO1x0c2V0X2FjdGl2ZV9tZW1jZyhvbGRfbWVtY2cpO1xuJiM0MztcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcbiYjNDM7b3V0X25vX21lbWNnOlxuIFx0eGFzX2Rlc3Ryb3koXHUwMDI2eGFzKTtcbiBcdGlmIChpc19wbWRfb3JkZXIob2xkX29yZGVyKSlcbiBcdFx0Y291bnRfdm1fZXZlbnQoIXJldCA/IFRIUF9TUExJVF9QQUdFIDogVEhQX1NQTElUX1BBR0VfRkFJTEVEKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7TUVNQ0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmb2xpb19zcGxpdCYjMzQ7LAogICAgJiMzNDtfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyJiMzNDssCiAgICAmIzM0O3hhc19zcGxpdF9hbGxvYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSBjaGFyZ2UgbWVtb3J5IGFsbG9jYXRpb25zIHRvIHRoZSBmb2xpbyYjMzk7cyBtZW1vcnkgY2dyb3VwIGR1cmluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgaHVnZSBwYWdlIHNwbGl0dGluZyBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkwOGRmMTFkNjNjNjM5OTJiNzY5YzM4NmZmZDE4MzQ1NDE2YjJhMGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDEyOjAyOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbGliL3hhcnJheS5jIGIvbGliL3hhcnJheS5jCmluZGV4IDlhOGI0OTE2NTQwY2YuLmJmZTdiZWY4MGYzNGUgMTAwNjQ0Ci0tLSBhL2xpYi94YXJyYXkuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIveGFycmF5LmMKQEAgLTEwNTMsNiAmIzQzOzEwNTMsOSBAQCB2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlciwKIAlpZiAoeGFzLSZndDt4YV9zaGlmdCAmIzQzOyBYQV9DSFVOS19TSElGVCAmZ3Q7IG9yZGVyKQogCQlyZXR1cm47CiAKJiM0MzsJaWYgKHhhcy0mZ3Q7eGEtJmd0O3hhX2ZsYWdzICZhbXA7IFhBX0ZMQUdTX0FDQ09VTlQpCiYjNDM7CQlnZnAgfD0gX19HRlBfQUNDT1VOVDsKJiM0MzsKIAlkbyB7CiAJCXN0cnVjdCB4YV9ub2RlICpub2RlOwogCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCAyMWM5MmVlNDhlNDY5Li44MDRiOGY2YWE1NTcwIDEwMDY0NAotLS0gYS9tbS9odWdlX21lbW9yeS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2VfbWVtb3J5LmMKQEAgLTQxMDYsMzQgJiM0Mzs0MTA2LDQyIEBAIHN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLAogCVhBX1NUQVRFKHhhcywgJmFtcDtmb2xpby0mZ3Q7bWFwcGluZy0mZ3Q7aV9wYWdlcywgZm9saW8tJmd0O2luZGV4KTsKIAlzdHJ1Y3QgZm9saW8gKmVuZF9mb2xpbyA9IGZvbGlvX25leHQoZm9saW8pOwogCWJvb2wgaXNfYW5vbiA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbyk7CiYjNDM7CXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgKm9sZF9tZW1jZzsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IE5VTEw7CiAJc3RydWN0IGFub25fdm1hICphbm9uX3ZtYSA9IE5VTEw7CiAJaW50IG9sZF9vcmRlciA9IGZvbGlvX29yZGVyKGZvbGlvKTsKIAlzdHJ1Y3QgZm9saW8gKm5ld19mb2xpbywgKm5leHQ7CiAJaW50IG5yX3NobWVtX2Ryb3BwZWQgPSAwOwogCWVudW0gdHR1X2ZsYWdzIHR0dV9mbGFncyA9IDA7Ci0JaW50IHJldDsKIAlwZ29mZl90IGVuZCA9IDA7CiYjNDM7CWludCByZXQ7CiAKIAlWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbG9ja2VkKGZvbGlvKSwgZm9saW8pOwogCVZNX1dBUk5fT05fT05DRV9GT0xJTyghZm9saW9fdGVzdF9sYXJnZShmb2xpbyksIGZvbGlvKTsKIAogCWlmIChmb2xpbyAhPSBwYWdlX2ZvbGlvKHNwbGl0X2F0KSB8fCBmb2xpbyAhPSBwYWdlX2ZvbGlvKGxvY2tfYXQpKSB7CiAJCXJldCA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0OwomIzQzOwkJZ290byBvdXRfbm9fbWVtY2c7CiAJfQogCiAJaWYgKG5ld19vcmRlciAmZ3Q7PSBvbGRfb3JkZXIpIHsKIAkJcmV0ID0gLUVJTlZBTDsKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9ub19tZW1jZzsKIAl9CiAKIAlyZXQgPSBmb2xpb19jaGVja19zcGxpdHRhYmxlKGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X3R5cGUpOwogCWlmIChyZXQpIHsKIAkJVk1fV0FSTl9PTkNFKHJldCA9PSAtRUlOVkFMLCAmIzM0O1RyaWVkIHRvIHNwbGl0IGFuIHVuc3BsaXR0YWJsZSBmb2xpbyYjMzQ7KTsKLQkJZ290byBvdXQ7CiYjNDM7CQlnb3RvIG91dF9ub19tZW1jZzsKIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogc3dpdGNoIHRvIGZvbGlvJiMzOTtzIG1lbWNnIGFzIHhhcnJheSBub2RlIGFsbG9jYXRpb24gY2FuIGhhcHBlbiBhbmQKJiM0MzsJICogbmVlZHMgdG8gY2hhcmdlIHRvIGl0LgomIzQzOwkgKi8KJiM0MzsJbWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTsKJiM0MzsJb2xkX21lbWNnID0gc2V0X2FjdGl2ZV9tZW1jZyhtZW1jZyk7CiYjNDM7CiAJaWYgKGlzX2Fub24pIHsKIAkJLyoKIAkJICogVGhlIGNhbGxlciBkb2VzIG5vdCBuZWNlc3NhcmlseSBob2xkIGFuIG1tYXBfbG9jayB0aGF0IHdvdWxkCkBAIC00Mjc2LDYgJiM0Mzs0Mjg0LDEwIEBAIHN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLAogCWlmIChtYXBwaW5nKQogCQlpX21tYXBfdW5sb2NrX3JlYWQobWFwcGluZyk7CiBvdXQ6CiYjNDM7CS8qIHJlc3RvcmUgdG8gY2FsbGVyJiMzOTtzIG9sZF9tZW1jZyAqLwomIzQzOwlzZXRfYWN0aXZlX21lbWNnKG9sZF9tZW1jZyk7CiYjNDM7CW1lbV9jZ3JvdXBfcHV0KG1lbWNnKTsKJiM0MztvdXRfbm9fbWVtY2c6CiAJeGFzX2Rlc3Ryb3koJmFtcDt4YXMpOwogCWlmIChpc19wbWRfb3JkZXIob2xkX29yZGVyKSkKIAkJY291bnRfdm1fZXZlbnQoIXJldCA/IFRIUF9TUExJVF9QQUdFIDogVEhQX1NQTElUX1BBR0VfRkFJTEVEKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0NQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBhbmQgRnV6emluZyBhIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgYWN0dWFsbHkgZG9pbmcgYW55dGhpbmcgd2Ugc2hvdWxkIGJlIGNvbmNlcm5lZCBhYm91dCwgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggdGhlIGVmZm9ydCBvZiB0YXJnZXRpbmcgd2l0aCBmdXp6aW5nLiBJdCB0b3VjaGVzIGBsaWIveGFycmF5LmNgIGFuZCBgbW0vaHVnZV9tZW1vcnkuY2AsIHdoaWNoIGFsd2F5cyBjYXRjaGVzIG15IGF0dGVudGlvbi4KCkluIGBsaWIveGFycmF5LmNgLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYHhhc19zcGxpdF9hbGxvY2AuIEl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgYWRkaW5nIGBfX0dGUF9BQ0NPVU5UYCB0byB0aGUgYGdmcGAgZmxhZywgYnV0IG9ubHkgaWYgYSBzcGVjaWZpYyBmbGFnLCBgWEFfRkxBR1NfQUNDT1VOVGAsIGlzIHNldCBpbiB0aGUgeGFycmF5LiBUaGF04oCZcyBpbnRlcmVzdGluZywgYXMgaXQgaXMgcmVsYXRlZCB0byBtZW1vcnkgYWNjb3VudGluZy4KClRoZW4sIGBtbS9odWdlX21lbW9yeS5jYCBoYXMgYSBjaGFuZ2UgdG8gYF9fZm9saW9fc3BsaXRgLiBJdCBhcHBlYXJzIHRvIGJlIHN3aXRjaGluZyB0byB0aGUgZm9saW8mIzM5O3MgbWVtY2cgYmVmb3JlIGF0dGVtcHRpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbnMgZHVyaW5nIGEgc3BsaXQuIFRoaXMgKmRlZmluaXRlbHkqIHNvdW5kcyBsaWtlIGEgcG90ZW50aWFsIHBvaW50IG9mIGNvbnRlbnRpb24sIGFuZCBpdCBpcyBhIGNvbW1vbiBhcmVhIHRvIGNyZWF0ZSBpc3N1ZXMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBib3RoIGFyZSByZWFjaGFibGUsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gYF9fZm9saW9fc3BsaXRgIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIHVzZWZ1bCBpbiBmdXp6aW5nLiBUaGVuIGB4YXNfc3BsaXRfYWxsb2NgIGxvb2tzIGxpa2UgaXQgaXMgcmVhY2hhYmxlIGFzIHdlbGwuCgpOb3csIGxldCYjMzk7cyBzZWUgaG93IHRoaXMgaXMgY29uZmlndXJlZC4gVGhlIGNvZGUgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgIG9ubHkgZ2V0cyBjb21waWxlZCBpZiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGF0JiMzOTtzIHRydWUsIGJ1dCBpdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBpbiBidXNpbmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodWdlX21lbW9yeS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9MTAwPW9iai0kKENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OKSAmIzQzOz0gbWlncmF0ZV9kZXZpY2Uub1xubW0vTWFrZWZpbGU6MTAxOm9iai0kKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgJiM0Mzs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXG5tbS9NYWtlZmlsZS0xMDItb2JqLSQoQ09ORklHX1BBR0VfQ09VTlRFUikgJiM0Mzs9IHBhZ2VfY291bnRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gaXQmIzM5O3MgY2xlYXIgdGhhdCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBkZWZpbml0ZWx5IGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBtbS9odWdlX21lbW9yeS5jYCBtb2R1bGUuIFRoYXQgb25lJiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvYCBhbmQgYHNldF9hY3RpdmVfbWVtY2dgLiBUaG9zZSBmdW5jdGlvbnMsIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGhhdmUgYSBzdHJvbmcgYXNzb2NpYXRpb24gd2l0aCBtZW1vcnkgY29udHJvbCBncm91cHMsIG9yIGBDT05GSUdfTUVNQ0dgLiBUaGUgZGVwZW5kZW5jeSBmZWVscyB2ZXJ5IGxpa2VseS4gSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGF0IGBDT05GSUdfTUVNQ0dgIGlzLCBpbiBmYWN0LCBhbHNvIGEgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGlzIGNvbnRleHQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbmZpZ3VyYXRpb24gcGljdHVyZSBiZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyIHdpdGggYW55IGNoYW5nZXMgb3IgYW5hbHlzaXMuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGRlZXBlciBvbiB0aGlzIHNwZWNpZmljIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dldF9tZW1fY2dyb3VwX2Zyb21fZm9saW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYnVmZmVyLmM9ODMyPXN0cnVjdCBidWZmZXJfaGVhZCAqZm9saW9fYWxsb2NfYnVmZmVycyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBsb25nIHNpemUsXG4tLVxuZnMvYnVmZmVyLmMtODM4LVxuZnMvYnVmZmVyLmM6ODM5Olx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbmZzL2J1ZmZlci5jLTg0MC1cdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTc1Mz1zdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9jdXJyZW50KHZvaWQpO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtNzU0LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6NzU1OnN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtNzU2LVxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTEyMTA9c3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9jdXJyZW50KHZvaWQpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTIxNC1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjEyMTU6c3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTIxNi17XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00MTAyPXN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDE0MS1cdCAqL1xubW0vaHVnZV9tZW1vcnkuYzo0MTQyOlx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbm1tL2h1Z2VfbWVtb3J5LmMtNDE0My1cdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xuLS1cbm1tL2xpc3RfbHJ1LmM9NjMxPWludCBmb2xpb19tZW1jZ19saXN0X2xydV9hbGxvYyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgbGlzdF9scnUgKmxydSxcbi0tXG5tbS9saXN0X2xydS5jLTY0OC1cdC8qIEFsbG9jYXRpb24gbWF5IGJsb2NrLCBwaW4gdGhlIG1lbWNnICovXG5tbS9saXN0X2xydS5jOjY0OTpcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XG5tbS9saXN0X2xydS5jLTY1MC1cdHJlcyA9IF9fbWVtY2dfbGlzdF9scnVfYWxsb2MobWVtY2csIGxydSwgZ2ZwKTtcbi0tXG5tbS9tZW1jb250cm9sLmM9MzM0PXN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpnZXRfbWVtX2Nncm91cF9jc3NfZnJvbV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0zNDAtXG5tbS9tZW1jb250cm9sLmM6MzQxOlx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbm1tL21lbWNvbnRyb2wuYy0zNDItXG4tLVxubW0vbWVtY29udHJvbC5jPTExOTk9c3RydWN0IG1lbV9jZ3JvdXAgKmdldF9tZW1fY2dyb3VwX2Zyb21fY3VycmVudCh2b2lkKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xMjE3LS8qKlxubW0vbWVtY29udHJvbC5jOjEyMTg6ICogZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyAtIE9idGFpbiBhIHJlZmVyZW5jZSBvbiBhIGdpdmVuIGZvbGlvJiMzOTtzIG1lbWNnLlxubW0vbWVtY29udHJvbC5jLTEyMTktICogQGZvbGlvOiBmb2xpbyBmcm9tIHdoaWNoIG1lbWNnIHNob3VsZCBiZSBleHRyYWN0ZWQuXG4tLVxubW0vbWVtY29udHJvbC5jLTEyMjItICovXG5tbS9tZW1jb250cm9sLmM6MTIyMzpzdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vbWVtY29udHJvbC5jLTEyMjQte1xuLS1cbm1tL21pZ3JhdGUuYz0yNzU4PWludCBtaWdyYXRlX21pc3BsYWNlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbm9kZSlcbi0tXG5tbS9taWdyYXRlLmMtMjc2My1cdExJU1RfSEVBRChtaWdyYXRlcGFnZXMpO1xubW0vbWlncmF0ZS5jOjI3NjQ6XHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbm1tL21pZ3JhdGUuYy0yNzY1LVx0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTtcbi0tXG5tbS92bXNjYW4uYz00MjU1PWJvb2wgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGludCBucilcbi0tXG5tbS92bXNjYW4uYy00MzA3LVxubW0vdm1zY2FuLmM6NDMwODpcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XG5tbS92bXNjYW4uYy00MzA5LVx0bHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTtcbi0tXG5tbS93b3JraW5nc2V0LmM9NTQ4PXZvaWQgd29ya2luZ3NldF9yZWZhdWx0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHZvaWQgKnNoYWRvdylcbi0tXG5tbS93b3JraW5nc2V0LmMtNTcyLVx0bnIgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG5tbS93b3JraW5nc2V0LmM6NTczOlx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcbm1tL3dvcmtpbmdzZXQuYy01NzQtXHRscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgZm9saW9fcGdkYXQoZm9saW8pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRm9saW8gU3BsaXQgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgX19mb2xpb19zcGxpdGAsIHNwZWNpZmljYWxseSB0byB1dGlsaXplIGBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvYC4gVGhhdCYjMzk7cyBpbiBgbW0vaHVnZV9tZW1vcnkuY2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBuZXcgY29kZSBwYXRoIGlzIGFjdHVhbGx5IGFjdGl2ZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7RG8gd2UgcmVxdWlyZSBgQ09ORklHX01FTUNHYCB0byBtYWtlIHRoaXMgY2hhbmdlIG1lYW5pbmdmdWw/JiMzNDsKCkxldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpb2AgaW4gYGluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oYCwgaXQmIzM5O3MgYSBzdGF0aWMgaW5saW5lLCBhbmQgY3J1Y2lhbGx5LCByZXR1cm5zIE5VTEwgaWYgYENPTkZJR19NRU1DR2AgaXNuJiMzOTt0IGVuYWJsZWQuIEJpbmdvLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTUVNQ0dgIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgaGVyZSwgb3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gd2lsbCBqdXN0IGFsd2F5cyByZXR1cm4gbnVsbCBhbmQgdGhlIGNoYW5nZXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aG8gdGhlIGNhbGxlcnMgb2YgYF9fZm9saW9fc3BsaXRgIGFyZSB0byBnZXQgYSBiZXR0ZXIgY29udGV4dCBvbiB0aGUgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2ZvbGlvX3NwbGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmM9MzkyNj1zdGF0aWMgaW50IF9fZm9saW9fZnJlZXplX2FuZF9zcGxpdF91bm1hcHBlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDA4MS0vKipcbm1tL2h1Z2VfbWVtb3J5LmM6NDA4MjogKiBfX2ZvbGlvX3NwbGl0KCkgLSBzcGxpdCBhIGZvbGlvIGF0IEBzcGxpdF9hdCB0byBhIEBuZXdfb3JkZXIgZm9saW9cbm1tL2h1Z2VfbWVtb3J5LmMtNDA4My0gKiBAZm9saW86IGZvbGlvIHRvIHNwbGl0XG4tLVxubW0vaHVnZV9tZW1vcnkuYy00MTAxLSAqL1xubW0vaHVnZV9tZW1vcnkuYzo0MTAyOnN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxubW0vaHVnZV9tZW1vcnkuYy00MTAzLVx0XHRzdHJ1Y3QgcGFnZSAqc3BsaXRfYXQsIHN0cnVjdCBwYWdlICpsb2NrX2F0LFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9NDM4Nz1pbnQgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcihzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCxcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQzOTEtXG5tbS9odWdlX21lbW9yeS5jOjQzOTI6XHRyZXR1cm4gX19mb2xpb19zcGxpdChmb2xpbywgbmV3X29yZGVyLCBcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBwYWdlLCBsaXN0LFxubW0vaHVnZV9tZW1vcnkuYy00MzkzLVx0XHRcdCAgICAgU1BMSVRfVFlQRV9VTklGT1JNKTtcbi0tXG5tbS9odWdlX21lbW9yeS5jPTQ0MjA9aW50IGZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00NDIyLXtcbm1tL2h1Z2VfbWVtb3J5LmM6NDQyMzpcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X2F0LCBcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBsaXN0LFxubW0vaHVnZV9tZW1vcnkuYy00NDI0LVx0XHRcdCAgICAgU1BMSVRfVFlQRV9OT05fVU5JRk9STSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgxOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRm9saW8gU3BsaXR0aW5nIEFQSSBVc2FnZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBtaW5kIGlzIGltbWVkaWF0ZWx5IGRyYXduIHRvIHRoZSBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgYW5kIGBmb2xpb19zcGxpdGAgZnVuY3Rpb25zLiBUaGUgZmFjdCB0aGF0IGJvdGggb2YgdGhlc2UgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGBmb2xpb19zcGxpdGAsIGRpcmVjdGx5IGNhbGwgYF9fZm9saW9fc3BsaXRgIGlzIGludGVyZXN0aW5nLiBJJiMzOTttIG5vdGluZyB0aGF0IGBmb2xpb19zcGxpdGAgaXMgYW4gQVBJIGZ1bmN0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIGxpa2VseSBhIHB1YmxpYyBlbnRyeSBwb2ludCwgYXQgbGVhc3QgaW50ZXJuYWxseSwgZm9yIG1hbmlwdWxhdGluZyBmb2xpb3MuIFRoaXMgc3VnZ2VzdHMgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvciBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVneS4gVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gaWRlbnRpZnkgYWxsIHRoZSBwb3RlbnRpYWwgY2FsbGVycyBvZiBgZm9saW9fc3BsaXRgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHdpbGwgZ2l2ZSBtZSB0aGUgYmVzdCBpbnNpZ2h0IGludG8gaXRzIG92ZXJhbGwgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgY2FsbCBncmFwaCBhbmQgc2VlIHdobyYjMzk7cyBpbnZva2luZyB0aGlzIEFQSS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fc3BsaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTM0OD1zdGF0aWMgdm1fZmF1bHRfdCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzU5LVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTM2MDpzdGF0aWMgdm9pZCBkcm1fcGFnZW1hcF9mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKm9yaWdfZm9saW8sIHN0cnVjdCBmb2xpbyAqbmV3X2ZvbGlvKVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTM2MS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTM3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wYWdlbWFwX29wcyBkcm1fcGFnZW1hcF9wYWdlbWFwX29wcyA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzc0LVx0Lm1pZ3JhdGVfdG9fcmFtID0gZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19yYW0sXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzc1Olx0LmZvbGlvX3NwbGl0ID0gZHJtX3BhZ2VtYXBfZm9saW9fc3BsaXQsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzc2LX07XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9MTgzPXN0YXRpYyB2bV9mYXVsdF90IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNzktXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYzoyODA6c3RhdGljIHZvaWQgbm91dmVhdV9kbWVtX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqaGVhZCwgc3RydWN0IGZvbGlvICp0YWlsKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjgxLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz0yODk9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcGFnZW1hcF9vcHMgbm91dmVhdV9kbWVtX3BhZ2VtYXBfb3BzID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTI5MS1cdC5taWdyYXRlX3RvX3JhbVx0XHQ9IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbSxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI5MjpcdC5mb2xpb19zcGxpdFx0XHQ9IG5vdXZlYXVfZG1lbV9mb2xpb19zcGxpdCxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTI5My19O1xuLS1cbmZzL2Vyb2ZzL2RhdGEuYz0yNTk9dm9pZCBlcm9mc19vbmxpbmVmb2xpb19pbml0KHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvZXJvZnMvZGF0YS5jLTI2OC1cbmZzL2Vyb2ZzL2RhdGEuYzoyNjk6dm9pZCBlcm9mc19vbmxpbmVmb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuZnMvZXJvZnMvZGF0YS5jLTI3MC17XG4tLVxuZnMvZXJvZnMvZmlsZWlvLmM9ODk9c3RhdGljIGludCBlcm9mc19maWxlaW9fc2Nhbl9mb2xpbyhzdHJ1Y3QgZXJvZnNfZmlsZWlvICppbyxcbi0tXG5mcy9lcm9mcy9maWxlaW8uYy0xNDctXHRcdFx0aWYgKCFhdHRhY2hlZCYjNDM7JiM0MzspXG5mcy9lcm9mcy9maWxlaW8uYzoxNDg6XHRcdFx0XHRlcm9mc19vbmxpbmVmb2xpb19zcGxpdChmb2xpbyk7XG5mcy9lcm9mcy9maWxlaW8uYy0xNDktXHRcdFx0aW8tXHUwMDNlZGV2Lm1fcGEgJiM0Mzs9IGxlbjtcbi0tXG5mcy9lcm9mcy9pbnRlcm5hbC5oPTQxNT12b2lkIGVyb2ZzX29ubGluZWZvbGlvX2luaXQoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5mcy9lcm9mcy9pbnRlcm5hbC5oOjQxNjp2b2lkIGVyb2ZzX29ubGluZWZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuZnMvZXJvZnMvaW50ZXJuYWwuaC00MTctdm9pZCBlcm9mc19vbmxpbmVmb2xpb19lbmQoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IGVyciwgYm9vbCBkaXJ0eSk7XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xMDA1PXN0YXRpYyBpbnQgel9lcm9mc19zY2FuX2ZvbGlvKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmLFxuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtMTA3NS1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTA3NjpcdFx0XHRlcm9mc19vbmxpbmVmb2xpb19zcGxpdChmb2xpbyk7XG5mcy9lcm9mcy96ZGF0YS5jLTEwNzctXHRcdFx0aWYgKGYtXHUwMDNlcGNsLVx1MDAzZWxlbmd0aCBcdTAwM2Mgb2Zmc2V0ICYjNDM7IGVuZCAtIG1hcC1cdTAwM2VtX2xhKSB7XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDAzPWludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA0LVx0XHR1bnNpZ25lZCBpbnQgbmV3X29yZGVyKTtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjQwNTppbnQgZm9saW9fc3BsaXRfdW5tYXBwZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcik7XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MDYtdW5zaWduZWQgaW50IG1pbl9vcmRlcl9mb3Jfc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbyk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDA4PWludCBmb2xpb19jaGVja19zcGxpdHRhYmxlKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MDktXHRcdFx0ICAgZW51bSBzcGxpdF90eXBlIHNwbGl0X3R5cGUpO1xuaW5jbHVkZS9saW51eC9odWdlX21tLmg6NDEwOmludCBmb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQxMS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NjY5PXN0YXRpYyBpbmxpbmUgaW50IHNwbGl0X2ZvbGlvX3RvX2xpc3Qoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IGxpc3RfaGVhZCAqbGlzdClcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC02NzQtXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo2NzU6c3RhdGljIGlubGluZSBpbnQgZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTY3Ni1cdFx0c3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTAyMj12b2lkIHNwbGl0X3BhZ2VfbWVtY2coc3RydWN0IHBhZ2UgKmZpcnN0LCB1bnNpZ25lZCBvcmRlcik7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxMDIzOnZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBvbGRfb3JkZXIsXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xMDI0LVx0XHR1bnNpZ25lZCBuZXdfb3JkZXIpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE0NTM9c3RhdGljIGlubGluZSB2b2lkIHNwbGl0X3BhZ2VfbWVtY2coc3RydWN0IHBhZ2UgKmZpcnN0LCB1bnNpZ25lZCBvcmRlcilcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDU2LVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTQ1NzpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQ1OC1cdFx0dW5zaWduZWQgb2xkX29yZGVyLCB1bnNpZ25lZCBuZXdfb3JkZXIpXG4tLVxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oPTc3PXN0cnVjdCBkZXZfcGFnZW1hcF9vcHMge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaC0xMDctXHQgKi9cbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaDoxMDg6XHR2b2lkICgqZm9saW9fc3BsaXQpKHN0cnVjdCBmb2xpbyAqaGVhZCwgc3RydWN0IGZvbGlvICp0YWlsKTtcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaC0xMDktfTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmg9MjQ3PXN0YXRpYyBpbmxpbmUgdm9pZCB6b25lX2RldmljZV9wcml2YXRlX3NwbGl0X2NiKHN0cnVjdCBmb2xpbyAqb3JpZ2luYWxfZm9saW8sXG4tLVxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oLTI1MC1cdGlmIChmb2xpb19pc19kZXZpY2VfcHJpdmF0ZShvcmlnaW5hbF9mb2xpbykpIHtcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaDoyNTE6XHRcdGlmICghb3JpZ2luYWxfZm9saW8tXHUwMDNlcGdtYXAtXHUwMDNlb3BzLVx1MDAzZWZvbGlvX3NwbGl0KSB7XG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmgtMjUyLVx0XHRcdGlmIChuZXdfZm9saW8pIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmgtMjU3LVx0XHR9IGVsc2Uge1xuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oOjI1ODpcdFx0XHRvcmlnaW5hbF9mb2xpby1cdTAwM2VwZ21hcC1cdTAwM2VvcHMtXHUwMDNlZm9saW9fc3BsaXQob3JpZ2luYWxfZm9saW8sXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmgtMjU5LVx0XHRcdFx0XHRcdFx0XHQgbmV3X2ZvbGlvKTtcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg9NTA9VFJBQ0VfRVZFTlQobW1fbWlncmF0ZV9wYWdlcyxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtNTMtXHRcdCB1bnNpZ25lZCBsb25nIHRocF9zdWNjZWVkZWQsIHVuc2lnbmVkIGxvbmcgdGhwX2ZhaWxlZCxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaDo1NDpcdFx0IHVuc2lnbmVkIGxvbmcgdGhwX3NwbGl0LCB1bnNpZ25lZCBsb25nIGxhcmdlX2ZvbGlvX3NwbGl0LFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTU1LVx0XHQgZW51bSBtaWdyYXRlX21vZGUgbW9kZSwgZW51bSBtaWdyYXRlX3JlYXNvbiByZWFzb24pLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC01Ny1cdFRQX0FSR1Moc3VjY2VlZGVkLCBmYWlsZWQsIHRocF9zdWNjZWVkZWQsIHRocF9mYWlsZWQsXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg6NTg6XHRcdHRocF9zcGxpdCwgbGFyZ2VfZm9saW9fc3BsaXQsIG1vZGUsIHJlYXNvbiksXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtNTktXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTY1LVx0XHRfX2ZpZWxkKFx0dW5zaWduZWQgbG9uZyxcdFx0dGhwX3NwbGl0KVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oOjY2Olx0XHRfX2ZpZWxkKFx0dW5zaWduZWQgbG9uZyxcdFx0bGFyZ2VfZm9saW9fc3BsaXQpXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtNjctXHRcdF9fZmllbGQoXHRlbnVtIG1pZ3JhdGVfbW9kZSxcdG1vZGUpXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTc2LVx0XHRfX2VudHJ5LVx1MDAzZXRocF9zcGxpdFx0XHRcdD0gdGhwX3NwbGl0O1xuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oOjc3Olx0XHRfX2VudHJ5LVx1MDAzZWxhcmdlX2ZvbGlvX3NwbGl0XHQ9IGxhcmdlX2ZvbGlvX3NwbGl0O1xuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTc4LVx0XHRfX2VudHJ5LVx1MDAzZW1vZGVcdFx0XHRcdD0gbW9kZTtcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtODctXHRcdF9fZW50cnktXHUwMDNldGhwX3NwbGl0LFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oOjg4Olx0XHRfX2VudHJ5LVx1MDAzZWxhcmdlX2ZvbGlvX3NwbGl0LFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTg5LVx0XHRfX3ByaW50X3N5bWJvbGljKF9fZW50cnktXHUwMDNlbW9kZSwgTUlHUkFURV9NT0RFKSxcbi0tXG5saWIvdGVzdF9obW0uYz0xNzU4PXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE4MzYtXG5saWIvdGVzdF9obW0uYzoxODM3OnN0YXRpYyB2b2lkIGRtaXJyb3JfZGV2bWVtX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqaGVhZCwgc3RydWN0IGZvbGlvICp0YWlsKVxubGliL3Rlc3RfaG1tLmMtMTgzOC17XG4tLVxubGliL3Rlc3RfaG1tLmM9MTg3MT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wYWdlbWFwX29wcyBkbWlycm9yX2Rldm1lbV9vcHMgPSB7XG4tLVxubGliL3Rlc3RfaG1tLmMtMTg3My1cdC5taWdyYXRlX3RvX3JhbVx0PSBkbWlycm9yX2Rldm1lbV9mYXVsdCxcbmxpYi90ZXN0X2htbS5jOjE4NzQ6XHQuZm9saW9fc3BsaXRcdD0gZG1pcnJvcl9kZXZtZW1fZm9saW9fc3BsaXQsXG5saWIvdGVzdF9obW0uYy0xODc1LX07XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zNzk5PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzg0MS1cbm1tL2h1Z2VfbWVtb3J5LmM6Mzg0MjpcdFx0Zm9saW9fc3BsaXRfbWVtY2dfcmVmcyhmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XG5tbS9odWdlX21lbW9yeS5jLTM4NDMtXHRcdHNwbGl0X3BhZ2Vfb3duZXIoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSwgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zOTI2PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00MDgxLS8qKlxubW0vaHVnZV9tZW1vcnkuYzo0MDgyOiAqIF9fZm9saW9fc3BsaXQoKSAtIHNwbGl0IGEgZm9saW8gYXQgQHNwbGl0X2F0IHRvIGEgQG5ld19vcmRlciBmb2xpb1xubW0vaHVnZV9tZW1vcnkuYy00MDgzLSAqIEBmb2xpbzogZm9saW8gdG8gc3BsaXRcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQxMDEtICovXG5tbS9odWdlX21lbW9yeS5jOjQxMDI6c3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG5tbS9odWdlX21lbW9yeS5jLTQxMDMtXHRcdHN0cnVjdCBwYWdlICpzcGxpdF9hdCwgc3RydWN0IHBhZ2UgKmxvY2tfYXQsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00Mjk4LS8qKlxubW0vaHVnZV9tZW1vcnkuYzo0Mjk5OiAqIGZvbGlvX3NwbGl0X3VubWFwcGVkKCkgLSBzcGxpdCBhIGxhcmdlIGFub24gZm9saW8gdGhhdCBpcyBhbHJlYWR5IHVubWFwcGVkXG5tbS9odWdlX21lbW9yeS5jLTQzMDAtICogQGZvbGlvOiBmb2xpbyB0byBzcGxpdFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDMxOS0gKi9cbm1tL2h1Z2VfbWVtb3J5LmM6NDMyMDppbnQgZm9saW9fc3BsaXRfdW5tYXBwZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcilcbm1tL2h1Z2VfbWVtb3J5LmMtNDMyMS17XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00Mzg3PWludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDM5MS1cbm1tL2h1Z2VfbWVtb3J5LmM6NDM5MjpcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIFx1MDAyNmZvbGlvLVx1MDAzZXBhZ2UsIHBhZ2UsIGxpc3QsXG5tbS9odWdlX21lbW9yeS5jLTQzOTMtXHRcdFx0ICAgICBTUExJVF9UWVBFX1VOSUZPUk0pO1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDM5Ni0vKipcbm1tL2h1Z2VfbWVtb3J5LmM6NDM5NzogKiBmb2xpb19zcGxpdCgpIC0gc3BsaXQgYSBmb2xpbyBhdCBAc3BsaXRfYXQgdG8gYSBAbmV3X29yZGVyIGZvbGlvXG5tbS9odWdlX21lbW9yeS5jLTQzOTgtICogQGZvbGlvOiBmb2xpbyB0byBzcGxpdFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDQxOS0gKi9cbm1tL2h1Z2VfbWVtb3J5LmM6NDQyMDppbnQgZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcbm1tL2h1Z2VfbWVtb3J5LmMtNDQyMS1cdFx0c3RydWN0IHBhZ2UgKnNwbGl0X2F0LCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KVxubW0vaHVnZV9tZW1vcnkuYy00NDIyLXtcbm1tL2h1Z2VfbWVtb3J5LmM6NDQyMzpcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X2F0LCBcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBsaXN0LFxubW0vaHVnZV9tZW1vcnkuYy00NDI0LVx0XHRcdCAgICAgU1BMSVRfVFlQRV9OT05fVU5JRk9STSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00NzQwPXN0YXRpYyBpbnQgc3BsaXRfaHVnZV9wYWdlc19waWQoaW50IHBpZCwgdW5zaWduZWQgbG9uZyB2YWRkcl9zdGFydCxcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQ4MzItXHRcdFx0XHRcdFx0XHQgICBpbl9mb2xpb19vZmZzZXQpO1xubW0vaHVnZV9tZW1vcnkuYzo0ODMzOlx0XHRcdGlmICghZm9saW9fc3BsaXQoZm9saW8sIHRhcmdldF9vcmRlciwgc3BsaXRfYXQsIE5VTEwpKVxubW0vaHVnZV9tZW1vcnkuYy00ODM0LVx0XHRcdFx0c3BsaXQmIzQzOyYjNDM7O1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9NDg1Nz1zdGF0aWMgaW50IHNwbGl0X2h1Z2VfcGFnZXNfaW5fZmlsZShjb25zdCBjaGFyICpmaWxlX3BhdGgsIHBnb2ZmX3Qgb2ZmX3N0YXJ0LFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDkwOC1cdFx0XHRcdFx0XHRcdCAgIGluX2ZvbGlvX29mZnNldCk7XG5tbS9odWdlX21lbW9yeS5jOjQ5MDk6XHRcdFx0aWYgKCFmb2xpb19zcGxpdChmb2xpbywgdGFyZ2V0X29yZGVyLCBzcGxpdF9hdCwgTlVMTCkpXG5tbS9odWdlX21lbW9yeS5jLTQ5MTAtXHRcdFx0XHRzcGxpdCYjNDM7JiM0Mzs7XG4tLVxubW0vbWVtY29udHJvbC5jPTM3MTc9dm9pZCBzcGxpdF9wYWdlX21lbWNnKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBvcmRlcilcbi0tXG5tbS9tZW1jb250cm9sLmMtMzczMC1cbm1tL21lbWNvbnRyb2wuYzozNzMxOnZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBvbGRfb3JkZXIsXG5tbS9tZW1jb250cm9sLmMtMzczMi1cdFx0dW5zaWduZWQgbmV3X29yZGVyKVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9OTEyPXN0YXRpYyBpbnQgbWlncmF0ZV92bWFfc3BsaXRfdW5tYXBwZWRfZm9saW8oc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtOTI2LVx0c3BsaXRfaHVnZV9wbWRfYWRkcmVzcyhtaWdyYXRlLVx1MDAzZXZtYSwgYWRkciwgdHJ1ZSk7XG5tbS9taWdyYXRlX2RldmljZS5jOjkyNzpcdHJldCA9IGZvbGlvX3NwbGl0X3VubWFwcGVkKGZvbGlvLCAwKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtOTI4LVx0aWYgKHJldClcbi0tXG5tbS90cnVuY2F0ZS5jPTE3MD1pbnQgdHJ1bmNhdGVfaW5vZGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vdHJ1bmNhdGUuYy0xNzktXG5tbS90cnVuY2F0ZS5jOjE4MDpzdGF0aWMgaW50IGZvbGlvX3NwbGl0X29yX3VubWFwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBwYWdlICpzcGxpdF9hdCxcbm1tL3RydW5jYXRlLmMtMTgxLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbWluX29yZGVyKVxuLS1cbm1tL3RydW5jYXRlLmMtMTg4LVxubW0vdHJ1bmNhdGUuYzoxODk6XHRyZXQgPSBmb2xpb19zcGxpdChmb2xpbywgbWluX29yZGVyLCBzcGxpdF9hdCwgTlVMTCk7XG5tbS90cnVuY2F0ZS5jLTE5MC1cbi0tXG5tbS90cnVuY2F0ZS5jPTIxNz1ib29sIHRydW5jYXRlX2lub2RlX3BhcnRpYWxfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kKVxuLS1cbm1tL3RydW5jYXRlLmMtMjU0LVx0c3BsaXRfYXQgPSBmb2xpb19wYWdlKGZvbGlvLCBQQUdFX0FMSUdOX0RPV04ob2Zmc2V0KSAvIFBBR0VfU0laRSk7XG5tbS90cnVuY2F0ZS5jOjI1NTpcdGlmICghZm9saW9fc3BsaXRfb3JfdW5tYXAoZm9saW8sIHNwbGl0X2F0LCBtaW5fb3JkZXIpKSB7XG5tbS90cnVuY2F0ZS5jLTI1Ni1cdFx0Lypcbi0tXG5tbS90cnVuY2F0ZS5jLTI4MS1cdFx0ICAgIGZvbGlvMi1cdTAwM2VtYXBwaW5nID09IGZvbGlvLVx1MDAzZW1hcHBpbmcpXG5tbS90cnVuY2F0ZS5jOjI4MjpcdFx0XHRmb2xpb19zcGxpdF9vcl91bm1hcChmb2xpbzIsIHNwbGl0X2F0MiwgbWluX29yZGVyKTtcbm1tL3RydW5jYXRlLmMtMjgzLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy5naXRpZ25vcmU9Njc9cm1hcFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vLmdpdGlnbm9yZTo2ODpmb2xpb19zcGxpdF9yYWNlX3Rlc3Rcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZT0xMDU9VEVTVF9HRU5fRklMRVMgJiM0Mzs9IHJtYXBcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlOjEwNjpURVNUX0dFTl9GSUxFUyAmIzQzOz0gZm9saW9fc3BsaXRfcmFjZV90ZXN0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZS0xMDctXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmMtNi0gKlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmM6NzogKiBJdCB0ZXN0cyB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBmb2xpb19zcGxpdCgpIGFuZCBmaWxlbWFwX2dldF9lbnRyeSgpLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmM6ODogKiB3aGVyZSB0aGUgaG9sZSBwdW5jaGVzIG9uIHNobWVtIGxlYWQgdG8gZm9saW9fc3BsaXQoKSBhbmQgcmVhZGluZyB0aGUgc2htZW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2ZvbGlvX3NwbGl0X3JhY2VfdGVzdC5jLTktICogbGVhZCB0byBmaWxlbWFwX2dldF9lbnRyeSgpLlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoPTQ0Mz1DQVRFR09SWT1cJiMzNDt0aHBcJiMzNDsgcnVuX3Rlc3QgLi90cmFuc2h1Z2Utc3RyZXNzIC1kIDIwXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaC00NDQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaDo0NDU6Q0FURUdPUlk9XCYjMzQ7dGhwXCYjMzQ7IHJ1bl90ZXN0IC4vZm9saW9fc3BsaXRfcmFjZV90ZXN0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaC00NDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTY5CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggZGl2ZXMgaW50byBzb21lIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgcm91dGluZXMg4oCTIHNwZWNpZmljYWxseSwgaG93IHdlIGhhbmRsZSBtZW1vcnkgZHVyaW5nIGZpbGUgdHJ1bmNhdGlvbiBhbmQgaHVnZSBwYWdlIHNwbGl0dGluZy4gYGZvbGlvX3NwbGl0YCBpcyB0cmlnZ2VyZWQgYnkgYHRydW5jYXRlX2lub2RlX3BhcnRpYWxfZm9saW9gLCBhbmQgdGhhdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSB0cnVuY2F0aW9uIHByb2Nlc3MsIHNvIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGZvY3VzLiBUaGVuIHRoZXJlJiMzOTtzIHRoZSBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgZmFtaWx5IG9mIGZ1bmN0aW9uczogd2UmIzM5O3ZlIGdvdCB0aGUgaW50ZXJuYWwgaGVscGVycyBhbGwgdGhlIHdheSB1cCB0byB0aGUgcHVibGljbHkgdmlzaWJsZSBgc3BsaXRfaHVnZV9wYWdlYCDigJMgdGhhdCYjMzk7cyBhIGNsZWFyIGluZGljYXRvciBvZiBjaGFuZ2VzIGltcGFjdGluZyBodWdlIHBhZ2UgbWFuYWdlbWVudCwgYSBjcml0aWNhbCBhcmVhIGZvciBwZXJmb3JtYW5jZS4KCkdpdmVuIHRoaXMgY29udGV4dCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGUgcGF0Y2ggaXMgZnVuY3Rpb25hbGx5IHNvdW5kIGFuZCB3b3J0aCBhIGdvb2QgZnV6emluZyBjYW1wYWlnbi4gTWVtb3J5IG1hbmFnZW1lbnQgaW50ZXJhY3Rpb25zIGFyZSBhbHdheXMgY29tcGxleCwgYW5kIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZm91bmRhdGlvbmFsLiBXZSBuZWVkIHRvIHN0cmVzcy10ZXN0IHRoZW0sIHBhcnRpY3VsYXJseSBhcm91bmQgdGhvc2UgZmlsZSB0cnVuY2F0aW9uIGFuZCBodWdlIHBhZ2Ugc3BsaXR0aW5nIG9wZXJhdGlvbnMgdG8gZmx1c2ggb3V0IGFueSBzdWJ0bGUgaXNzdWVzLiBJIHdhbnQgdG8gY2hlY2sgYHhhc19zcGxpdF9hbGxvY2Agd2hpbGUgSSYjMzk7bSBhdCBpdCwgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSByZWxhdGVkIGNoYW5nZXMgdGhlcmUgdGhhdCBjb3VsZCBpbnRlcmFjdCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hhc19zcGxpdF9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3Q9NDkwPWVudHJ5IGNhbiBiZSBzcGxpdCBpbnRvIGVudHJpZXMgb2NjdXB5aW5nIHNtYWxsZXIgcmFuZ2VzIGJ5IGNhbGxpbmdcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdDo0OTE6eGFzX3NwbGl0X2FsbG9jKCkgd2l0aG91dCB0aGUgeGFfbG9jayBoZWxkLCBmb2xsb3dlZCBieSB0YWtpbmcgdGhlIGxvY2tcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdC00OTItYW5kIGNhbGxpbmcgeGFzX3NwbGl0KCkgb3IgY2FsbGluZyB4YXNfdHJ5X3NwbGl0KCkgd2l0aCB4YV9sb2NrLiBUaGVcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdDo0OTM6ZGlmZmVyZW5jZSBiZXR3ZWVuIHhhc19zcGxpdF9hbGxvYygpJiM0Mzt4YXNfc3BsaXQoKSBhbmQgeGFzX3RyeV9hbGxvYygpIGlzXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3Q6NDk0OnRoYXQgeGFzX3NwbGl0X2FsbG9jKCkgJiM0MzsgeGFzX3NwbGl0KCkgc3BsaXQgdGhlIGVudHJ5IGZyb20gdGhlIG9yaWdpbmFsXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3QtNDk1LW9yZGVyIHRvIHRoZSBuZXcgb3JkZXIgaW4gb25lIHNob3QgdW5pZm9ybWx5LCB3aGVyZWFzIHhhc190cnlfc3BsaXQoKVxuLS1cbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdD00OTc9Rm9yIGV4YW1wbGUsIHRvIHNwbGl0IGFuIG9yZGVyLTkgZW50cnksIHdoaWNoIHRha2VzIDJeKDktNik9OCBzbG90cyxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdDo0OTg6YXNzdW1pbmcgYGBYQV9DSFVOS19TSElGVGBgIGlzIDYsIHhhc19zcGxpdF9hbGxvYygpICYjNDM7IHhhc19zcGxpdCgpIG5lZWRcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdC00OTktOCB4YV9ub2RlLiB4YXNfdHJ5X3NwbGl0KCkgc3BsaXRzIHRoZSBvcmRlci05IGVudHJ5IGludG9cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0PTM0NT1YQXJyYXnmnInog73lipvlsIblpJrkuKrntKLlvJXogZTns7vlnKjkuIDotbfvvIzlm6DmraTlr7nkuIDkuKrntKLlvJXnmoTmk43kvZzkvJrlvbHlk43liLDmiYDmnInnmoTntKLlvJXjgILkvovlpoLvvIzlrZjlgqjliLDku7vkvZXntKLlvJXlsIZcdWZmZmRcdWZmZmQuLi5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0LTM2Mi3lnKjkuIDkuKrlpJrntKLlvJXmnaHnm67nmoTku7vkvZXkuIDkuKrntKLlvJXkuK3lrZjlgqggYGBOVUxMYGAg77yM5bCG5oqK5q+P5Liq57Si5byV55qE5p2h55uu6K6+572u5Li6IGBgTlVMTGBgIO+8jOW5tuino+mZpOe7keWumuOAgumAmui/h+iwg1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkveGFycmF5LnJzdDozNjM655SoeGFzX3NwbGl0X2FsbG9jKCnvvIzlnKjmsqHmnIl4YV9sb2Nr55qE5oOF5Ya15LiL77yM5Y+v5Lul5bCG5LiA5Liq5aSa57Si5byV5p2h55uu5YiG5Ymy5oiQ5Y2g5o2u6L6D5bCP6IyD5Zu055qE5p2h55uu77yM54S25ZCO5YaN5Y+W6ZSB5bm2XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0LTM2NC3osIPnlKh4YXNfc3BsaXQoKeOAglxuLS1cbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oPTM2ND1zdGF0aWMgaW5saW5lIHZvaWQgbWFwcGluZ19zZXRfZ2ZwX21hc2soc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm0sIGdmcF90IG1hc2spXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmgtMzgyLS8qXG5pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaDozODM6ICogeGFzX3NwbGl0X2FsbG9jKCkgZG9lcyBub3Qgc3VwcG9ydCBhcmJpdHJhcnkgb3JkZXJzLiBUaGlzIGltcGxpZXMgbm9cbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oLTM4NC0gKiA1MTJNQiBUSFAgb24gQVJNNjQgd2l0aCA2NEtCIGJhc2UgcGFnZSBzaXplLlxuLS1cbmluY2x1ZGUvbGludXgveGFycmF5Lmg9MTU2Mj12b2lkIHhhc19zcGxpdChzdHJ1Y3QgeGFfc3RhdGUgKiwgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlcik7XG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oOjE1NjM6dm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICosIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsIGdmcF90KTtcbmluY2x1ZGUvbGludXgveGFycmF5LmgtMTU2NC12b2lkIHhhc190cnlfc3BsaXQoc3RydWN0IHhhX3N0YXRlICp4YXMsIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIpO1xuLS1cbmluY2x1ZGUvbGludXgveGFycmF5Lmg9MTU3Nz1zdGF0aWMgaW5saW5lIHZvaWQgeGFzX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB2b2lkICplbnRyeSxcbi0tXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oLTE1ODItXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oOjE1ODM6c3RhdGljIGlubGluZSB2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oLTE1ODQtXHRcdHVuc2lnbmVkIGludCBvcmRlciwgZ2ZwX3QgZ2ZwKVxuLS1cbmxpYi90ZXN0X3hhcnJheS5jPTE4MzY9c3RhdGljIHZvaWQgY2hlY2tfc3BsaXRfMShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCxcbi0tXG5saWIvdGVzdF94YXJyYXkuYy0xODQ1LVxubGliL3Rlc3RfeGFycmF5LmM6MTg0NjpcdHhhc19zcGxpdF9hbGxvYyhcdTAwMjZ4YXMsIHhhLCBvcmRlciwgR0ZQX0tFUk5FTCk7XG5saWIvdGVzdF94YXJyYXkuYy0xODQ3LVx0eGFzX2xvY2soXHUwMDI2eGFzKTtcbi0tXG5saWIveGFycmF5LmM9MTAxMT1zdGF0aWMgdm9pZCBfX3hhc19pbml0X25vZGVfZm9yX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLFxuLS1cbmxpYi94YXJyYXkuYy0xMDMxLS8qKlxubGliL3hhcnJheS5jOjEwMzI6ICogeGFzX3NwbGl0X2FsbG9jKCkgLSBBbGxvY2F0ZSBtZW1vcnkgZm9yIHNwbGl0dGluZyBhbiBlbnRyeS5cbmxpYi94YXJyYXkuYy0xMDMzLSAqIEB4YXM6IFhBcnJheSBvcGVyYXRpb24gc3RhdGUuXG4tLVxubGliL3hhcnJheS5jLTEwNDQtICovXG5saWIveGFycmF5LmM6MTA0NTp2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlcixcbmxpYi94YXJyYXkuYy0xMDQ2LVx0XHRnZnBfdCBnZnApXG4tLVxubGliL3hhcnJheS5jLTEwNzUtfVxubGliL3hhcnJheS5jOjEwNzY6RVhQT1JUX1NZTUJPTF9HUEwoeGFzX3NwbGl0X2FsbG9jKTtcbmxpYi94YXJyYXkuYy0xMDc3LVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9Mzc5OT1zdGF0aWMgaW50IF9fc3BsaXRfdW5tYXBwZWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5ld19vcmRlcixcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM4MjMtXHRcdFx0Lypcbm1tL2h1Z2VfbWVtb3J5LmM6MzgyNDpcdFx0XHQgKiB1bmlmb3JtIHNwbGl0IGhhcyB4YXNfc3BsaXRfYWxsb2MoKSBjYWxsZWQgYmVmb3JlXG5tbS9odWdlX21lbW9yeS5jLTM4MjUtXHRcdFx0ICogaXJxIGlzIGRpc2FibGVkIHRvIGFsbG9jYXRlIGVub3VnaCBtZW1vcnksIHdoZXJlYXNcbi0tXG5tbS9odWdlX21lbW9yeS5jPTQxMDI9c3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00MTgzLVx0XHRcdHhhc19zZXRfb3JkZXIoXHUwMDI2eGFzLCBmb2xpby1cdTAwM2VpbmRleCwgbmV3X29yZGVyKTtcbm1tL2h1Z2VfbWVtb3J5LmM6NDE4NDpcdFx0XHR4YXNfc3BsaXRfYWxsb2MoXHUwMDI2eGFzLCBmb2xpbywgb2xkX29yZGVyLCBnZnApO1xubW0vaHVnZV9tZW1vcnkuYy00MTg1LVx0XHRcdGlmICh4YXNfZXJyb3IoXHUwMDI2eGFzKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM4OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZvbGlvIFNwbGl0dGluZyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGB4YXNfc3BsaXRfYWxsb2NgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgY2FsbGVkIGZyb20gYF9fZm9saW9fc3BsaXRgLiBUaGUgcGF0Y2ggaXMgYWRkaW5nIGBfX0dGUF9BQ0NPVU5UYCB0byBgZ2ZwYCB3aXRoaW4gYHhhc19zcGxpdF9hbGxvY2AgaWYgYHhhcy0mZ3Q7eGEtJmd0O3hhX2ZsYWdzYCBoYXMgYFhBX0ZMQUdTX0FDQ09VTlRgIHNldC4gVGhpcyBtYWtlcyBzZW5zZTsgaXQgYXBwZWFycyB3ZSYjMzk7cmUgZW5hYmxpbmcgbWVtY2cgYWNjb3VudGluZyBkdXJpbmcgdGhlIHNwbGl0IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gVGhlIG90aGVyIGNyaXRpY2FsIHBpZWNlIGlzIHRoYXQgdGhlIGNvZGUgc3dpdGNoZXMgdG8gdGhlIGZvbGlvJiMzOTtzIG1lbWNnIHdpdGhpbiBgX19mb2xpb19zcGxpdGAgKmJlZm9yZSogY2FsbGluZyBgeGFzX3NwbGl0X2FsbG9jYC4gVGhpcyBjb25maXJtcyBtZW1jZyBhc3NvY2lhdGlvbiBpcyBoYXBwZW5pbmcgYXQgdGhlIHJpZ2h0IHBvaW50LgoKU28sIGBfX2ZvbGlvX3NwbGl0YCBhbmQgYHhhc19zcGxpdF9hbGxvY2AgYXJlIHRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHRoaXMgcGF0Y2guIFdhaXQsIGBfX2ZvbGlvX3NwbGl0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gbG9vayB1cHN0cmVhbSBhdCBpdHMgY2FsbGVycyBhbmQgdGhlIG5vbi1zdGF0aWMgY291bnRlcnBhcnRzIGxpa2UgYGZvbGlvX3NwbGl0YCBhbmQgYGZvbGlvX3NwbGl0X3VubWFwcGVkYCBhbmQgbWF5YmUgYWxzbyBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAuIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCBpcyBhbHNvIG5vdCBzdGF0aWMuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBpbnNwZWN0IGBmb2xpb19zcGxpdGAsIGBmb2xpb19zcGxpdF91bm1hcHBlZGAsIGFuZCBgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD0zOTg9ZW51bSBzcGxpdF90eXBlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MDItXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MDM6aW50IF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MDQtXHRcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpO1xuLS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTQxMD1pbnQgZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlciwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDEyLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6NDEzOnN0YXRpYyBpbmxpbmUgaW50IHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE0LVx0XHR1bnNpZ25lZCBpbnQgbmV3X29yZGVyKVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE1LXtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjQxNjpcdHJldHVybiBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHBhZ2UsIGxpc3QsIG5ld19vcmRlcik7XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MTctfVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDE4PXN0YXRpYyBpbmxpbmUgaW50IHNwbGl0X2h1Z2VfcGFnZV90b19vcmRlcihzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG5ld19vcmRlcilcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQxOS17XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MjA6XHRyZXR1cm4gc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIocGFnZSwgTlVMTCwgbmV3X29yZGVyKTtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQyMS19XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDIzPXN0YXRpYyBpbmxpbmUgaW50IHNwbGl0X2h1Z2VfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQyNC17XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MjU6XHRyZXR1cm4gc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIocGFnZSwgTlVMTCwgMCk7XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MjYtfVxuLS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTY0NT1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6NjQ2OnNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNjQ3LVx0XHR1bnNpZ25lZCBpbnQgbmV3X29yZGVyKVxuLS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTgyNj1zdGF0aWMgaW5saW5lIGludCBzcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyKVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtODI3LXtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjgyODpcdHJldHVybiBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcihcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBOVUxMLCBuZXdfb3JkZXIpO1xuaW5jbHVkZS9saW51eC9odWdlX21tLmgtODI5LX1cbi0tXG5tbS9odWdlX21lbW9yeS5jPTQzMjA9aW50IGZvbGlvX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00Mzg2LSAqL1xubW0vaHVnZV9tZW1vcnkuYzo0Mzg3OmludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxubW0vaHVnZV9tZW1vcnkuYy00Mzg4LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbmV3X29yZGVyKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDQwNC0gKiBJdCBoYXMgdGhlIHNhbWUgcHJlcmVxdWlzaXRlcyBhbmQgcmV0dXJucyBhc1xubW0vaHVnZV9tZW1vcnkuYzo0NDA1OiAqIHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKCkuXG5tbS9odWdlX21lbW9yeS5jLTQ0MDYtICpcbi0tXG5tbS9odWdlX21lbW9yeS5jPTQ0NTQ9aW50IHNwbGl0X2ZvbGlvX3RvX2xpc3Qoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IGxpc3RfaGVhZCAqbGlzdClcbm1tL2h1Z2VfbWVtb3J5LmMtNDQ1NS17XG5tbS9odWdlX21lbW9yeS5jOjQ0NTY6XHRyZXR1cm4gc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSwgbGlzdCwgMCk7XG5tbS9odWdlX21lbW9yeS5jLTQ0NTctfVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9NDc0MD1zdGF0aWMgaW50IHNwbGl0X2h1Z2VfcGFnZXNfcGlkKGludCBwaWQsIHVuc2lnbmVkIGxvbmcgdmFkZHJfc3RhcnQsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00ODA5LVx0XHQvKlxubW0vaHVnZV9tZW1vcnkuYzo0ODEwOlx0XHQgKiBGb3IgZm9saW9zIHdpdGggcHJpdmF0ZSwgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoKVxubW0vaHVnZV9tZW1vcnkuYy00ODExLVx0XHQgKiB3aWxsIHRyeSB0byBkcm9wIGl0IGJlZm9yZSBzcGxpdCBhbmQgdGhlbiBjaGVjayBpZiB0aGUgZm9saW9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQwNzUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZvbGlvIFNwbGl0dGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gZm9saW8gc3BsaXR0aW5nLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgZm9saW9fc3BsaXRgIGFuZCBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgdGhpcywgYWxvbmcgd2l0aCBgeGFzX3NwbGl0X2FsbG9jYCwgd2hpY2ggaXMgYWxzbyBleHBvcnRlZC4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuCgpGaXJzdCwgbGV0JiMzOTtzIGNoZWNrIGZvciB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSXQmIzM5O3MgY2xlYXIgdGhhdCBgQ09ORklHX01FTUNHYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBhbmQgc28gaXMgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEdvb2QsIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBjb25jZXJuIG15c2VsZiB3aXRoLgoKQXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkga25vdyBgbGliL3hhcnJheS5jYCBpcyBhbHdheXMgY29tcGlsZWQuIEhvd2V2ZXIsIGBtbS9odWdlX21lbW9yeS5jYCByZXF1aXJlcyBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCwgd2hpY2ggaXMgd2hhdCBJIGFscmVhZHkgbm90ZWQuCgpUaGVyZWZvcmUsIGZvciBlbmFibGluZyB0aGUgZnVuY3Rpb25hbGl0eSwgSSBuZWVkIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBNRU1DR2AuIE15IGZvY3VzLCB0aG91Z2gsIHdpbGwgcmVtYWluIG9uIHRoZSBrZXkgc3ltYm9scyBvZiBpbnRlcmVzdDogYGZvbGlvX3NwbGl0YCwgYF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgLCBhbmQgYHhhc19zcGxpdF9hbGxvY2AuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGZvbGlvX3NwbGl0YCBhbmQgYF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgIGFyZSwgaW5kZWVkLCBleHBvcnRlZCBvciBhdCBsZWFzdCBub24tc3RhdGljLiBZZXMsIHRoZXkgYXJlIGluIGBtbS9odWdlX21lbW9yeS5jYC4gT2theSwgdGhhdCBjb25maXJtcyBteSBpbml0aWFsIGFzc3VtcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmZvbGlvX3NwbGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NzkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBFeHBvcnQgU3RhdHVzIGZvciBGdXp6aW5nKioKCkhtbSwgSSYjMzk7bSBqdXN0IGxvb2tpbmcgYXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgc2V0IHVwIGluIHRoZSBjb2RlLCBhbmQgSSBzZWUgdGhhdCBgZm9saW9fc3BsaXRgIGlzbiYjMzk7dCBhY3R1YWxseSBleHBvcnRlZC4gVGhhdCBpbml0aWFsbHkgZ2F2ZSBtZSBwYXVzZSwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGZvciBmdXp6aW5nLCBpdCBkb2VzbiYjMzk7dCBtYXR0ZXIgKnRvbyogbXVjaCBpZiBzb21ldGhpbmcmIzM5O3MgcHVibGljbHkgYXZhaWxhYmxlLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIG5vbi1zdGF0aWMgbWVhbnMgSSBjYW4gcHJvYmFibHkgc3RpbGwgZ2V0IGF0IGl0IGlmIEkgZGlnIGEgYml0LiBHb29kLCB0aGF0JiMzOTtzIHdvcmthYmxlIGZvciB0aGUgZnV6emluZyBJJiMzOTttIHBsYW5uaW5nLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYC4gSXMgKnRoYXQqIGZ1bmN0aW9uIGV4cG9ydGVkPyBJZiBpdCBpcywgYW5kIEkgY2FuIHVzZSBpdCwgdGhhdCYjMzk7cyBwb3RlbnRpYWxseSBldmVuIGJldHRlci4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMgYW5kIGxvb2sgaXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTYzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgYSBGdW5jdGlvbiYjMzk7cyBFeHBvcnQgU3RhdHVzKioKCkFscmlnaHQsIHRoYXQgc291bmRzIHBlcmZlY3RseSBhY2NlcHRhYmxlLCBubyBpbW1lZGlhdGUgY29uY2VybnMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSBhIHNwZWNpZmljIGRldGFpbCwgcGFydGljdWxhcmx5IGNvbmNlcm5pbmcgdGhlIGZ1bmN0aW9uIGBmb2xpb19zcGxpdF91bm1hcHBlZGAuIEkgbmVlZCB0byBjb25maXJtIGl0cyBhdmFpbGFiaWxpdHksIHNwZWNpZmljYWxseSB3aGV0aGVyIG9yIG5vdCBpdCYjMzk7cyBiZWVuIGV4cG9ydGVkIGFuZCBpcyB0aGVyZWZvcmUgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgb3IgbW9kdWxlIEkmIzM5O20gd29ya2luZyB3aXRoLiBUaGlzIGlzIGEgY29tbW9uIGFuZCBxdWljayBzYW5pdHkgY2hlY2sgSSBvZnRlbiBwZXJmb3JtIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgdXNpbmcgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uOyBlbnN1cmluZyBpdHMgZXhwb3J0IGlzIGNyaXRpY2FsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmZvbGlvX3NwbGl0X3VubWFwcGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUxNDkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzczoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBhIFF1aWNrIENoZWNrKioKClRoYXQmIzM5O3MgZmluZS4gQWxyaWdodCwgbm8gaW1tZWRpYXRlIGNvbmNlcm5zIG9yIHJlZCBmbGFncy4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55dGhpbmcgZWxzZSwgSSBuZWVkIHRvIG1ha2UgYSBxdWljayB2ZXJpZmljYXRpb24uIExldCYjMzk7cyBjaGVjayBpZiB0aGUgZnVuY3Rpb24gYHhhc19zcGxpdF9hbGxvY2AgaXMgcHJvcGVybHkgZXhwb3J0ZWQgYW5kIGFjY2Vzc2libGUuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwcmVyZXF1aXNpdGUgZm9yIHdoYXRldmVyIGZvbGxvd3MsIHNvIGxldCYjMzk7cyBnZXQgdGhhdCB2YWxpZGF0aW9uIG91dCBvZiB0aGUgd2F5IGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLip4YXNfc3BsaXRfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3hhcnJheS5jPTEwNDU9dm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICp4YXMsIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubGliL3hhcnJheS5jLTEwNzUtfVxubGliL3hhcnJheS5jOjEwNzY6RVhQT1JUX1NZTUJPTF9HUEwoeGFzX3NwbGl0X2FsbG9jKTtcbmxpYi94YXJyYXkuYy0xMDc3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM5NQoJCQkJCQkJb3V0cHV0OiAxMTgKCQkJCQkJCXRob3VnaHRzOiAxNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBGb2xpbyBTcGxpdHRpbmcgUGF0Y2gqKgoKQWxyaWdodCwgSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBhbmQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGZvbGlvIHNwbGl0dGluZywgc3BlY2lmaWNhbGx5IGhvdyB3ZSBhY2NvdW50IGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgd2l0aGluIGEgbWVtb3J5IGNncm91cCBkdXJpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBjcml0aWNhbCDigJMgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZnVuZGFtZW50YWwgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMsIGFuZCBpdCYjMzk7cyB0cmlnZ2VyZWQgd2hlbiBhIGh1Z2UgcGFnZSBpcyBzcGxpdC4gU291bmRzIGxpa2UgYSBjb3JlIGlzc3VlLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB0aGUgaW1wb3J0YW50IGBFbmFibGVDb25maWdzYCBhcmUgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYE1FTUNHYC4gQW5kIHRoZSBrZXkgYEZvY3VzU3ltYm9sc2AgbG9vayBsaWtlIGBmb2xpb19zcGxpdGAsIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCwgYW5kIGB4YXNfc3BsaXRfYWxsb2NgLiBUaG9zZSBmdW5jdGlvbnMgZGVmaW5pdGVseSByaW5nIGEgYmVsbCBhcyBjcml0aWNhbCBwb2ludHMgaW4gdGhlIHNwbGl0dGluZyBwcm9jZXNzLgoKUXVpY2sgZG91YmxlLWNoZWNrOiBgQ09ORklHX01FTUNHYCBkZXBlbmRzIG9uIGBDT05GSUdfQ0dST1VQU2AsIGJ1dCBgQ09ORklHX01FTUNHYCBzaG91bGQgYmUgc3VmZmljaWVudCBvbiBpdHMgb3duLCBhbmQgdGhlIHNhbWUgZ29lcyBmb3IgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIE5vIG5lZWQgdG8gZ2V0IG1vcmUgZ3JhbnVsYXIgdGhhbiBuZWNlc3NhcnkuIE9rYXksIHRoZSBjb25maWdzIGFyZSBhcyBleHBlY3RlZC4KCkkgYW0gc2F0aXNmaWVkIGFuZCByZWFkeSB0byBzZXQgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm9saW9fc3BsaXQmIzM0OywKICAgICYjMzQ7X19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICAgJiMzNDt4YXNfc3BsaXRfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8mIzM5O3MgbWVtb3J5IGNncm91cCBkdXJpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGh1Z2UgcGFnZSBzcGxpdHRpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O01FTUNHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm9saW9fc3BsaXQmIzM0OywKICAgICYjMzQ7X19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7LAogICAgJiMzNDt4YXNfc3BsaXRfYWxsb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8mIzM5O3MgbWVtb3J5IGNncm91cCBkdXJpbmcgeGFycmF5IG5vZGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIGh1Z2UgcGFnZSBzcGxpdHRpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjoxOC4wNzQ2MDgzOThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODA1NTg4ODg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiTUVNQ0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmb2xpb19zcGxpdFwiLFxuICAgIFwiX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlclwiLFxuICAgIFwieGFzX3NwbGl0X2FsbG9jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8ncyBtZW1vcnkgY2dyb3VwIGR1cmluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgaHVnZSBwYWdlIHNwbGl0dGluZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MTguMDc0NjEzNTE4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTI4ODEyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5MDhkZjExZDYzYzYzOTkyYjc2OWMzODZmZmQxODM0NTQxNmIyYTBkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MDI6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbGliL3hhcnJheS5jIGIvbGliL3hhcnJheS5jXFxuaW5kZXggOWE4YjQ5MTY1NDBjZi4uYmZlN2JlZjgwZjM0ZSAxMDA2NDRcXG4tLS0gYS9saWIveGFycmF5LmNcXG4rKysgYi9saWIveGFycmF5LmNcXG5AQCAtMTA1Myw2ICsxMDUzLDkgQEAgdm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICp4YXMsIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuIFxcdGlmICh4YXMtXFx1MDAzZXhhX3NoaWZ0ICsgWEFfQ0hVTktfU0hJRlQgXFx1MDAzZSBvcmRlcilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0aWYgKHhhcy1cXHUwMDNleGEtXFx1MDAzZXhhX2ZsYWdzIFxcdTAwMjYgWEFfRkxBR1NfQUNDT1VOVClcXG4rXFx0XFx0Z2ZwIHw9IF9fR0ZQX0FDQ09VTlQ7XFxuK1xcbiBcXHRkbyB7XFxuIFxcdFxcdHN0cnVjdCB4YV9ub2RlICpub2RlO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcXG5pbmRleCAyMWM5MmVlNDhlNDY5Li44MDRiOGY2YWE1NTcwIDEwMDY0NFxcbi0tLSBhL21tL2h1Z2VfbWVtb3J5LmNcXG4rKysgYi9tbS9odWdlX21lbW9yeS5jXFxuQEAgLTQxMDYsMzQgKzQxMDYsNDIgQEAgc3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuIFxcdFhBX1NUQVRFKHhhcywgXFx1MDAyNmZvbGlvLVxcdTAwM2VtYXBwaW5nLVxcdTAwM2VpX3BhZ2VzLCBmb2xpby1cXHUwMDNlaW5kZXgpO1xcbiBcXHRzdHJ1Y3QgZm9saW8gKmVuZF9mb2xpbyA9IGZvbGlvX25leHQoZm9saW8pO1xcbiBcXHRib29sIGlzX2Fub24gPSBmb2xpb190ZXN0X2Fub24oZm9saW8pO1xcbitcXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csICpvbGRfbWVtY2c7XFxuIFxcdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gTlVMTDtcXG4gXFx0c3RydWN0IGFub25fdm1hICphbm9uX3ZtYSA9IE5VTEw7XFxuIFxcdGludCBvbGRfb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XFxuIFxcdHN0cnVjdCBmb2xpbyAqbmV3X2ZvbGlvLCAqbmV4dDtcXG4gXFx0aW50IG5yX3NobWVtX2Ryb3BwZWQgPSAwO1xcbiBcXHRlbnVtIHR0dV9mbGFncyB0dHVfZmxhZ3MgPSAwO1xcbi1cXHRpbnQgcmV0O1xcbiBcXHRwZ29mZl90IGVuZCA9IDA7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbG9ja2VkKGZvbGlvKSwgZm9saW8pO1xcbiBcXHRWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pLCBmb2xpbyk7XFxuIFxcbiBcXHRpZiAoZm9saW8gIT0gcGFnZV9mb2xpbyhzcGxpdF9hdCkgfHwgZm9saW8gIT0gcGFnZV9mb2xpbyhsb2NrX2F0KSkge1xcbiBcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0Z290byBvdXRfbm9fbWVtY2c7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChuZXdfb3JkZXIgXFx1MDAzZT0gb2xkX29yZGVyKSB7XFxuIFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHRnb3RvIG91dF9ub19tZW1jZztcXG4gXFx0fVxcbiBcXG4gXFx0cmV0ID0gZm9saW9fY2hlY2tfc3BsaXR0YWJsZShmb2xpbywgbmV3X29yZGVyLCBzcGxpdF90eXBlKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRWTV9XQVJOX09OQ0UocmV0ID09IC1FSU5WQUwsIFxcXCJUcmllZCB0byBzcGxpdCBhbiB1bnNwbGl0dGFibGUgZm9saW9cXFwiKTtcXG4tXFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdGdvdG8gb3V0X25vX21lbWNnO1xcbiBcXHR9XFxuIFxcbitcXHQvKlxcbitcXHQgKiBzd2l0Y2ggdG8gZm9saW8ncyBtZW1jZyBhcyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uIGNhbiBoYXBwZW4gYW5kXFxuK1xcdCAqIG5lZWRzIHRvIGNoYXJnZSB0byBpdC5cXG4rXFx0ICovXFxuK1xcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxuK1xcdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xcbitcXG4gXFx0aWYgKGlzX2Fub24pIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogVGhlIGNhbGxlciBkb2VzIG5vdCBuZWNlc3NhcmlseSBob2xkIGFuIG1tYXBfbG9jayB0aGF0IHdvdWxkXFxuQEAgLTQyNzYsNiArNDI4NCwxMCBAQCBzdGF0aWMgaW50IF9fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcXG4gXFx0aWYgKG1hcHBpbmcpXFxuIFxcdFxcdGlfbW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTtcXG4gb3V0OlxcbitcXHQvKiByZXN0b3JlIHRvIGNhbGxlcidzIG9sZF9tZW1jZyAqL1xcbitcXHRzZXRfYWN0aXZlX21lbWNnKG9sZF9tZW1jZyk7XFxuK1xcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcXG4rb3V0X25vX21lbWNnOlxcbiBcXHR4YXNfZGVzdHJveShcXHUwMDI2eGFzKTtcXG4gXFx0aWYgKGlzX3BtZF9vcmRlcihvbGRfb3JkZXIpKVxcbiBcXHRcXHRjb3VudF92bV9ldmVudCghcmV0ID8gVEhQX1NQTElUX1BBR0UgOiBUSFBfU1BMSVRfUEFHRV9GQUlMRUQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjoxOC40ODgyNTg5MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NzY0MjIyNjg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiTUVNQ0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmb2xpb19zcGxpdFwiLFxuICAgIFwiX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlclwiLFxuICAgIFwieGFzX3NwbGl0X2FsbG9jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgY2hhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0aGUgZm9saW8ncyBtZW1vcnkgY2dyb3VwIGR1cmluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgaHVnZSBwYWdlIHNwbGl0dGluZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTA4ZGYxMWQ2M2M2Mzk5MmI3NjljMzg2ZmZkMTgzNDU0MTZiMmEwZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MDI6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9saWIveGFycmF5LmMgYi9saWIveGFycmF5LmNcbmluZGV4IDlhOGI0OTE2NTQwY2YuLmJmZTdiZWY4MGYzNGUgMTAwNjQ0XG4tLS0gYS9saWIveGFycmF5LmNcbisrKyBiL2xpYi94YXJyYXkuY1xuQEAgLTEwNTMsNiArMTA1Myw5IEBAIHZvaWQgeGFzX3NwbGl0X2FsbG9jKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB2b2lkICplbnRyeSwgdW5zaWduZWQgaW50IG9yZGVyLFxuIFx0aWYgKHhhcy1cdTAwM2V4YV9zaGlmdCArIFhBX0NIVU5LX1NISUZUIFx1MDAzZSBvcmRlcilcbiBcdFx0cmV0dXJuO1xuIFxuK1x0aWYgKHhhcy1cdTAwM2V4YS1cdTAwM2V4YV9mbGFncyBcdTAwMjYgWEFfRkxBR1NfQUNDT1VOVClcbitcdFx0Z2ZwIHw9IF9fR0ZQX0FDQ09VTlQ7XG4rXG4gXHRkbyB7XG4gXHRcdHN0cnVjdCB4YV9ub2RlICpub2RlO1xuIFxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXG5pbmRleCAyMWM5MmVlNDhlNDY5Li44MDRiOGY2YWE1NTcwIDEwMDY0NFxuLS0tIGEvbW0vaHVnZV9tZW1vcnkuY1xuKysrIGIvbW0vaHVnZV9tZW1vcnkuY1xuQEAgLTQxMDYsMzQgKzQxMDYsNDIgQEAgc3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4gXHRYQV9TVEFURSh4YXMsIFx1MDAyNmZvbGlvLVx1MDAzZW1hcHBpbmctXHUwMDNlaV9wYWdlcywgZm9saW8tXHUwMDNlaW5kZXgpO1xuIFx0c3RydWN0IGZvbGlvICplbmRfZm9saW8gPSBmb2xpb19uZXh0KGZvbGlvKTtcbiBcdGJvb2wgaXNfYW5vbiA9IGZvbGlvX3Rlc3RfYW5vbihmb2xpbyk7XG4rXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csICpvbGRfbWVtY2c7XG4gXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IE5VTEw7XG4gXHRzdHJ1Y3QgYW5vbl92bWEgKmFub25fdm1hID0gTlVMTDtcbiBcdGludCBvbGRfb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XG4gXHRzdHJ1Y3QgZm9saW8gKm5ld19mb2xpbywgKm5leHQ7XG4gXHRpbnQgbnJfc2htZW1fZHJvcHBlZCA9IDA7XG4gXHRlbnVtIHR0dV9mbGFncyB0dHVfZmxhZ3MgPSAwO1xuLVx0aW50IHJldDtcbiBcdHBnb2ZmX3QgZW5kID0gMDtcbitcdGludCByZXQ7XG4gXG4gXHRWTV9XQVJOX09OX09OQ0VfRk9MSU8oIWZvbGlvX3Rlc3RfbG9ja2VkKGZvbGlvKSwgZm9saW8pO1xuIFx0Vk1fV0FSTl9PTl9PTkNFX0ZPTElPKCFmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSwgZm9saW8pO1xuIFxuIFx0aWYgKGZvbGlvICE9IHBhZ2VfZm9saW8oc3BsaXRfYXQpIHx8IGZvbGlvICE9IHBhZ2VfZm9saW8obG9ja19hdCkpIHtcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4rXHRcdGdvdG8gb3V0X25vX21lbWNnO1xuIFx0fVxuIFxuIFx0aWYgKG5ld19vcmRlciBcdTAwM2U9IG9sZF9vcmRlcikge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfbm9fbWVtY2c7XG4gXHR9XG4gXG4gXHRyZXQgPSBmb2xpb19jaGVja19zcGxpdHRhYmxlKGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X3R5cGUpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRWTV9XQVJOX09OQ0UocmV0ID09IC1FSU5WQUwsIFwiVHJpZWQgdG8gc3BsaXQgYW4gdW5zcGxpdHRhYmxlIGZvbGlvXCIpO1xuLVx0XHRnb3RvIG91dDtcbitcdFx0Z290byBvdXRfbm9fbWVtY2c7XG4gXHR9XG4gXG4rXHQvKlxuK1x0ICogc3dpdGNoIHRvIGZvbGlvJ3MgbWVtY2cgYXMgeGFycmF5IG5vZGUgYWxsb2NhdGlvbiBjYW4gaGFwcGVuIGFuZFxuK1x0ICogbmVlZHMgdG8gY2hhcmdlIHRvIGl0LlxuK1x0ICovXG4rXHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW8oZm9saW8pO1xuK1x0b2xkX21lbWNnID0gc2V0X2FjdGl2ZV9tZW1jZyhtZW1jZyk7XG4rXG4gXHRpZiAoaXNfYW5vbikge1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgY2FsbGVyIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGhvbGQgYW4gbW1hcF9sb2NrIHRoYXQgd291bGRcbkBAIC00Mjc2LDYgKzQyODQsMTAgQEAgc3RhdGljIGludCBfX2ZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4gXHRpZiAobWFwcGluZylcbiBcdFx0aV9tbWFwX3VubG9ja19yZWFkKG1hcHBpbmcpO1xuIG91dDpcbitcdC8qIHJlc3RvcmUgdG8gY2FsbGVyJ3Mgb2xkX21lbWNnICovXG4rXHRzZXRfYWN0aXZlX21lbWNnKG9sZF9tZW1jZyk7XG4rXHRtZW1fY2dyb3VwX3B1dChtZW1jZyk7XG4rb3V0X25vX21lbWNnOlxuIFx0eGFzX2Rlc3Ryb3koXHUwMDI2eGFzKTtcbiBcdGlmIChpc19wbWRfb3JkZXIob2xkX29yZGVyKSlcbiBcdFx0Y291bnRfdm1fZXZlbnQoIXJldCA/IFRIUF9TUExJVF9QQUdFIDogVEhQX1NQTElUX1BBR0VfRkFJTEVEKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjE4LjQ4ODI2MDUzM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NTM3ODcyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgYW5kIEZ1enppbmcgYSBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGFjdHVhbGx5IGRvaW5nIGFueXRoaW5nIHdlIHNob3VsZCBiZSBjb25jZXJuZWQgYWJvdXQsIGFuZCB3aGV0aGVyIGl0J3Mgd29ydGggdGhlIGVmZm9ydCBvZiB0YXJnZXRpbmcgd2l0aCBmdXp6aW5nLiBJdCB0b3VjaGVzIGBsaWIveGFycmF5LmNgIGFuZCBgbW0vaHVnZV9tZW1vcnkuY2AsIHdoaWNoIGFsd2F5cyBjYXRjaGVzIG15IGF0dGVudGlvbi5cblxuSW4gYGxpYi94YXJyYXkuY2AsIHRoZSBwYXRjaCBtb2RpZmllcyBgeGFzX3NwbGl0X2FsbG9jYC4gSXQncyBjb25kaXRpb25hbGx5IGFkZGluZyBgX19HRlBfQUNDT1VOVGAgdG8gdGhlIGBnZnBgIGZsYWcsIGJ1dCBvbmx5IGlmIGEgc3BlY2lmaWMgZmxhZywgYFhBX0ZMQUdTX0FDQ09VTlRgLCBpcyBzZXQgaW4gdGhlIHhhcnJheS4gVGhhdOKAmXMgaW50ZXJlc3RpbmcsIGFzIGl0IGlzIHJlbGF0ZWQgdG8gbWVtb3J5IGFjY291bnRpbmcuXG5cblRoZW4sIGBtbS9odWdlX21lbW9yeS5jYCBoYXMgYSBjaGFuZ2UgdG8gYF9fZm9saW9fc3BsaXRgLiBJdCBhcHBlYXJzIHRvIGJlIHN3aXRjaGluZyB0byB0aGUgZm9saW8ncyBtZW1jZyBiZWZvcmUgYXR0ZW1wdGluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9ucyBkdXJpbmcgYSBzcGxpdC4gVGhpcyAqZGVmaW5pdGVseSogc291bmRzIGxpa2UgYSBwb3RlbnRpYWwgcG9pbnQgb2YgY29udGVudGlvbiwgYW5kIGl0IGlzIGEgY29tbW9uIGFyZWEgdG8gY3JlYXRlIGlzc3Vlcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYm90aCBhcmUgcmVhY2hhYmxlLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIGBfX2ZvbGlvX3NwbGl0YCBpcyBkZWZpbml0ZWx5IGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSB1c2VmdWwgaW4gZnV6emluZy4gVGhlbiBgeGFzX3NwbGl0X2FsbG9jYCBsb29rcyBsaWtlIGl0IGlzIHJlYWNoYWJsZSBhcyB3ZWxsLlxuXG5Ob3csIGxldCdzIHNlZSBob3cgdGhpcyBpcyBjb25maWd1cmVkLiBUaGUgY29kZSBpbiBgbW0vaHVnZV9tZW1vcnkuY2Agb25seSBnZXRzIGNvbXBpbGVkIGlmIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGVuYWJsZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhhdCdzIHRydWUsIGJ1dCBpdCBsb29rcyBsaWtlIHdlJ3JlIGluIGJ1c2luZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQ1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MjMuMDQyMDUxNDM3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTExMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh1Z2VfbWVtb3J5Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9MTAwPW9iai0kKENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OKSArPSBtaWdyYXRlX2RldmljZS5vXFxubW0vTWFrZWZpbGU6MTAxOm9iai0kKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgKz0gaHVnZV9tZW1vcnkubyBraHVnZXBhZ2VkLm9cXG5tbS9NYWtlZmlsZS0xMDItb2JqLSQoQ09ORklHX1BBR0VfQ09VTlRFUikgKz0gcGFnZV9jb3VudGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MjMuMDg1MTc5NzU1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODE5NzYzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIGl0J3MgY2xlYXIgdGhhdCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBkZWZpbml0ZWx5IGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBtbS9odWdlX21lbW9yeS5jYCBtb2R1bGUuIFRoYXQgb25lJ3Mgc3RyYWlnaHRmb3J3YXJkLiBOb3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW9gIGFuZCBgc2V0X2FjdGl2ZV9tZW1jZ2AuIFRob3NlIGZ1bmN0aW9ucywgYmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgaGF2ZSBhIHN0cm9uZyBhc3NvY2lhdGlvbiB3aXRoIG1lbW9yeSBjb250cm9sIGdyb3Vwcywgb3IgYENPTkZJR19NRU1DR2AuIFRoZSBkZXBlbmRlbmN5IGZlZWxzIHZlcnkgbGlrZWx5LiBJJ2QgYmV0dGVyIGNvbmZpcm0gdGhhdCBgQ09ORklHX01FTUNHYCBpcywgaW4gZmFjdCwgYWxzbyBhIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIHBpY3R1cmUgYmVmb3JlIHByb2NlZWRpbmcgZnVydGhlciB3aXRoIGFueSBjaGFuZ2VzIG9yIGFuYWx5c2lzLiBJdCdzIHRpbWUgdG8gZGlnIGRlZXBlciBvbiB0aGlzIHNwZWNpZmljIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTE5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MjYuNDMzMzgwMDEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjM0MDY5MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnVmZmVyLmM9ODMyPXN0cnVjdCBidWZmZXJfaGVhZCAqZm9saW9fYWxsb2NfYnVmZmVycyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBsb25nIHNpemUsXFxuLS1cXG5mcy9idWZmZXIuYy04MzgtXFxuZnMvYnVmZmVyLmM6ODM5OlxcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxuZnMvYnVmZmVyLmMtODQwLVxcdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9NzUzPXN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbWVtX2Nncm91cF9mcm9tX2N1cnJlbnQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtNzU0LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjc1NTpzdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC03NTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xMjEwPXN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9tZW1fY2dyb3VwX2Zyb21fY3VycmVudCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTIxNC1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxMjE1OnN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xMjE2LXtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9NDEwMj1zdGF0aWMgaW50IF9fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDE0MS1cXHQgKi9cXG5tbS9odWdlX21lbW9yeS5jOjQxNDI6XFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcXG5tbS9odWdlX21lbW9yeS5jLTQxNDMtXFx0b2xkX21lbWNnID0gc2V0X2FjdGl2ZV9tZW1jZyhtZW1jZyk7XFxuLS1cXG5tbS9saXN0X2xydS5jPTYzMT1pbnQgZm9saW9fbWVtY2dfbGlzdF9scnVfYWxsb2Moc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IGxpc3RfbHJ1ICpscnUsXFxuLS1cXG5tbS9saXN0X2xydS5jLTY0OC1cXHQvKiBBbGxvY2F0aW9uIG1heSBibG9jaywgcGluIHRoZSBtZW1jZyAqL1xcbm1tL2xpc3RfbHJ1LmM6NjQ5OlxcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxubW0vbGlzdF9scnUuYy02NTAtXFx0cmVzID0gX19tZW1jZ19saXN0X2xydV9hbGxvYyhtZW1jZywgbHJ1LCBnZnApO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTMzND1zdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqZ2V0X21lbV9jZ3JvdXBfY3NzX2Zyb21fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0zNDAtXFxubW0vbWVtY29udHJvbC5jOjM0MTpcXHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW8oZm9saW8pO1xcbm1tL21lbWNvbnRyb2wuYy0zNDItXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTE5OT1zdHJ1Y3QgbWVtX2Nncm91cCAqZ2V0X21lbV9jZ3JvdXBfZnJvbV9jdXJyZW50KHZvaWQpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTIxNy0vKipcXG5tbS9tZW1jb250cm9sLmM6MTIxODogKiBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvIC0gT2J0YWluIGEgcmVmZXJlbmNlIG9uIGEgZ2l2ZW4gZm9saW8ncyBtZW1jZy5cXG5tbS9tZW1jb250cm9sLmMtMTIxOS0gKiBAZm9saW86IGZvbGlvIGZyb20gd2hpY2ggbWVtY2cgc2hvdWxkIGJlIGV4dHJhY3RlZC5cXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xMjIyLSAqL1xcbm1tL21lbWNvbnRyb2wuYzoxMjIzOnN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vbWVtY29udHJvbC5jLTEyMjQte1xcbi0tXFxubW0vbWlncmF0ZS5jPTI3NTg9aW50IG1pZ3JhdGVfbWlzcGxhY2VkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBub2RlKVxcbi0tXFxubW0vbWlncmF0ZS5jLTI3NjMtXFx0TElTVF9IRUFEKG1pZ3JhdGVwYWdlcyk7XFxubW0vbWlncmF0ZS5jOjI3NjQ6XFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxubW0vbWlncmF0ZS5jLTI3NjUtXFx0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTQyNTU9Ym9vbCBscnVfZ2VuX2xvb2tfYXJvdW5kKHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdywgdW5zaWduZWQgaW50IG5yKVxcbi0tXFxubW0vdm1zY2FuLmMtNDMwNy1cXG5tbS92bXNjYW4uYzo0MzA4OlxcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9mb2xpbyhmb2xpbyk7XFxubW0vdm1zY2FuLmMtNDMwOS1cXHRscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgcGdkYXQpO1xcbi0tXFxubW0vd29ya2luZ3NldC5jPTU0OD12b2lkIHdvcmtpbmdzZXRfcmVmYXVsdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB2b2lkICpzaGFkb3cpXFxuLS1cXG5tbS93b3JraW5nc2V0LmMtNTcyLVxcdG5yID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xcbm1tL3dvcmtpbmdzZXQuYzo1NzM6XFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvKGZvbGlvKTtcXG5tbS93b3JraW5nc2V0LmMtNTc0LVxcdGxydXZlYyA9IG1lbV9jZ3JvdXBfbHJ1dmVjKG1lbWNnLCBmb2xpb19wZ2RhdChmb2xpbykpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjoyOC4wNTY3OTI5NTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDUwNjQzNzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRm9saW8gU3BsaXQgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIGNoYW5naW5nIGBfX2ZvbGlvX3NwbGl0YCwgc3BlY2lmaWNhbGx5IHRvIHV0aWxpemUgYGdldF9tZW1fY2dyb3VwX2Zyb21fZm9saW9gLiBUaGF0J3MgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgbmV3IGNvZGUgcGF0aCBpcyBhY3R1YWxseSBhY3RpdmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkRvIHdlIHJlcXVpcmUgYENPTkZJR19NRU1DR2AgdG8gbWFrZSB0aGlzIGNoYW5nZSBtZWFuaW5nZnVsP1wiXG5cbkxldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBnZXRfbWVtX2Nncm91cF9mcm9tX2ZvbGlvYCBpbiBgaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhgLCBpdCdzIGEgc3RhdGljIGlubGluZSwgYW5kIGNydWNpYWxseSwgcmV0dXJucyBOVUxMIGlmIGBDT05GSUdfTUVNQ0dgIGlzbid0IGVuYWJsZWQuIEJpbmdvLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTUVNQ0dgIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgaGVyZSwgb3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gd2lsbCBqdXN0IGFsd2F5cyByZXR1cm4gbnVsbCBhbmQgdGhlIGNoYW5nZXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aG8gdGhlIGNhbGxlcnMgb2YgYF9fZm9saW9fc3BsaXRgIGFyZSB0byBnZXQgYSBiZXR0ZXIgY29udGV4dCBvbiB0aGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjozMi4xMDc0Mzk3MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MjMzOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19mb2xpb19zcGxpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz0zOTI2PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQwODEtLyoqXFxubW0vaHVnZV9tZW1vcnkuYzo0MDgyOiAqIF9fZm9saW9fc3BsaXQoKSAtIHNwbGl0IGEgZm9saW8gYXQgQHNwbGl0X2F0IHRvIGEgQG5ld19vcmRlciBmb2xpb1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDA4My0gKiBAZm9saW86IGZvbGlvIHRvIHNwbGl0XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQxMDEtICovXFxubW0vaHVnZV9tZW1vcnkuYzo0MTAyOnN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDEwMy1cXHRcXHRzdHJ1Y3QgcGFnZSAqc3BsaXRfYXQsIHN0cnVjdCBwYWdlICpsb2NrX2F0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00Mzg3PWludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00MzkxLVxcbm1tL2h1Z2VfbWVtb3J5LmM6NDM5MjpcXHRyZXR1cm4gX19mb2xpb19zcGxpdChmb2xpbywgbmV3X29yZGVyLCBcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UsIHBhZ2UsIGxpc3QsXFxubW0vaHVnZV9tZW1vcnkuYy00MzkzLVxcdFxcdFxcdCAgICAgU1BMSVRfVFlQRV9VTklGT1JNKTtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9NDQyMD1pbnQgZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQyMi17XFxubW0vaHVnZV9tZW1vcnkuYzo0NDIzOlxcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X2F0LCBcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UsIGxpc3QsXFxubW0vaHVnZV9tZW1vcnkuYy00NDI0LVxcdFxcdFxcdCAgICAgU1BMSVRfVFlQRV9OT05fVU5JRk9STSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjMyLjE1NTI2OTIwN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTk4ODY2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRm9saW8gU3BsaXR0aW5nIEFQSSBVc2FnZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgbWluZCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgYF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgIGFuZCBgZm9saW9fc3BsaXRgIGZ1bmN0aW9ucy4gVGhlIGZhY3QgdGhhdCBib3RoIG9mIHRoZXNlIGZ1bmN0aW9ucywgZXNwZWNpYWxseSBgZm9saW9fc3BsaXRgLCBkaXJlY3RseSBjYWxsIGBfX2ZvbGlvX3NwbGl0YCBpcyBpbnRlcmVzdGluZy4gSSdtIG5vdGluZyB0aGF0IGBmb2xpb19zcGxpdGAgaXMgYW4gQVBJIGZ1bmN0aW9uLCBtZWFuaW5nIGl0J3MgbGlrZWx5IGEgcHVibGljIGVudHJ5IHBvaW50LCBhdCBsZWFzdCBpbnRlcm5hbGx5LCBmb3IgbWFuaXB1bGF0aW5nIGZvbGlvcy4gVGhpcyBzdWdnZXN0cyBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIG9yIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWd5LiBUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBpZGVudGlmeSBhbGwgdGhlIHBvdGVudGlhbCBjYWxsZXJzIG9mIGBmb2xpb19zcGxpdGAuIFVuZGVyc3RhbmRpbmcgd2hlcmUgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IGluc2lnaHQgaW50byBpdHMgb3ZlcmFsbCByb2xlIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQncyBkaWcgaW50byB0aGF0IGNhbGwgZ3JhcGggYW5kIHNlZSB3aG8ncyBpbnZva2luZyB0aGlzIEFQSS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxOCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjM1LjIxNTE1Nzg3MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MTkyMDU1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19zcGxpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTM0OD1zdGF0aWMgdm1fZmF1bHRfdCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzNTktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTM2MDpzdGF0aWMgdm9pZCBkcm1fcGFnZW1hcF9mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKm9yaWdfZm9saW8sIHN0cnVjdCBmb2xpbyAqbmV3X2ZvbGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzNjEte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTM3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wYWdlbWFwX29wcyBkcm1fcGFnZW1hcF9wYWdlbWFwX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzNzQtXFx0Lm1pZ3JhdGVfdG9fcmFtID0gZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19yYW0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTM3NTpcXHQuZm9saW9fc3BsaXQgPSBkcm1fcGFnZW1hcF9mb2xpb19zcGxpdCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzc2LX07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz0xODM9c3RhdGljIHZtX2ZhdWx0X3Qgbm91dmVhdV9kbWVtX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjc5LVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI4MDpzdGF0aWMgdm9pZCBub3V2ZWF1X2RtZW1fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpoZWFkLCBzdHJ1Y3QgZm9saW8gKnRhaWwpXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjgxLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTI4OT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wYWdlbWFwX29wcyBub3V2ZWF1X2RtZW1fcGFnZW1hcF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yOTEtXFx0Lm1pZ3JhdGVfdG9fcmFtXFx0XFx0PSBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0sXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6MjkyOlxcdC5mb2xpb19zcGxpdFxcdFxcdD0gbm91dmVhdV9kbWVtX2ZvbGlvX3NwbGl0LFxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTI5My19O1xcbi0tXFxuZnMvZXJvZnMvZGF0YS5jPTI1OT12b2lkIGVyb2ZzX29ubGluZWZvbGlvX2luaXQoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmZzL2Vyb2ZzL2RhdGEuYy0yNjgtXFxuZnMvZXJvZnMvZGF0YS5jOjI2OTp2b2lkIGVyb2ZzX29ubGluZWZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuZnMvZXJvZnMvZGF0YS5jLTI3MC17XFxuLS1cXG5mcy9lcm9mcy9maWxlaW8uYz04OT1zdGF0aWMgaW50IGVyb2ZzX2ZpbGVpb19zY2FuX2ZvbGlvKHN0cnVjdCBlcm9mc19maWxlaW8gKmlvLFxcbi0tXFxuZnMvZXJvZnMvZmlsZWlvLmMtMTQ3LVxcdFxcdFxcdGlmICghYXR0YWNoZWQrKylcXG5mcy9lcm9mcy9maWxlaW8uYzoxNDg6XFx0XFx0XFx0XFx0ZXJvZnNfb25saW5lZm9saW9fc3BsaXQoZm9saW8pO1xcbmZzL2Vyb2ZzL2ZpbGVpby5jLTE0OS1cXHRcXHRcXHRpby1cXHUwMDNlZGV2Lm1fcGEgKz0gbGVuO1xcbi0tXFxuZnMvZXJvZnMvaW50ZXJuYWwuaD00MTU9dm9pZCBlcm9mc19vbmxpbmVmb2xpb19pbml0KHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmZzL2Vyb2ZzL2ludGVybmFsLmg6NDE2OnZvaWQgZXJvZnNfb25saW5lZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuZnMvZXJvZnMvaW50ZXJuYWwuaC00MTctdm9pZCBlcm9mc19vbmxpbmVmb2xpb19lbmQoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IGVyciwgYm9vbCBkaXJ0eSk7XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTEwMDU9c3RhdGljIGludCB6X2Vyb2ZzX3NjYW5fZm9saW8oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTEwNzUtXFxuZnMvZXJvZnMvemRhdGEuYzoxMDc2OlxcdFxcdFxcdGVyb2ZzX29ubGluZWZvbGlvX3NwbGl0KGZvbGlvKTtcXG5mcy9lcm9mcy96ZGF0YS5jLTEwNzctXFx0XFx0XFx0aWYgKGYtXFx1MDAzZXBjbC1cXHUwMDNlbGVuZ3RoIFxcdTAwM2Mgb2Zmc2V0ICsgZW5kIC0gbWFwLVxcdTAwM2VtX2xhKSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD00MDM9aW50IF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA0LVxcdFxcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjQwNTppbnQgZm9saW9fc3BsaXRfdW5tYXBwZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcik7XFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA2LXVuc2lnbmVkIGludCBtaW5fb3JkZXJfZm9yX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbi0tXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDA4PWludCBmb2xpb19jaGVja19zcGxpdHRhYmxlKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA5LVxcdFxcdFxcdCAgIGVudW0gc3BsaXRfdHlwZSBzcGxpdF90eXBlKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MTA6aW50IGZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsIHN0cnVjdCBwYWdlICpwYWdlLFxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQxMS1cXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTY2OT1zdGF0aWMgaW5saW5lIGludCBzcGxpdF9mb2xpb190b19saXN0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC02NzQtXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6Njc1OnN0YXRpYyBpbmxpbmUgaW50IGZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNjc2LVxcdFxcdHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTAyMj12b2lkIHNwbGl0X3BhZ2VfbWVtY2coc3RydWN0IHBhZ2UgKmZpcnN0LCB1bnNpZ25lZCBvcmRlcik7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTAyMzp2b2lkIGZvbGlvX3NwbGl0X21lbWNnX3JlZnMoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgb2xkX29yZGVyLFxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTEwMjQtXFx0XFx0dW5zaWduZWQgbmV3X29yZGVyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTE0NTM9c3RhdGljIGlubGluZSB2b2lkIHNwbGl0X3BhZ2VfbWVtY2coc3RydWN0IHBhZ2UgKmZpcnN0LCB1bnNpZ25lZCBvcmRlcilcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE0NTYtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTQ1NzpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE0NTgtXFx0XFx0dW5zaWduZWQgb2xkX29yZGVyLCB1bnNpZ25lZCBuZXdfb3JkZXIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmg9Nzc9c3RydWN0IGRldl9wYWdlbWFwX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbXJlbWFwLmgtMTA3LVxcdCAqL1xcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaDoxMDg6XFx0dm9pZCAoKmZvbGlvX3NwbGl0KShzdHJ1Y3QgZm9saW8gKmhlYWQsIHN0cnVjdCBmb2xpbyAqdGFpbCk7XFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oLTEwOS19O1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oPTI0Nz1zdGF0aWMgaW5saW5lIHZvaWQgem9uZV9kZXZpY2VfcHJpdmF0ZV9zcGxpdF9jYihzdHJ1Y3QgZm9saW8gKm9yaWdpbmFsX2ZvbGlvLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oLTI1MC1cXHRpZiAoZm9saW9faXNfZGV2aWNlX3ByaXZhdGUob3JpZ2luYWxfZm9saW8pKSB7XFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oOjI1MTpcXHRcXHRpZiAoIW9yaWdpbmFsX2ZvbGlvLVxcdTAwM2VwZ21hcC1cXHUwMDNlb3BzLVxcdTAwM2Vmb2xpb19zcGxpdCkge1xcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaC0yNTItXFx0XFx0XFx0aWYgKG5ld19mb2xpbykge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oLTI1Ny1cXHRcXHR9IGVsc2Uge1xcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaDoyNTg6XFx0XFx0XFx0b3JpZ2luYWxfZm9saW8tXFx1MDAzZXBnbWFwLVxcdTAwM2VvcHMtXFx1MDAzZWZvbGlvX3NwbGl0KG9yaWdpbmFsX2ZvbGlvLFxcbmluY2x1ZGUvbGludXgvbWVtcmVtYXAuaC0yNTktXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IG5ld19mb2xpbyk7XFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg9NTA9VFJBQ0VfRVZFTlQobW1fbWlncmF0ZV9wYWdlcyxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC01My1cXHRcXHQgdW5zaWduZWQgbG9uZyB0aHBfc3VjY2VlZGVkLCB1bnNpZ25lZCBsb25nIHRocF9mYWlsZWQsXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oOjU0OlxcdFxcdCB1bnNpZ25lZCBsb25nIHRocF9zcGxpdCwgdW5zaWduZWQgbG9uZyBsYXJnZV9mb2xpb19zcGxpdCxcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmgtNTUtXFx0XFx0IGVudW0gbWlncmF0ZV9tb2RlIG1vZGUsIGVudW0gbWlncmF0ZV9yZWFzb24gcmVhc29uKSxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC01Ny1cXHRUUF9BUkdTKHN1Y2NlZWRlZCwgZmFpbGVkLCB0aHBfc3VjY2VlZGVkLCB0aHBfZmFpbGVkLFxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaDo1ODpcXHRcXHR0aHBfc3BsaXQsIGxhcmdlX2ZvbGlvX3NwbGl0LCBtb2RlLCByZWFzb24pLFxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC01OS1cXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC02NS1cXHRcXHRfX2ZpZWxkKFxcdHVuc2lnbmVkIGxvbmcsXFx0XFx0dGhwX3NwbGl0KVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaDo2NjpcXHRcXHRfX2ZpZWxkKFxcdHVuc2lnbmVkIGxvbmcsXFx0XFx0bGFyZ2VfZm9saW9fc3BsaXQpXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTY3LVxcdFxcdF9fZmllbGQoXFx0ZW51bSBtaWdyYXRlX21vZGUsXFx0bW9kZSlcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC03Ni1cXHRcXHRfX2VudHJ5LVxcdTAwM2V0aHBfc3BsaXRcXHRcXHRcXHQ9IHRocF9zcGxpdDtcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg6Nzc6XFx0XFx0X19lbnRyeS1cXHUwMDNlbGFyZ2VfZm9saW9fc3BsaXRcXHQ9IGxhcmdlX2ZvbGlvX3NwbGl0O1xcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21pZ3JhdGUuaC03OC1cXHRcXHRfX2VudHJ5LVxcdTAwM2Vtb2RlXFx0XFx0XFx0XFx0PSBtb2RlO1xcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTg3LVxcdFxcdF9fZW50cnktXFx1MDAzZXRocF9zcGxpdCxcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9taWdyYXRlLmg6ODg6XFx0XFx0X19lbnRyeS1cXHUwMDNlbGFyZ2VfZm9saW9fc3BsaXQsXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWlncmF0ZS5oLTg5LVxcdFxcdF9fcHJpbnRfc3ltYm9saWMoX19lbnRyeS1cXHUwMDNlbW9kZSwgTUlHUkFURV9NT0RFKSxcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTE3NTg9c3RhdGljIHZtX2ZhdWx0X3QgZG1pcnJvcl9kZXZtZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xODM2LVxcbmxpYi90ZXN0X2htbS5jOjE4Mzc6c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZtZW1fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpoZWFkLCBzdHJ1Y3QgZm9saW8gKnRhaWwpXFxubGliL3Rlc3RfaG1tLmMtMTgzOC17XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xODcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BhZ2VtYXBfb3BzIGRtaXJyb3JfZGV2bWVtX29wcyA9IHtcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE4NzMtXFx0Lm1pZ3JhdGVfdG9fcmFtXFx0PSBkbWlycm9yX2Rldm1lbV9mYXVsdCxcXG5saWIvdGVzdF9obW0uYzoxODc0OlxcdC5mb2xpb19zcGxpdFxcdD0gZG1pcnJvcl9kZXZtZW1fZm9saW9fc3BsaXQsXFxubGliL3Rlc3RfaG1tLmMtMTg3NS19O1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zNzk5PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zODQxLVxcbm1tL2h1Z2VfbWVtb3J5LmM6Mzg0MjpcXHRcXHRmb2xpb19zcGxpdF9tZW1jZ19yZWZzKGZvbGlvLCBvbGRfb3JkZXIsIHNwbGl0X29yZGVyKTtcXG5tbS9odWdlX21lbW9yeS5jLTM4NDMtXFx0XFx0c3BsaXRfcGFnZV9vd25lcihcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UsIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zOTI2PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQwODEtLyoqXFxubW0vaHVnZV9tZW1vcnkuYzo0MDgyOiAqIF9fZm9saW9fc3BsaXQoKSAtIHNwbGl0IGEgZm9saW8gYXQgQHNwbGl0X2F0IHRvIGEgQG5ld19vcmRlciBmb2xpb1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDA4My0gKiBAZm9saW86IGZvbGlvIHRvIHNwbGl0XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQxMDEtICovXFxubW0vaHVnZV9tZW1vcnkuYzo0MTAyOnN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDEwMy1cXHRcXHRzdHJ1Y3QgcGFnZSAqc3BsaXRfYXQsIHN0cnVjdCBwYWdlICpsb2NrX2F0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00Mjk4LS8qKlxcbm1tL2h1Z2VfbWVtb3J5LmM6NDI5OTogKiBmb2xpb19zcGxpdF91bm1hcHBlZCgpIC0gc3BsaXQgYSBsYXJnZSBhbm9uIGZvbGlvIHRoYXQgaXMgYWxyZWFkeSB1bm1hcHBlZFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDMwMC0gKiBAZm9saW86IGZvbGlvIHRvIHNwbGl0XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzMTktICovXFxubW0vaHVnZV9tZW1vcnkuYzo0MzIwOmludCBmb2xpb19zcGxpdF91bm1hcHBlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyKVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDMyMS17XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQzODc9aW50IF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzOTEtXFxubW0vaHVnZV9tZW1vcnkuYzo0MzkyOlxcdHJldHVybiBfX2ZvbGlvX3NwbGl0KGZvbGlvLCBuZXdfb3JkZXIsIFxcdTAwMjZmb2xpby1cXHUwMDNlcGFnZSwgcGFnZSwgbGlzdCxcXG5tbS9odWdlX21lbW9yeS5jLTQzOTMtXFx0XFx0XFx0ICAgICBTUExJVF9UWVBFX1VOSUZPUk0pO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00Mzk2LS8qKlxcbm1tL2h1Z2VfbWVtb3J5LmM6NDM5NzogKiBmb2xpb19zcGxpdCgpIC0gc3BsaXQgYSBmb2xpbyBhdCBAc3BsaXRfYXQgdG8gYSBAbmV3X29yZGVyIGZvbGlvXFxubW0vaHVnZV9tZW1vcnkuYy00Mzk4LSAqIEBmb2xpbzogZm9saW8gdG8gc3BsaXRcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQxOS0gKi9cXG5tbS9odWdlX21lbW9yeS5jOjQ0MjA6aW50IGZvbGlvX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxubW0vaHVnZV9tZW1vcnkuYy00NDIxLVxcdFxcdHN0cnVjdCBwYWdlICpzcGxpdF9hdCwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdClcXG5tbS9odWdlX21lbW9yeS5jLTQ0MjIte1xcbm1tL2h1Z2VfbWVtb3J5LmM6NDQyMzpcXHRyZXR1cm4gX19mb2xpb19zcGxpdChmb2xpbywgbmV3X29yZGVyLCBzcGxpdF9hdCwgXFx1MDAyNmZvbGlvLVxcdTAwM2VwYWdlLCBsaXN0LFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQyNC1cXHRcXHRcXHQgICAgIFNQTElUX1RZUEVfTk9OX1VOSUZPUk0pO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00NzQwPXN0YXRpYyBpbnQgc3BsaXRfaHVnZV9wYWdlc19waWQoaW50IHBpZCwgdW5zaWduZWQgbG9uZyB2YWRkcl9zdGFydCxcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDgzMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBpbl9mb2xpb19vZmZzZXQpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6NDgzMzpcXHRcXHRcXHRpZiAoIWZvbGlvX3NwbGl0KGZvbGlvLCB0YXJnZXRfb3JkZXIsIHNwbGl0X2F0LCBOVUxMKSlcXG5tbS9odWdlX21lbW9yeS5jLTQ4MzQtXFx0XFx0XFx0XFx0c3BsaXQrKztcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9NDg1Nz1zdGF0aWMgaW50IHNwbGl0X2h1Z2VfcGFnZXNfaW5fZmlsZShjb25zdCBjaGFyICpmaWxlX3BhdGgsIHBnb2ZmX3Qgb2ZmX3N0YXJ0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00OTA4LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGluX2ZvbGlvX29mZnNldCk7XFxubW0vaHVnZV9tZW1vcnkuYzo0OTA5OlxcdFxcdFxcdGlmICghZm9saW9fc3BsaXQoZm9saW8sIHRhcmdldF9vcmRlciwgc3BsaXRfYXQsIE5VTEwpKVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDkxMC1cXHRcXHRcXHRcXHRzcGxpdCsrO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTM3MTc9dm9pZCBzcGxpdF9wYWdlX21lbWNnKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBvcmRlcilcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0zNzMwLVxcbm1tL21lbWNvbnRyb2wuYzozNzMxOnZvaWQgZm9saW9fc3BsaXRfbWVtY2dfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBvbGRfb3JkZXIsXFxubW0vbWVtY29udHJvbC5jLTM3MzItXFx0XFx0dW5zaWduZWQgbmV3X29yZGVyKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz05MTI9c3RhdGljIGludCBtaWdyYXRlX3ZtYV9zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTkyNi1cXHRzcGxpdF9odWdlX3BtZF9hZGRyZXNzKG1pZ3JhdGUtXFx1MDAzZXZtYSwgYWRkciwgdHJ1ZSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYzo5Mjc6XFx0cmV0ID0gZm9saW9fc3BsaXRfdW5tYXBwZWQoZm9saW8sIDApO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtOTI4LVxcdGlmIChyZXQpXFxuLS1cXG5tbS90cnVuY2F0ZS5jPTE3MD1pbnQgdHJ1bmNhdGVfaW5vZGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS90cnVuY2F0ZS5jLTE3OS1cXG5tbS90cnVuY2F0ZS5jOjE4MDpzdGF0aWMgaW50IGZvbGlvX3NwbGl0X29yX3VubWFwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBwYWdlICpzcGxpdF9hdCxcXG5tbS90cnVuY2F0ZS5jLTE4MS1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBtaW5fb3JkZXIpXFxuLS1cXG5tbS90cnVuY2F0ZS5jLTE4OC1cXG5tbS90cnVuY2F0ZS5jOjE4OTpcXHRyZXQgPSBmb2xpb19zcGxpdChmb2xpbywgbWluX29yZGVyLCBzcGxpdF9hdCwgTlVMTCk7XFxubW0vdHJ1bmNhdGUuYy0xOTAtXFxuLS1cXG5tbS90cnVuY2F0ZS5jPTIxNz1ib29sIHRydW5jYXRlX2lub2RlX3BhcnRpYWxfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kKVxcbi0tXFxubW0vdHJ1bmNhdGUuYy0yNTQtXFx0c3BsaXRfYXQgPSBmb2xpb19wYWdlKGZvbGlvLCBQQUdFX0FMSUdOX0RPV04ob2Zmc2V0KSAvIFBBR0VfU0laRSk7XFxubW0vdHJ1bmNhdGUuYzoyNTU6XFx0aWYgKCFmb2xpb19zcGxpdF9vcl91bm1hcChmb2xpbywgc3BsaXRfYXQsIG1pbl9vcmRlcikpIHtcXG5tbS90cnVuY2F0ZS5jLTI1Ni1cXHRcXHQvKlxcbi0tXFxubW0vdHJ1bmNhdGUuYy0yODEtXFx0XFx0ICAgIGZvbGlvMi1cXHUwMDNlbWFwcGluZyA9PSBmb2xpby1cXHUwMDNlbWFwcGluZylcXG5tbS90cnVuY2F0ZS5jOjI4MjpcXHRcXHRcXHRmb2xpb19zcGxpdF9vcl91bm1hcChmb2xpbzIsIHNwbGl0X2F0MiwgbWluX29yZGVyKTtcXG5tbS90cnVuY2F0ZS5jLTI4My1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy5naXRpZ25vcmU9Njc9cm1hcFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy5naXRpZ25vcmU6Njg6Zm9saW9fc3BsaXRfcmFjZV90ZXN0XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZT0xMDU9VEVTVF9HRU5fRklMRVMgKz0gcm1hcFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlOjEwNjpURVNUX0dFTl9GSUxFUyArPSBmb2xpb19zcGxpdF9yYWNlX3Rlc3RcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZS0xMDctXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9mb2xpb19zcGxpdF9yYWNlX3Rlc3QuYy02LSAqXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmM6NzogKiBJdCB0ZXN0cyB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBmb2xpb19zcGxpdCgpIGFuZCBmaWxlbWFwX2dldF9lbnRyeSgpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2ZvbGlvX3NwbGl0X3JhY2VfdGVzdC5jOjg6ICogd2hlcmUgdGhlIGhvbGUgcHVuY2hlcyBvbiBzaG1lbSBsZWFkIHRvIGZvbGlvX3NwbGl0KCkgYW5kIHJlYWRpbmcgdGhlIHNobWVtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vZm9saW9fc3BsaXRfcmFjZV90ZXN0LmMtOS0gKiBsZWFkIHRvIGZpbGVtYXBfZ2V0X2VudHJ5KCkuXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaD00NDM9Q0FURUdPUlk9XFxcInRocFxcXCIgcnVuX3Rlc3QgLi90cmFuc2h1Z2Utc3RyZXNzIC1kIDIwXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2gtNDQ0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoOjQ0NTpDQVRFR09SWT1cXFwidGhwXFxcIiBydW5fdGVzdCAuL2ZvbGlvX3NwbGl0X3JhY2VfdGVzdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoLTQ0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6MzcuMDU3MDg4MTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MDI5MjgyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXZlcyBpbnRvIHNvbWUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCByb3V0aW5lcyDigJMgc3BlY2lmaWNhbGx5LCBob3cgd2UgaGFuZGxlIG1lbW9yeSBkdXJpbmcgZmlsZSB0cnVuY2F0aW9uIGFuZCBodWdlIHBhZ2Ugc3BsaXR0aW5nLiBgZm9saW9fc3BsaXRgIGlzIHRyaWdnZXJlZCBieSBgdHJ1bmNhdGVfaW5vZGVfcGFydGlhbF9mb2xpb2AsIGFuZCB0aGF0J3MgYSBrZXkgcGFydCBvZiB0aGUgdHJ1bmNhdGlvbiBwcm9jZXNzLCBzbyB0aGF0J3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGZvY3VzLiBUaGVuIHRoZXJlJ3MgdGhlIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCBmYW1pbHkgb2YgZnVuY3Rpb25zOiB3ZSd2ZSBnb3QgdGhlIGludGVybmFsIGhlbHBlcnMgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIHB1YmxpY2x5IHZpc2libGUgYHNwbGl0X2h1Z2VfcGFnZWAg4oCTIHRoYXQncyBhIGNsZWFyIGluZGljYXRvciBvZiBjaGFuZ2VzIGltcGFjdGluZyBodWdlIHBhZ2UgbWFuYWdlbWVudCwgYSBjcml0aWNhbCBhcmVhIGZvciBwZXJmb3JtYW5jZS5cblxuR2l2ZW4gdGhpcyBjb250ZXh0LCBJJ20gY29uZmlkZW50IHRoYXQgdGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWxseSBzb3VuZCBhbmQgd29ydGggYSBnb29kIGZ1enppbmcgY2FtcGFpZ24uIE1lbW9yeSBtYW5hZ2VtZW50IGludGVyYWN0aW9ucyBhcmUgYWx3YXlzIGNvbXBsZXgsIGFuZCB0aGVzZSBmdW5jdGlvbnMgYXJlIGZvdW5kYXRpb25hbC4gV2UgbmVlZCB0byBzdHJlc3MtdGVzdCB0aGVtLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHRob3NlIGZpbGUgdHJ1bmNhdGlvbiBhbmQgaHVnZSBwYWdlIHNwbGl0dGluZyBvcGVyYXRpb25zIHRvIGZsdXNoIG91dCBhbnkgc3VidGxlIGlzc3Vlcy4gSSB3YW50IHRvIGNoZWNrIGB4YXNfc3BsaXRfYWxsb2NgIHdoaWxlIEknbSBhdCBpdCwgc2VlIGlmIHRoZXJlJ3MgYW55IHJlbGF0ZWQgY2hhbmdlcyB0aGVyZSB0aGF0IGNvdWxkIGludGVyYWN0IHdpdGggdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1NjksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6NDEuMDQ3Mzg0NDM5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgwNDA3ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhhc19zcGxpdF9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS94YXJyYXkucnN0PTQ5MD1lbnRyeSBjYW4gYmUgc3BsaXQgaW50byBlbnRyaWVzIG9jY3VweWluZyBzbWFsbGVyIHJhbmdlcyBieSBjYWxsaW5nXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS94YXJyYXkucnN0OjQ5MTp4YXNfc3BsaXRfYWxsb2MoKSB3aXRob3V0IHRoZSB4YV9sb2NrIGhlbGQsIGZvbGxvd2VkIGJ5IHRha2luZyB0aGUgbG9ja1xcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdC00OTItYW5kIGNhbGxpbmcgeGFzX3NwbGl0KCkgb3IgY2FsbGluZyB4YXNfdHJ5X3NwbGl0KCkgd2l0aCB4YV9sb2NrLiBUaGVcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3Q6NDkzOmRpZmZlcmVuY2UgYmV0d2VlbiB4YXNfc3BsaXRfYWxsb2MoKSt4YXNfc3BsaXQoKSBhbmQgeGFzX3RyeV9hbGxvYygpIGlzXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS94YXJyYXkucnN0OjQ5NDp0aGF0IHhhc19zcGxpdF9hbGxvYygpICsgeGFzX3NwbGl0KCkgc3BsaXQgdGhlIGVudHJ5IGZyb20gdGhlIG9yaWdpbmFsXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS94YXJyYXkucnN0LTQ5NS1vcmRlciB0byB0aGUgbmV3IG9yZGVyIGluIG9uZSBzaG90IHVuaWZvcm1seSwgd2hlcmVhcyB4YXNfdHJ5X3NwbGl0KClcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkveGFycmF5LnJzdD00OTc9Rm9yIGV4YW1wbGUsIHRvIHNwbGl0IGFuIG9yZGVyLTkgZW50cnksIHdoaWNoIHRha2VzIDJeKDktNik9OCBzbG90cyxcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3Q6NDk4OmFzc3VtaW5nIGBgWEFfQ0hVTktfU0hJRlRgYCBpcyA2LCB4YXNfc3BsaXRfYWxsb2MoKSArIHhhc19zcGxpdCgpIG5lZWRcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3QtNDk5LTggeGFfbm9kZS4geGFzX3RyeV9zcGxpdCgpIHNwbGl0cyB0aGUgb3JkZXItOSBlbnRyeSBpbnRvXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0PTM0NT1YQXJyYXnmnInog73lipvlsIblpJrkuKrntKLlvJXogZTns7vlnKjkuIDotbfvvIzlm6DmraTlr7nkuIDkuKrntKLlvJXnmoTmk43kvZzkvJrlvbHlk43liLDmiYDmnInnmoTntKLlvJXjgILkvovlpoLvvIzlrZjlgqjliLDku7vkvZXntKLlvJXlsIZcXHVmZmZkXFx1ZmZmZC4uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkveGFycmF5LnJzdC0zNjIt5Zyo5LiA5Liq5aSa57Si5byV5p2h55uu55qE5Lu75L2V5LiA5Liq57Si5byV5Lit5a2Y5YKoIGBgTlVMTGBgIO+8jOWwhuaKiuavj+S4que0ouW8leeahOadoeebruiuvue9ruS4uiBgYE5VTExgYCDvvIzlubbop6PpmaTnu5HlrprjgILpgJrov4fosINcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0OjM2MzrnlKh4YXNfc3BsaXRfYWxsb2MoKe+8jOWcqOayoeaciXhhX2xvY2vnmoTmg4XlhrXkuIvvvIzlj6/ku6XlsIbkuIDkuKrlpJrntKLlvJXmnaHnm67liIblibLmiJDljaDmja7ovoPlsI/ojIPlm7TnmoTmnaHnm67vvIznhLblkI7lho3lj5bplIHlubZcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS94YXJyYXkucnN0LTM2NC3osIPnlKh4YXNfc3BsaXQoKeOAglxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmg9MzY0PXN0YXRpYyBpbmxpbmUgdm9pZCBtYXBwaW5nX3NldF9nZnBfbWFzayhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbSwgZ2ZwX3QgbWFzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oLTM4Mi0vKlxcbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oOjM4MzogKiB4YXNfc3BsaXRfYWxsb2MoKSBkb2VzIG5vdCBzdXBwb3J0IGFyYml0cmFyeSBvcmRlcnMuIFRoaXMgaW1wbGllcyBub1xcbmluY2x1ZGUvbGludXgvcGFnZW1hcC5oLTM4NC0gKiA1MTJNQiBUSFAgb24gQVJNNjQgd2l0aCA2NEtCIGJhc2UgcGFnZSBzaXplLlxcbi0tXFxuaW5jbHVkZS9saW51eC94YXJyYXkuaD0xNTYyPXZvaWQgeGFzX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqLCB2b2lkICplbnRyeSwgdW5zaWduZWQgaW50IG9yZGVyKTtcXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oOjE1NjM6dm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICosIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsIGdmcF90KTtcXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oLTE1NjQtdm9pZCB4YXNfdHJ5X3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB2b2lkICplbnRyeSwgdW5zaWduZWQgaW50IG9yZGVyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgveGFycmF5Lmg9MTU3Nz1zdGF0aWMgaW5saW5lIHZvaWQgeGFzX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB2b2lkICplbnRyeSxcXG4tLVxcbmluY2x1ZGUvbGludXgveGFycmF5LmgtMTU4Mi1cXG5pbmNsdWRlL2xpbnV4L3hhcnJheS5oOjE1ODM6c3RhdGljIGlubGluZSB2b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksXFxuaW5jbHVkZS9saW51eC94YXJyYXkuaC0xNTg0LVxcdFxcdHVuc2lnbmVkIGludCBvcmRlciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubGliL3Rlc3RfeGFycmF5LmM9MTgzNj1zdGF0aWMgdm9pZCBjaGVja19zcGxpdF8xKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LFxcbi0tXFxubGliL3Rlc3RfeGFycmF5LmMtMTg0NS1cXG5saWIvdGVzdF94YXJyYXkuYzoxODQ2OlxcdHhhc19zcGxpdF9hbGxvYyhcXHUwMDI2eGFzLCB4YSwgb3JkZXIsIEdGUF9LRVJORUwpO1xcbmxpYi90ZXN0X3hhcnJheS5jLTE4NDctXFx0eGFzX2xvY2soXFx1MDAyNnhhcyk7XFxuLS1cXG5saWIveGFycmF5LmM9MTAxMT1zdGF0aWMgdm9pZCBfX3hhc19pbml0X25vZGVfZm9yX3NwbGl0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLFxcbi0tXFxubGliL3hhcnJheS5jLTEwMzEtLyoqXFxubGliL3hhcnJheS5jOjEwMzI6ICogeGFzX3NwbGl0X2FsbG9jKCkgLSBBbGxvY2F0ZSBtZW1vcnkgZm9yIHNwbGl0dGluZyBhbiBlbnRyeS5cXG5saWIveGFycmF5LmMtMTAzMy0gKiBAeGFzOiBYQXJyYXkgb3BlcmF0aW9uIHN0YXRlLlxcbi0tXFxubGliL3hhcnJheS5jLTEwNDQtICovXFxubGliL3hhcnJheS5jOjEwNDU6dm9pZCB4YXNfc3BsaXRfYWxsb2Moc3RydWN0IHhhX3N0YXRlICp4YXMsIHZvaWQgKmVudHJ5LCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxubGliL3hhcnJheS5jLTEwNDYtXFx0XFx0Z2ZwX3QgZ2ZwKVxcbi0tXFxubGliL3hhcnJheS5jLTEwNzUtfVxcbmxpYi94YXJyYXkuYzoxMDc2OkVYUE9SVF9TWU1CT0xfR1BMKHhhc19zcGxpdF9hbGxvYyk7XFxubGliL3hhcnJheS5jLTEwNzctXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTM3OTk9c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM4MjMtXFx0XFx0XFx0LypcXG5tbS9odWdlX21lbW9yeS5jOjM4MjQ6XFx0XFx0XFx0ICogdW5pZm9ybSBzcGxpdCBoYXMgeGFzX3NwbGl0X2FsbG9jKCkgY2FsbGVkIGJlZm9yZVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzgyNS1cXHRcXHRcXHQgKiBpcnEgaXMgZGlzYWJsZWQgdG8gYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSwgd2hlcmVhc1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00MTAyPXN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00MTgzLVxcdFxcdFxcdHhhc19zZXRfb3JkZXIoXFx1MDAyNnhhcywgZm9saW8tXFx1MDAzZWluZGV4LCBuZXdfb3JkZXIpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6NDE4NDpcXHRcXHRcXHR4YXNfc3BsaXRfYWxsb2MoXFx1MDAyNnhhcywgZm9saW8sIG9sZF9vcmRlciwgZ2ZwKTtcXG5tbS9odWdlX21lbW9yeS5jLTQxODUtXFx0XFx0XFx0aWYgKHhhc19lcnJvcihcXHUwMDI2eGFzKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjo0Mi43Mjc3OTkzMThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg0MTc0MTYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZvbGlvIFNwbGl0dGluZyBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgeGFzX3NwbGl0X2FsbG9jYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGNhbGxlZCBmcm9tIGBfX2ZvbGlvX3NwbGl0YC4gVGhlIHBhdGNoIGlzIGFkZGluZyBgX19HRlBfQUNDT1VOVGAgdG8gYGdmcGAgd2l0aGluIGB4YXNfc3BsaXRfYWxsb2NgIGlmIGB4YXMtXHUwMDNleGEtXHUwMDNleGFfZmxhZ3NgIGhhcyBgWEFfRkxBR1NfQUNDT1VOVGAgc2V0LiBUaGlzIG1ha2VzIHNlbnNlOyBpdCBhcHBlYXJzIHdlJ3JlIGVuYWJsaW5nIG1lbWNnIGFjY291bnRpbmcgZHVyaW5nIHRoZSBzcGxpdCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuIFRoZSBvdGhlciBjcml0aWNhbCBwaWVjZSBpcyB0aGF0IHRoZSBjb2RlIHN3aXRjaGVzIHRvIHRoZSBmb2xpbydzIG1lbWNnIHdpdGhpbiBgX19mb2xpb19zcGxpdGAgKmJlZm9yZSogY2FsbGluZyBgeGFzX3NwbGl0X2FsbG9jYC4gVGhpcyBjb25maXJtcyBtZW1jZyBhc3NvY2lhdGlvbiBpcyBoYXBwZW5pbmcgYXQgdGhlIHJpZ2h0IHBvaW50LlxuXG5TbywgYF9fZm9saW9fc3BsaXRgIGFuZCBgeGFzX3NwbGl0X2FsbG9jYCBhcmUgdGhlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBmb3IgdGhpcyBwYXRjaC4gV2FpdCwgYF9fZm9saW9fc3BsaXRgIGlzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoYXQgbWVhbnMgd2UgbmVlZCB0byBsb29rIHVwc3RyZWFtIGF0IGl0cyBjYWxsZXJzIGFuZCB0aGUgbm9uLXN0YXRpYyBjb3VudGVycGFydHMgbGlrZSBgZm9saW9fc3BsaXRgIGFuZCBgZm9saW9fc3BsaXRfdW5tYXBwZWRgIGFuZCBtYXliZSBhbHNvIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYC4gYF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgIGlzIGFsc28gbm90IHN0YXRpYy4gTGV0J3MgZGlnIGRlZXBlciBhbmQgaW5zcGVjdCBgZm9saW9fc3BsaXRgLCBgZm9saW9fc3BsaXRfdW5tYXBwZWRgLCBhbmQgYHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzODksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDI6NDcuNTY5NTQzMjk1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ5NDQ3OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD0zOTg9ZW51bSBzcGxpdF90eXBlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQwMi1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MDM6aW50IF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDA0LVxcdFxcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9NDEwPWludCBmb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQxMi1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MTM6c3RhdGljIGlubGluZSBpbnQgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE0LVxcdFxcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE1LXtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MTY6XFx0cmV0dXJuIF9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIocGFnZSwgbGlzdCwgbmV3X29yZGVyKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC00MTctfVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTQxOD1zdGF0aWMgaW5saW5lIGludCBzcGxpdF9odWdlX3BhZ2VfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDE5LXtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MjA6XFx0cmV0dXJuIHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHBhZ2UsIE5VTEwsIG5ld19vcmRlcik7XFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDIxLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTQyMz1zdGF0aWMgaW5saW5lIGludCBzcGxpdF9odWdlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNDI0LXtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo0MjU6XFx0cmV0dXJuIHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHBhZ2UsIE5VTEwsIDApO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTQyNi19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD02NDU9c3RhdGljIGlubGluZSBpbnRcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDo2NDY6c3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtNjQ3LVxcdFxcdHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD04MjY9c3RhdGljIGlubGluZSBpbnQgc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5ld19vcmRlcilcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC04Mjcte1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjgyODpcXHRyZXR1cm4gc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoXFx1MDAyNmZvbGlvLVxcdTAwM2VwYWdlLCBOVUxMLCBuZXdfb3JkZXIpO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTgyOS19XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQzMjA9aW50IGZvbGlvX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzODYtICovXFxubW0vaHVnZV9tZW1vcnkuYzo0Mzg3OmludCBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDM4OC1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBuZXdfb3JkZXIpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQ0MDQtICogSXQgaGFzIHRoZSBzYW1lIHByZXJlcXVpc2l0ZXMgYW5kIHJldHVybnMgYXNcXG5tbS9odWdlX21lbW9yeS5jOjQ0MDU6ICogc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXIoKS5cXG5tbS9odWdlX21lbW9yeS5jLTQ0MDYtICpcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9NDQ1ND1pbnQgc3BsaXRfZm9saW9fdG9fbGlzdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQ1NS17XFxubW0vaHVnZV9tZW1vcnkuYzo0NDU2OlxcdHJldHVybiBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcihcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UsIGxpc3QsIDApO1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDQ1Ny19XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQ3NDA9c3RhdGljIGludCBzcGxpdF9odWdlX3BhZ2VzX3BpZChpbnQgcGlkLCB1bnNpZ25lZCBsb25nIHZhZGRyX3N0YXJ0LFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy00ODA5LVxcdFxcdC8qXFxubW0vaHVnZV9tZW1vcnkuYzo0ODEwOlxcdFxcdCAqIEZvciBmb2xpb3Mgd2l0aCBwcml2YXRlLCBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcigpXFxubW0vaHVnZV9tZW1vcnkuYy00ODExLVxcdFxcdCAqIHdpbGwgdHJ5IHRvIGRyb3AgaXQgYmVmb3JlIHNwbGl0IGFuZCB0aGVuIGNoZWNrIGlmIHRoZSBmb2xpb1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjo0OS4xMTg5OTcwMzFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxMjY5OTc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRm9saW8gU3BsaXR0aW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gZm9saW8gc3BsaXR0aW5nLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgZm9saW9fc3BsaXRgIGFuZCBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgdGhpcywgYWxvbmcgd2l0aCBgeGFzX3NwbGl0X2FsbG9jYCwgd2hpY2ggaXMgYWxzbyBleHBvcnRlZC4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuXG5cbkZpcnN0LCBsZXQncyBjaGVjayBmb3IgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEl0J3MgY2xlYXIgdGhhdCBgQ09ORklHX01FTUNHYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBhbmQgc28gaXMgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEdvb2QsIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBjb25jZXJuIG15c2VsZiB3aXRoLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBrbm93IGBsaWIveGFycmF5LmNgIGlzIGFsd2F5cyBjb21waWxlZC4gSG93ZXZlciwgYG1tL2h1Z2VfbWVtb3J5LmNgIHJlcXVpcmVzIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCB3aGljaCBpcyB3aGF0IEkgYWxyZWFkeSBub3RlZC5cblxuVGhlcmVmb3JlLCBmb3IgZW5hYmxpbmcgdGhlIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgTUVNQ0dgLiBNeSBmb2N1cywgdGhvdWdoLCB3aWxsIHJlbWFpbiBvbiB0aGUga2V5IHN5bWJvbHMgb2YgaW50ZXJlc3Q6IGBmb2xpb19zcGxpdGAsIGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCwgYW5kIGB4YXNfc3BsaXRfYWxsb2NgLlxuXG5Ob3csIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgZm9saW9fc3BsaXRgIGFuZCBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAgYXJlLCBpbmRlZWQsIGV4cG9ydGVkIG9yIGF0IGxlYXN0IG5vbi1zdGF0aWMuIFllcywgdGhleSBhcmUgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgLiBPa2F5LCB0aGF0IGNvbmZpcm1zIG15IGluaXRpYWwgYXNzdW1wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDc1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjUzLjkzMTY5OTc1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIxNzgzNTI3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipmb2xpb19zcGxpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAyOjU1Ljk1MzQ5MTc3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk0NTIwMjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gRXhwb3J0IFN0YXR1cyBmb3IgRnV6emluZyoqXG5cbkhtbSwgSSdtIGp1c3QgbG9va2luZyBhdCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBzZXQgdXAgaW4gdGhlIGNvZGUsIGFuZCBJIHNlZSB0aGF0IGBmb2xpb19zcGxpdGAgaXNuJ3QgYWN0dWFsbHkgZXhwb3J0ZWQuIFRoYXQgaW5pdGlhbGx5IGdhdmUgbWUgcGF1c2UsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBmb3IgZnV6emluZywgaXQgZG9lc24ndCBtYXR0ZXIgKnRvbyogbXVjaCBpZiBzb21ldGhpbmcncyBwdWJsaWNseSBhdmFpbGFibGUuIFRoZSBmYWN0IHRoYXQgaXQncyBub24tc3RhdGljIG1lYW5zIEkgY2FuIHByb2JhYmx5IHN0aWxsIGdldCBhdCBpdCBpZiBJIGRpZyBhIGJpdC4gR29vZCwgdGhhdCdzIHdvcmthYmxlIGZvciB0aGUgZnV6emluZyBJJ20gcGxhbm5pbmcuXG5cbk5vdywgbGV0J3Mgc2VlIGFib3V0IGBfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYC4gSXMgKnRoYXQqIGZ1bmN0aW9uIGV4cG9ydGVkPyBJZiBpdCBpcywgYW5kIEkgY2FuIHVzZSBpdCwgdGhhdCdzIHBvdGVudGlhbGx5IGV2ZW4gYmV0dGVyLiBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcyBhbmQgbG9vayBpdCB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NzksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMjo1OS4xNDgwMTQ4NDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzM1MjM1NjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKl9fc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMzowMS4zMjE1NDY1MzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2MzEwNDU5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgYSBGdW5jdGlvbidzIEV4cG9ydCBTdGF0dXMqKlxuXG5BbHJpZ2h0LCB0aGF0IHNvdW5kcyBwZXJmZWN0bHkgYWNjZXB0YWJsZSwgbm8gaW1tZWRpYXRlIGNvbmNlcm5zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgYSBzcGVjaWZpYyBkZXRhaWwsIHBhcnRpY3VsYXJseSBjb25jZXJuaW5nIHRoZSBmdW5jdGlvbiBgZm9saW9fc3BsaXRfdW5tYXBwZWRgLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgYXZhaWxhYmlsaXR5LCBzcGVjaWZpY2FsbHkgd2hldGhlciBvciBub3QgaXQncyBiZWVuIGV4cG9ydGVkIGFuZCBpcyB0aGVyZWZvcmUgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgb3IgbW9kdWxlIEknbSB3b3JraW5nIHdpdGguIFRoaXMgaXMgYSBjb21tb24gYW5kIHF1aWNrIHNhbml0eSBjaGVjayBJIG9mdGVuIHBlcmZvcm0gYmVmb3JlIEkgZXZlbiBjb25zaWRlciB1c2luZyBhIHBhcnRpY3VsYXIgZnVuY3Rpb247IGVuc3VyaW5nIGl0cyBleHBvcnQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTYzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDM6MDQuMjg0NjUzNDE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDczMzQyMTE0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipmb2xpb19zcGxpdF91bm1hcHBlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjAzOjA2LjM1ODAwMjUxOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkxMTQ2NjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBhIFF1aWNrIENoZWNrKipcblxuVGhhdCdzIGZpbmUuIEFscmlnaHQsIG5vIGltbWVkaWF0ZSBjb25jZXJucyBvciByZWQgZmxhZ3MuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueXRoaW5nIGVsc2UsIEkgbmVlZCB0byBtYWtlIGEgcXVpY2sgdmVyaWZpY2F0aW9uLiBMZXQncyBjaGVjayBpZiB0aGUgZnVuY3Rpb24gYHhhc19zcGxpdF9hbGxvY2AgaXMgcHJvcGVybHkgZXhwb3J0ZWQgYW5kIGFjY2Vzc2libGUuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHByZXJlcXVpc2l0ZSBmb3Igd2hhdGV2ZXIgZm9sbG93cywgc28gbGV0J3MgZ2V0IHRoYXQgdmFsaWRhdGlvbiBvdXQgb2YgdGhlIHdheSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUxNDksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMzowOS4xNDkxNTE3MDFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjg4NDQ2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qeGFzX3NwbGl0X2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIveGFycmF5LmM9MTA0NT12b2lkIHhhc19zcGxpdF9hbGxvYyhzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqZW50cnksIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbmxpYi94YXJyYXkuYy0xMDc1LX1cXG5saWIveGFycmF5LmM6MTA3NjpFWFBPUlRfU1lNQk9MX0dQTCh4YXNfc3BsaXRfYWxsb2MpO1xcbmxpYi94YXJyYXkuYy0xMDc3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjowMzoxMS4zMTgwMDI1OTlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDczMTE1NTA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIEZvbGlvIFNwbGl0dGluZyBQYXRjaCoqXG5cbkFscmlnaHQsIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBhbmQgaXQncyBkZWFsaW5nIHdpdGggZm9saW8gc3BsaXR0aW5nLCBzcGVjaWZpY2FsbHkgaG93IHdlIGFjY291bnQgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoaW4gYSBtZW1vcnkgY2dyb3VwIGR1cmluZyB4YXJyYXkgbm9kZSBhbGxvY2F0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIOKAkyB3ZSdyZSB0YWxraW5nIGFib3V0IGZ1bmRhbWVudGFsIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLCBhbmQgaXQncyB0cmlnZ2VyZWQgd2hlbiBhIGh1Z2UgcGFnZSBpcyBzcGxpdC4gU291bmRzIGxpa2UgYSBjb3JlIGlzc3VlLlxuXG5Ob3csIGxldCdzIHNlZSwgdGhlIGltcG9ydGFudCBgRW5hYmxlQ29uZmlnc2AgYXJlIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBNRU1DR2AuIEFuZCB0aGUga2V5IGBGb2N1c1N5bWJvbHNgIGxvb2sgbGlrZSBgZm9saW9fc3BsaXRgLCBgX19zcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAsIGFuZCBgeGFzX3NwbGl0X2FsbG9jYC4gVGhvc2UgZnVuY3Rpb25zIGRlZmluaXRlbHkgcmluZyBhIGJlbGwgYXMgY3JpdGljYWwgcG9pbnRzIGluIHRoZSBzcGxpdHRpbmcgcHJvY2Vzcy5cblxuUXVpY2sgZG91YmxlLWNoZWNrOiBgQ09ORklHX01FTUNHYCBkZXBlbmRzIG9uIGBDT05GSUdfQ0dST1VQU2AsIGJ1dCBgQ09ORklHX01FTUNHYCBzaG91bGQgYmUgc3VmZmljaWVudCBvbiBpdHMgb3duLCBhbmQgdGhlIHNhbWUgZ29lcyBmb3IgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIE5vIG5lZWQgdG8gZ2V0IG1vcmUgZ3JhbnVsYXIgdGhhbiBuZWNlc3NhcnkuIE9rYXksIHRoZSBjb25maWdzIGFyZSBhcyBleHBlY3RlZC5cblxuSSBhbSBzYXRpc2ZpZWQgYW5kIHJlYWR5IHRvIHNldCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM5NSwiT3V0cHV0VG9rZW5zIjoxMTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MDM6MTYuMDQ5MTYxNTYzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEzMTk5ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJNRU1DR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZvbGlvX3NwbGl0XCIsXG4gICAgXCJfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyXCIsXG4gICAgXCJ4YXNfc3BsaXRfYWxsb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSBjaGFyZ2UgbWVtb3J5IGFsbG9jYXRpb25zIHRvIHRoZSBmb2xpbydzIG1lbW9yeSBjZ3JvdXAgZHVyaW5nIHhhcnJheSBub2RlIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBodWdlIHBhZ2Ugc3BsaXR0aW5nIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJNRU1DR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZvbGlvX3NwbGl0XCIsXG4gICAgXCJfX3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyXCIsXG4gICAgXCJ4YXNfc3BsaXRfYWxsb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSBjaGFyZ2UgbWVtb3J5IGFsbG9jYXRpb25zIHRvIHRoZSBmb2xpbydzIG1lbW9yeSBjZ3JvdXAgZHVyaW5nIHhhcnJheSBub2RlIGFsbG9jYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBodWdlIHBhZ2Ugc3BsaXR0aW5nIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow5z848[1] Phase: Succeeded StartedAt: 2026-08-01 12:03:27 +0000 UTC FinishedAt: 2026-08-01 12:03:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 12:03:27 +0000 UTC FinishedAt: 2026-08-01 12:03:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2] Phase: Succeeded StartedAt: 2026-08-01 12:03:27 +0000 UTC FinishedAt: 2026-08-01 16:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:03:27 +0000 UTC FinishedAt: 2026-08-01 16:14:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:03:27 +0000 UTC FinishedAt: 2026-08-01 12:03:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:03:27 +0000 UTC FinishedAt: 2026-08-01 12:03:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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-workflow5z848/series-workflow5z848-convert-artifact-1693566995/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:03:37 +0000 UTC FinishedAt: 2026-08-01 12:29:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:03:37 +0000 UTC FinishedAt: 2026-08-01 12:29:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*913e2c21-e6ac-4d33-8e61-7e986efa277e,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-workflow5z848/series-workflow5z848-convert-artifact-1693566995/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": "a6f8fcc2-ff54-4a3b-9631-578336319985", "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-workflow5z848/series-workflow5z848-build-action-843441473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:03:37 +0000 UTC FinishedAt: 2026-08-01 12:29:05 +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:*913e2c21-e6ac-4d33-8e61-7e986efa277e,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-workflow5z848/series-workflow5z848-convert-artifact-1693566995/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": "a6f8fcc2-ff54-4a3b-9631-578336319985", "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-workflow5z848/series-workflow5z848-build-action-843441473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:29:16 +0000 UTC FinishedAt: 2026-08-01 12:29:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:29:16 +0000 UTC FinishedAt: 2026-08-01 12:29:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:29:16 +0000 UTC FinishedAt: 2026-08-01 12:29:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:29:16 +0000 UTC FinishedAt: 2026-08-01 12:29:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-workflow5z848/series-workflow5z848-convert-artifact-3832904458/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:29:49 +0000 UTC FinishedAt: 2026-08-01 12:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:29:50 +0000 UTC FinishedAt: 2026-08-01 12:31:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a6f8fcc2-ff54-4a3b-9631-578336319985,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-workflow5z848/series-workflow5z848-build-action-843441473/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-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:31:45 +0000 UTC FinishedAt: 2026-08-01 12:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:31:45 +0000 UTC FinishedAt: 2026-08-01 12:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:31:45 +0000 UTC FinishedAt: 2026-08-01 13:09:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:31:45 +0000 UTC FinishedAt: 2026-08-01 13:09:10 +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:*913e2c21-e6ac-4d33-8e61-7e986efa277e,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-workflow5z848/series-workflow5z848-convert-artifact-3832904458/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": "354fa9b2-36c2-405c-a529-0424db352dae", "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-workflow5z848/series-workflow5z848-build-action-4021598510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 12:31:46 +0000 UTC FinishedAt: 2026-08-01 13:08:59 +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:*913e2c21-e6ac-4d33-8e61-7e986efa277e,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-workflow5z848/series-workflow5z848-convert-artifact-3832904458/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": "354fa9b2-36c2-405c-a529-0424db352dae", "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-workflow5z848/series-workflow5z848-build-action-4021598510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:09:10 +0000 UTC FinishedAt: 2026-08-01 13:09:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:09:10 +0000 UTC FinishedAt: 2026-08-01 13:09:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:09:10 +0000 UTC FinishedAt: 2026-08-01 13:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:09:10 +0000 UTC FinishedAt: 2026-08-01 13:10:52 +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:*354fa9b2-36c2-405c-a529-0424db352dae,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-workflow5z848/series-workflow5z848-build-action-4021598510/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-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:02 +0000 UTC FinishedAt: 2026-08-01 16:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:02 +0000 UTC FinishedAt: 2026-08-01 16:14:10 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"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:*a6f8fcc2-ff54-4a3b-9631-578336319985,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*354fa9b2-36c2-405c-a529-0424db352dae,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-workflow5z848/series-workflow5z848-build-action-843441473/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-workflow5z848/series-workflow5z848-build-action-4021598510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:02 +0000 UTC FinishedAt: 2026-08-01 13:11:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:02 +0000 UTC FinishedAt: 2026-08-01 13:11:08 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"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-workflow5z848/series-workflow5z848-convert-artifact-2347146911/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:02 +0000 UTC FinishedAt: 2026-08-01 13:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:02 +0000 UTC FinishedAt: 2026-08-01 13:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:02 +0000 UTC FinishedAt: 2026-08-01 13:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:12 +0000 UTC FinishedAt: 2026-08-01 16:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5z848[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["folio_split","__split_huge_page_to_list_to_order","xas_split_alloc"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"99cf84da3838f1613deed700ddfb033163b28106","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE","MEMCG"],"series_id":"d7a9273d-4e40-474c-a06b-725e4c8fa0f2","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-08-01 13:11:12 +0000 UTC FinishedAt: 2026-08-01 16:13:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a6f8fcc2-ff54-4a3b-9631-578336319985,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*354fa9b2-36c2-405c-a529-0424db352dae,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-workflow5z848/series-workflow5z848-build-action-843441473/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-workflow5z848/series-workflow5z848-build-action-4021598510/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-workflow5z848/series-workflow5z848-convert-artifact-2347146911/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,}