Name: series-workflow5fspw Phase: Succeeded StartedAt: 2026-08-07 04:41:04 +0000 UTC FinishedAt: 2026-08-07 08:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[0] Phase: Succeeded StartedAt: 2026-08-07 04:41:04 +0000 UTC FinishedAt: 2026-08-07 04:59:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 04:41:04 +0000 UTC FinishedAt: 2026-08-07 04:59:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "8c7f55d60aa3512fd3da7e9cf313723460e487b4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "8c7f55d60aa3512fd3da7e9cf313723460e487b4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "28c408dd-c8f5-4ac2-a118-8cd6105d2665" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "map_create", "queue_stack_map_alloc_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGFuIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtYXAgY3JlYXRpb24gbG9naWMgYW5kIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZmMzZjRhMDc1MmU2MTI3YTJiN2VkNGEzN2QzOTBlZGEyZjg3N2U3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNDo1Nzo1OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXG5pbmRleCBjMWM5ZGVlNGRjZGQwLi5mOWZmNzAxYWIyN2IwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXG5AQCAtNTksNiAmIzQzOzU5LDEzIEBAIHN0YXRpYyBpbnQgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuIFx0XHQgKi9cbiBcdFx0cmV0dXJuIC1FMkJJRztcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSB1MzIgaGVhZC90YWlsIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgdmFsdWVfc2l6ZSB0byBhZGRyZXNzXG4mIzQzO1x0ICogZWxlbWVudHNbXS4gQm91bmQgdGhlIG1hcCBzaXplIHNvIHRoZSBwcm9kdWN0IGNhbm5vdCBvdmVyZmxvdy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKHU2NClhdHRyLVx1MDAzZW1heF9lbnRyaWVzICogYXR0ci1cdTAwM2V2YWx1ZV9zaXplIFx1MDAzZSBVMzJfTUFYKVxuJiM0MztcdFx0cmV0dXJuIC1FMkJJRztcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuY1xuaW5kZXggNDE0NDEzMjVlMTc5NC4uNmY4YWMyODVlNzE5NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuY1xuQEAgLTEwMSw4ICYjNDM7MTAxLDQyIEBAIHN0YXRpYyB2b2lkIHRlc3RfcXVldWVfc3RhY2tfbWFwX2J5X3R5cGUoaW50IHR5cGUpXG4gXHRicGZfb2JqZWN0X19jbG9zZShvYmopO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodm9pZClcbiYjNDM7e1xuJiM0MztcdExJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG9wdHMpO1xuJiM0MztcdGNvbnN0IF9fdTMyIGJpZ192YWx1ZSA9IDEgXHUwMDNjXHUwMDNjIDIwOyAvKiAxTUIgKi9cbiYjNDM7XHRpbnQgZmQsIHNhdmVkX2Vycm5vO1xuJiM0MztcbiYjNDM7XHQvKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSB1MzIgaW5kZXggb3ZlcmZsb3cgaW4gcXVldWUvc3RhY2sgbWFwczpcbiYjNDM7XHQgKiBhIG1hcCB3aG9zZSBlbGVtZW50IHN0b3JhZ2UgKG1heF9lbnRyaWVzICogdmFsdWVfc2l6ZSkgZXhjZWVkc1xuJiM0MztcdCAqIFUzMl9NQVggYnl0ZXMgbXVzdCBiZSByZWplY3RlZCBhdCBjcmVhdGlvbiB0aW1lLCBvdGhlcndpc2UgdGhlXG4mIzQzO1x0ICogdTMyIGhlYWQvdGFpbCBpbmRleCBtdWx0aXBsaWNhdGlvbiB3cmFwcyBhbmQgcHVzaC9wZWVrL3BvcFxuJiM0MztcdCAqIGFkZHJlc3MgdGhlIHdyb25nIGVsZW1lbnQuIDgxOTIgKiAxTUIgPSA4R0IgXHUwMDNlIFUzMl9NQVguXG4mIzQzO1x0ICovXG4mIzQzO1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIGJpZ192YWx1ZSwgODE5MiwgXHUwMDI2b3B0cyk7XG4mIzQzO1x0c2F2ZWRfZXJybm8gPSBlcnJubztcbiYjNDM7XHRBU1NFUlRfTFQoZmQsIDAsIFwmIzM0O3F1ZXVlX292ZXJzaXplX2ZkXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2F2ZWRfZXJybm8sIEUyQklHLCBcJiMzNDtxdWV1ZV9vdmVyc2l6ZV9lcnJub1wmIzM0Oyk7XG4mIzQzO1x0aWYgKGZkIFx1MDAzZT0gMClcbiYjNDM7XHRcdGNsb3NlKGZkKTtcbiYjNDM7XG4mIzQzO1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfU1RBQ0ssIE5VTEwsIDAsIGJpZ192YWx1ZSwgODE5MiwgXHUwMDI2b3B0cyk7XG4mIzQzO1x0c2F2ZWRfZXJybm8gPSBlcnJubztcbiYjNDM7XHRBU1NFUlRfTFQoZmQsIDAsIFwmIzM0O3N0YWNrX292ZXJzaXplX2ZkXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2F2ZWRfZXJybm8sIEUyQklHLCBcJiMzNDtzdGFja19vdmVyc2l6ZV9lcnJub1wmIzM0Oyk7XG4mIzQzO1x0aWYgKGZkIFx1MDAzZT0gMClcbiYjNDM7XHRcdGNsb3NlKGZkKTtcbiYjNDM7XG4mIzQzO1x0LyogQSBub3JtYWwtc2l6ZWQgbWFwIG11c3Qgc3RpbGwgYmUgY3JlYXRlZCBzdWNjZXNzZnVsbHkuICovXG4mIzQzO1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIDY0LCAxMDAsIFx1MDAyNm9wdHMpO1xuJiM0MztcdEFTU0VSVF9HRShmZCwgMCwgXCYjMzQ7cXVldWVfbm9ybWFsX2ZkXCYjMzQ7KTtcbiYjNDM7XHRpZiAoZmQgXHUwMDNlPSAwKVxuJiM0MztcdFx0Y2xvc2UoZmQpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXAodm9pZClcbiB7XG4gXHR0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKFFVRVVFKTtcbiBcdHRlc3RfcXVldWVfc3RhY2tfbWFwX2J5X3R5cGUoU1RBQ0spO1xuJiM0MztcdHRlc3RfcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKCk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7cXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgdG8gcHJldmVudCBhbiBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyB0aGUgY3JlYXRpb24gb2YgQlBGIHF1ZXVlIGFuZCBzdGFjayBtYXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWFwIGNyZWF0aW9uIGxvZ2ljIGFuZCBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmZjM2Y0YTA3NTJlNjEyN2EyYjdlZDRhMzdkMzkwZWRhMmY4NzdlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDQ6NTc6NTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jCmluZGV4IGMxYzlkZWU0ZGNkZDAuLmY5ZmY3MDFhYjI3YjAgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jCkBAIC01OSw2ICYjNDM7NTksMTMgQEAgc3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpCiAJCSAqLwogCQlyZXR1cm4gLUUyQklHOwogCiYjNDM7CS8qCiYjNDM7CSAqIFRoZSB1MzIgaGVhZC90YWlsIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgdmFsdWVfc2l6ZSB0byBhZGRyZXNzCiYjNDM7CSAqIGVsZW1lbnRzW10uIEJvdW5kIHRoZSBtYXAgc2l6ZSBzbyB0aGUgcHJvZHVjdCBjYW5ub3Qgb3ZlcmZsb3cuCiYjNDM7CSAqLwomIzQzOwlpZiAoKHU2NClhdHRyLSZndDttYXhfZW50cmllcyAqIGF0dHItJmd0O3ZhbHVlX3NpemUgJmd0OyBVMzJfTUFYKQomIzQzOwkJcmV0dXJuIC1FMkJJRzsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuYwppbmRleCA0MTQ0MTMyNWUxNzk0Li42ZjhhYzI4NWU3MTk2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuYwpAQCAtMTAxLDggJiM0MzsxMDEsNDIgQEAgc3RhdGljIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXBfYnlfdHlwZShpbnQgdHlwZSkKIAlicGZfb2JqZWN0X19jbG9zZShvYmopOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodm9pZCkKJiM0Mzt7CiYjNDM7CUxJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG9wdHMpOwomIzQzOwljb25zdCBfX3UzMiBiaWdfdmFsdWUgPSAxICZsdDsmbHQ7IDIwOyAvKiAxTUIgKi8KJiM0MzsJaW50IGZkLCBzYXZlZF9lcnJubzsKJiM0MzsKJiM0MzsJLyogUmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgdTMyIGluZGV4IG92ZXJmbG93IGluIHF1ZXVlL3N0YWNrIG1hcHM6CiYjNDM7CSAqIGEgbWFwIHdob3NlIGVsZW1lbnQgc3RvcmFnZSAobWF4X2VudHJpZXMgKiB2YWx1ZV9zaXplKSBleGNlZWRzCiYjNDM7CSAqIFUzMl9NQVggYnl0ZXMgbXVzdCBiZSByZWplY3RlZCBhdCBjcmVhdGlvbiB0aW1lLCBvdGhlcndpc2UgdGhlCiYjNDM7CSAqIHUzMiBoZWFkL3RhaWwgaW5kZXggbXVsdGlwbGljYXRpb24gd3JhcHMgYW5kIHB1c2gvcGVlay9wb3AKJiM0MzsJICogYWRkcmVzcyB0aGUgd3JvbmcgZWxlbWVudC4gODE5MiAqIDFNQiA9IDhHQiAmZ3Q7IFUzMl9NQVguCiYjNDM7CSAqLwomIzQzOwlmZCA9IGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9RVUVVRSwgTlVMTCwgMCwgYmlnX3ZhbHVlLCA4MTkyLCAmYW1wO29wdHMpOwomIzQzOwlzYXZlZF9lcnJubyA9IGVycm5vOwomIzQzOwlBU1NFUlRfTFQoZmQsIDAsICYjMzQ7cXVldWVfb3ZlcnNpemVfZmQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShzYXZlZF9lcnJubywgRTJCSUcsICYjMzQ7cXVldWVfb3ZlcnNpemVfZXJybm8mIzM0Oyk7CiYjNDM7CWlmIChmZCAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoZmQpOwomIzQzOwomIzQzOwlmZCA9IGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9TVEFDSywgTlVMTCwgMCwgYmlnX3ZhbHVlLCA4MTkyLCAmYW1wO29wdHMpOwomIzQzOwlzYXZlZF9lcnJubyA9IGVycm5vOwomIzQzOwlBU1NFUlRfTFQoZmQsIDAsICYjMzQ7c3RhY2tfb3ZlcnNpemVfZmQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShzYXZlZF9lcnJubywgRTJCSUcsICYjMzQ7c3RhY2tfb3ZlcnNpemVfZXJybm8mIzM0Oyk7CiYjNDM7CWlmIChmZCAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoZmQpOwomIzQzOwomIzQzOwkvKiBBIG5vcm1hbC1zaXplZCBtYXAgbXVzdCBzdGlsbCBiZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4gKi8KJiM0MzsJZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIDY0LCAxMDAsICZhbXA7b3B0cyk7CiYjNDM7CUFTU0VSVF9HRShmZCwgMCwgJiMzNDtxdWV1ZV9ub3JtYWxfZmQmIzM0Oyk7CiYjNDM7CWlmIChmZCAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoZmQpOwomIzQzO30KJiM0MzsKIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXAodm9pZCkKIHsKIAl0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKFFVRVVFKTsKIAl0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKFNUQUNLKTsKJiM0MzsJdGVzdF9xdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2soKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIHRoaXMgbmV3IGNoZWNrIHdpdGhpbiB0aGUgYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgZnVuY3Rpb24uIEl0JiMzOTtzIGRlc2lnbmVkIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNyZWF0aW5nIEJQRiBxdWV1ZSBhbmQgc3RhY2sgbWFwcy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBjaGVja2luZyB0aGF0IHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBgbWF4X2VudHJpZXNgIGFuZCBgdmFsdWVfc2l6ZWAgZG9lc24mIzM5O3QgZXhjZWVkIGBVMzJfTUFYYC4gVGhpcyBpcyBpbXBvcnRhbnQsIG9idmlvdXNseSwgYmVjYXVzZSB0aGUgcmVzdWx0IG9mIHRoYXQgbXVsdGlwbGljYXRpb24gaXMgdXNlZCB0byBpbmRleCBhbiBhcnJheSwgYGVsZW1lbnRzW11gLCBhbmQgYW4gb3ZlcmZsb3cgd291bGQgbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggd2UgYWJzb2x1dGVseSBjYW5ub3QgaGF2ZS4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIGFuZCBzcGVjaWZpY2FsbHksIGZvY3VzZXMgb24gdGhlIHF1ZXVlIGFuZCBzdGFjayBtYXBzLCB3aGljaCBtYWtlcyBzZW5zZS4gV2UmIzM5O3JlIHRyeWluZyB0byBoYXJkZW4gdGhlIG1hcCBjcmVhdGlvbiBwcm9jZXNzLgoKSSBzaG91bGQgcHJvYmFibHkgcXVpY2tseSB2ZXJpZnkgdGhlIEJQRiBjb25maWd1cmF0aW9uLiBMZXQgbWUgY2hlY2sgdGhlIEtjb25maWcg4oCTIHJpZ2h0LCBCUEYgbWFwcyBhcmUgZW5hYmxlZCB0aHJvdWdoIGBDT05GSUdfQlBGX1NZU0NBTExgLgoKTm93LCBsZXQmIzM5O3MgdXNlIHRoZSBzdGFuZGFyZCB0b29scyB0byB2YWxpZGF0ZSB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3F1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTM2PXN0YXRpYyBib29sIHF1ZXVlX3N0YWNrX21hcF9pc19mdWxsKHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzKVxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQ2LS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjQ3OnN0YXRpYyBpbnQgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNDgte1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2OT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcXVldWVfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI3MC1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI3MTpcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNzItXHQubWFwX2FsbG9jID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jLFxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI4NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgc3RhY2tfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI4Ni1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4NzpcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yODgtXHQubWFwX2FsbG9jID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgUXVldWUgYW5kIFN0YWNrIE1hcCBBbGxvY2F0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCBmdW5jdGlvbi4gSXQmIzM5O3MgdHJpZ2dlcmVkIGR1cmluZyBtYXAgYWxsb2NhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHF1ZXVlIGFuZCBzdGFjayBtYXBzIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRoYXQgZXZlbiAqZW5hYmxlKiB0aGUgcmVsZXZhbnQgY29kZSBpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgLiBXaGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdGllZCB0byB0aGF0PyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbnVhbmNlIGxpZXM6IGFyZSB0aGVzZSBtYXBzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIG9yIGFyZSB0aGVyZSBydW50aW1lIGNoZWNrcyBpbnZvbHZlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbnMgZGljdGF0ZSB0aGVpciBhdmFpbGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cXVldWVfc3RhY2tfbWFwcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT03Mj1DRkxBR1NfUkVNT1ZFX2JwZl9scnVfbGlzdC5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjczOkNGTEFHU19SRU1PVkVfcXVldWVfc3RhY2tfbWFwcy5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTc0LUNGTEFHU19SRU1PVkVfbHBtX3RyaWUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBTdGFjay9RdWV1ZSBNYXAgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBpdCYjMzk7cyBhbGwgcHJlZGljYXRlZCBvbiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgdGhhdCYjMzk7cyB0aGUga2V5LiAgTm93LCB0aGUgdGhpbmcgdGhhdCYjMzk7cyBzbmFnZ2luZyBteSBhdHRlbnRpb24gaXMgdGhpcyBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCBmdW5jdGlvbi4gSXQmIzM5O3MgbWFya2VkIGBzdGF0aWNgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBsaW1pdGVkIGluIHNjb3BlLCBidXQgdGhlbiBJIHNlZSBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byBgbWFwX2FsbG9jX2NoZWNrYCB3aXRoaW4gYm90aCBgcXVldWVfbWFwX29wc2AgYW5kIGBzdGFja19tYXBfb3BzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIHNoYXJlZCBiZWhhdmlvdXIuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbnMgaGVyZSwgc28gbXkgbmV4dCBtb3ZlIGlzIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBib3RoIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgLiBBcmUgdGhleSB1c2VkIGluZGVwZW5kZW50bHkgb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBvcGVyYXRpb25zPyBBcmUgdGhlcmUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgc3BhY2UgdG8gc3R1ZHk/IEkga25vdyB0aGVyZSYjMzk7cyBgcXVldWVfc3RhY2tfbWFwX2FsbG9jYCBpbiB0aGUgc2FtZSBmaWxlIHRoYXQmIzM5O3Mgd29ydGggYSBsb29rLCBhbmQgSSYjMzk7bSBzdXJlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRvby4gSSYjMzk7bGwgZm9jdXMgb24gdGhlc2UgYXJlYXMgdG8gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxdWV1ZV9zdGFja19tYXBfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0zNj1zdGF0aWMgYm9vbCBxdWV1ZV9zdGFja19tYXBfaXNfZnVsbChzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpxcylcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00Ni0vKiBDYWxsZWQgZnJvbSBzeXNjYWxsICovXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo0NzpzdGF0aWMgaW50IHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQ4LXtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy03MS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjcyOnN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqcXVldWVfc3RhY2tfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzMte1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2OT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcXVldWVfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI3MC1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI3MTpcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNzI6XHQubWFwX2FsbG9jID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jLFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjczLVx0Lm1hcF9mcmVlID0gcXVldWVfc3RhY2tfbWFwX2ZyZWUsXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9Mjg1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBzdGFja19tYXBfb3BzID0ge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjg2LVx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Mjg3Olx0Lm1hcF9hbGxvY19jaGVjayA9IHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4ODpcdC5tYXBfYWxsb2MgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2MsXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yODktXHQubWFwX2ZyZWUgPSBxdWV1ZV9zdGFja19tYXBfZnJlZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTYxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJ1ZyBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgbWF5YmUgaXQmIzM5O3Mgbm90IHRoZSBtb3N0IHN0cmF0ZWdpYyBlbnRyeSBwb2ludCBmb3IgZGVlcGVyIGFuYWx5c2lzLiBTdGF0aWMgZnVuY3Rpb25zIGNhbiBzb21ldGltZXMgYmUgbW9yZSBjb250YWluZWQsIG1lYW5pbmcgZm9jdXNpbmcgb24gKnRoaXMqIHNwZWNpZmljIHN5bWJvbCBtaWdodCBiZSBtaXNzaW5nIGEgd2lkZXIgc3lzdGVtaWMgaXNzdWUuIE15IGluc3RpbmN0cyBhcmUgbnVkZ2luZyBtZSB0b3dhcmRzIGEgYnJvYWRlciB2aWV3LiBMZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlciBpbnRvIHRoZSBjb2RlYmFzZS4gSSYjMzk7bSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyBhd2F5IGZyb20gdGhpcyBpc29sYXRlZCBwaWVjZSBvZiBjb2RlIGFuZCB0byBleHBsb3JlIHRoZSBicm9hZGVyIGNvbnRleHQgYnkgY2hlY2tpbmcgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIHF1ZXVlL3N0YWNrIG1hcHMgaW1wbGVtZW50YXRpb24uIFNlZWluZyB0aGUgbGFyZ2VyIHNldCBvZiBmdW5jdGlvbnMsIHB1YmxpYyBvciBwcml2YXRlLCB3aWxsIGxpa2VseSBwcm92aWRlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgZGVzaWduIGFuZCBwb3RlbnRpYWxseSByZXZlYWwgd2hlcmUgdGhpcyBvdmVyZmxvdyBtaWdodCBoYXZlIHByb3BhZ2F0ZWQgZnJvbSwgb3Igd2hlcmUgb3RoZXIgcmVsYXRlZCB2dWxuZXJhYmlsaXRpZXMgbWF5IGV4aXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW15zdGF0aWNdLipcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00LSAqXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo1OiAqIENvcHlyaWdodCAoYykgMjAxOCBQb2xpdGVjbmljbyBkaSBUb3Jpbm9cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTYtICovXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTQtI2RlZmluZSBRVUVVRV9TVEFDS19DUkVBVEVfRkxBR19NQVNLIFxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNTpcdChCUEZfRl9OVU1BX05PREUgfCBCUEZfRl9BQ0NFU1NfTUFTSylcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTc9c3RydWN0IGJwZl9xdWV1ZV9zdGFjayB7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjItXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMzpcdGNoYXIgZWxlbWVudHNbXSBfX2FsaWduZWQoOCk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNC19O1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2PXN0YXRpYyBzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpicGZfcXVldWVfc3RhY2soc3RydWN0IGJwZl9tYXAgKm1hcClcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI3LXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4Olx0cmV0dXJuIGNvbnRhaW5lcl9vZihtYXAsIHN0cnVjdCBicGZfcXVldWVfc3RhY2ssIG1hcCk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yOS19XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MzY9c3RhdGljIGJvb2wgcXVldWVfc3RhY2tfbWFwX2lzX2Z1bGwoc3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMpXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMzktXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo0MDpcdGlmICh1bmxpa2VseShoZWFkIFx1MDAzZT0gcXMtXHUwMDNlc2l6ZSkpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00MS1cdFx0aGVhZCA9IDA7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9NDc9c3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNDktXHQvKiBjaGVjayBzYW5pdHkgb2YgYXR0cmlidXRlcyAqL1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NTA6XHRpZiAoYXR0ci1cdTAwM2VtYXhfZW50cmllcyA9PSAwIHx8IGF0dHItXHUwMDNla2V5X3NpemUgIT0gMCB8fFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNTEtXHQgICAgYXR0ci1cdTAwM2V2YWx1ZV9zaXplID09IDAgfHxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTUyLVx0ICAgIGF0dHItXHUwMDNlbWFwX2ZsYWdzIFx1MDAyNiB+UVVFVUVfU1RBQ0tfQ1JFQVRFX0ZMQUdfTUFTSyB8fFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NTM6XHQgICAgIWJwZl9tYXBfZmxhZ3NfYWNjZXNzX29rKGF0dHItXHUwMDNlbWFwX2ZsYWdzKSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTU0LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTU1LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NTY6XHRpZiAoYXR0ci1cdTAwM2V2YWx1ZV9zaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNTctXHRcdC8qIGlmIHZhbHVlX3NpemUgaXMgYmlnZ2VyLCB0aGUgdXNlciBzcGFjZSB3b24mIzM5O3QgYmUgYWJsZSB0b1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTY1LVx0ICovXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo2NjpcdGlmICgodTY0KWF0dHItXHUwMDNlbWF4X2VudHJpZXMgKiBhdHRyLVx1MDAzZXZhbHVlX3NpemUgXHUwMDNlIFUzMl9NQVgpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy02Ny1cdFx0cmV0dXJuIC1FMkJJRztcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz03Mj1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKnF1ZXVlX3N0YWNrX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTczLXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjc0Olx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy03NS1cdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTc3LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Nzg6XHRzaXplID0gKHU2NCkgYXR0ci1cdTAwM2VtYXhfZW50cmllcyAmIzQzOyAxO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Nzk6XHRxdWV1ZV9zaXplID0gc2l6ZW9mKCpxcykgJiM0Mzsgc2l6ZSAqIGF0dHItXHUwMDNldmFsdWVfc2l6ZTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTgwLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODE6XHRxcyA9IGJwZl9tYXBfYXJlYV9hbGxvYyhxdWV1ZV9zaXplLCBudW1hX25vZGUpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODI6XHRpZiAoIXFzKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODM6XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtODQtXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo4NTpcdGJwZl9tYXBfaW5pdF9mcm9tX2F0dHIoXHUwMDI2cXMtXHUwMDNlbWFwLCBhdHRyKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTg2LVxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTg4LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODk6XHRyYXdfcmVzX3NwaW5fbG9ja19pbml0KFx1MDAyNnFzLVx1MDAzZWxvY2spO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtOTAtXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9OTU9c3RhdGljIHZvaWQgcXVldWVfc3RhY2tfbWFwX2ZyZWUoc3RydWN0IGJwZl9tYXAgKm1hcClcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTk2LXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjk3Olx0c3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMgPSBicGZfcXVldWVfc3RhY2sobWFwKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTk4LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6OTk6XHRicGZfbWFwX2FyZWFfZnJlZShxcyk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMDAtfVxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTEwMj1zdGF0aWMgbG9uZyBfX3F1ZXVlX21hcF9nZXQoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsIGJvb2wgZGVsZXRlKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTAzLXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEwNDpcdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzID0gYnBmX3F1ZXVlX3N0YWNrKG1hcCk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMDUtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEwOC1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEwOTpcdGlmIChyYXdfcmVzX3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnFzLVx1MDAzZWxvY2ssIGZsYWdzKSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTEwOlx0XHRtZW1zZXQodmFsdWUsIDAsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTExMS1cdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMTMtXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMTQ6XHRpZiAocXVldWVfc3RhY2tfbWFwX2lzX2VtcHR5KHFzKSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTE1Olx0XHRtZW1zZXQodmFsdWUsIDAsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTExNi1cdFx0ZXJyID0gLUVOT0VOVDtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMjAtXHRwdHIgPSBcdTAwMjZxcy1cdTAwM2VlbGVtZW50c1txcy1cdTAwM2V0YWlsICogcXMtXHUwMDNlbWFwLnZhbHVlX3NpemVdO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTIxOlx0bWVtY3B5KHZhbHVlLCBwdHIsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEyMi1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEyMzpcdGlmIChkZWxldGUpIHtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEyNDpcdFx0aWYgKHVubGlrZWx5KCYjNDM7JiM0Mztxcy1cdTAwM2V0YWlsIFx1MDAzZT0gcXMtXHUwMDNlc2l6ZSkpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMjUtXHRcdFx0cXMtXHUwMDNldGFpbCA9IDA7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTI4LW91dDpcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEyOTpcdHJhd19yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZxcy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMzAtXHRyZXR1cm4gZXJyO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTEzND1zdGF0aWMgbG9uZyBfX3N0YWNrX21hcF9nZXQoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsIGJvb2wgZGVsZXRlKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTM1LXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEzNjpcdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzID0gYnBmX3F1ZXVlX3N0YWNrKG1hcCk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMzctXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0MS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjE0MjpcdGlmIChyYXdfcmVzX3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnFzLVx1MDAzZWxvY2ssIGZsYWdzKSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTQzOlx0XHRtZW1zZXQodmFsdWUsIDAsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0NC1cdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNDYtXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNDc6XHRpZiAocXVldWVfc3RhY2tfbWFwX2lzX2VtcHR5KHFzKSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTQ4Olx0XHRtZW1zZXQodmFsdWUsIDAsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0OS1cdFx0ZXJyID0gLUVOT0VOVDtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNTMtXHRpbmRleCA9IHFzLVx1MDAzZWhlYWQgLSAxO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTU0Olx0aWYgKHVubGlrZWx5KGluZGV4IFx1MDAzZT0gcXMtXHUwMDNlc2l6ZSkpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNTUtXHRcdGluZGV4ID0gcXMtXHUwMDNlc2l6ZSAtIDE7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTU3LVx0cHRyID0gXHUwMDI2cXMtXHUwMDNlZWxlbWVudHNbaW5kZXggKiBxcy1cdTAwM2VtYXAudmFsdWVfc2l6ZV07XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNTg6XHRtZW1jcHkodmFsdWUsIHB0ciwgcXMtXHUwMDNlbWFwLnZhbHVlX3NpemUpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTU5LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTYwOlx0aWYgKGRlbGV0ZSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2MS1cdFx0cXMtXHUwMDNlaGVhZCA9IGluZGV4O1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2My1vdXQ6XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNjQ6XHRyYXdfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cXMtXHUwMDNlbG9jaywgZmxhZ3MpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTY1LVx0cmV0dXJuIGVycjtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0xNjk9c3RhdGljIGxvbmcgcXVldWVfbWFwX3BlZWtfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE3MC17XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNzE6XHRyZXR1cm4gX19xdWV1ZV9tYXBfZ2V0KG1hcCwgdmFsdWUsIGZhbHNlKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE3Mi19XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTc1PXN0YXRpYyBsb25nIHN0YWNrX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNzYte1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTc3Olx0cmV0dXJuIF9fc3RhY2tfbWFwX2dldChtYXAsIHZhbHVlLCBmYWxzZSk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNzgtfVxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTE4MT1zdGF0aWMgbG9uZyBxdWV1ZV9tYXBfcG9wX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xODIte1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTgzOlx0cmV0dXJuIF9fcXVldWVfbWFwX2dldChtYXAsIHZhbHVlLCB0cnVlKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE4NC19XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTg3PXN0YXRpYyBsb25nIHN0YWNrX21hcF9wb3BfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE4OC17XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxODk6XHRyZXR1cm4gX19zdGFja19tYXBfZ2V0KG1hcCwgdmFsdWUsIHRydWUpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTkwLX1cbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0xOTM9c3RhdGljIGxvbmcgcXVldWVfc3RhY2tfbWFwX3B1c2hfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSxcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xOTUte1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTk2Olx0c3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMgPSBicGZfcXVldWVfc3RhY2sobWFwKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE5Ny1cdHVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIwMy1cdCAqL1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjA0Olx0Ym9vbCByZXBsYWNlID0gKGZsYWdzIFx1MDAyNiBCUEZfRVhJU1QpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA1LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA2LVx0LyogQ2hlY2sgc3VwcG9ydGVkIGZsYWdzIGZvciBxdWV1ZSBhbmQgc3RhY2sgbWFwcyAqL1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjA3Olx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfTk9FWElTVCB8fCBmbGFncyBcdTAwM2UgQlBGX0VYSVNUKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIwOS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIxMDpcdGlmIChyYXdfcmVzX3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnFzLVx1MDAzZWxvY2ssIGlycV9mbGFncykpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMTEtXHRcdHJldHVybiAtRUJVU1k7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMTItXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMTM6XHRpZiAocXVldWVfc3RhY2tfbWFwX2lzX2Z1bGwocXMpKSB7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMTQ6XHRcdGlmICghcmVwbGFjZSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjE1LVx0XHRcdGVyciA9IC1FMkJJRztcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMTgtXHRcdC8qIGFkdmFuY2UgdGFpbCBwb2ludGVyIHRvIG92ZXJ3cml0ZSBvbGRlc3QgZWxlbWVudCAqL1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjE5Olx0XHRpZiAodW5saWtlbHkoJiM0MzsmIzQzO3FzLVx1MDAzZXRhaWwgXHUwMDNlPSBxcy1cdTAwM2VzaXplKSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIyMC1cdFx0XHRxcy1cdTAwM2V0YWlsID0gMDtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMjMtXHRkc3QgPSBcdTAwMjZxcy1cdTAwM2VlbGVtZW50c1txcy1cdTAwM2VoZWFkICogcXMtXHUwMDNlbWFwLnZhbHVlX3NpemVdO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjI0Olx0bWVtY3B5KGRzdCwgdmFsdWUsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIyNS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIyNjpcdGlmICh1bmxpa2VseSgmIzQzOyYjNDM7cXMtXHUwMDNlaGVhZCBcdTAwM2U9IHFzLVx1MDAzZXNpemUpKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjI3LVx0XHRxcy1cdTAwM2VoZWFkID0gMDtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMjktb3V0Olxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjMwOlx0cmF3X3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnFzLVx1MDAzZWxvY2ssIGlycV9mbGFncyk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMzEtXHRyZXR1cm4gZXJyO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2MD1zdGF0aWMgdTY0IHF1ZXVlX3N0YWNrX21hcF9tZW1fdXNhZ2UoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcClcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI2MS17XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjI6XHR1NjQgdXNhZ2UgPSBzaXplb2Yoc3RydWN0IGJwZl9xdWV1ZV9zdGFjayk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNjMtXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjQ6XHR1c2FnZSAmIzQzOz0gKCh1NjQpbWFwLVx1MDAzZW1heF9lbnRyaWVzICYjNDM7IDEpICogbWFwLVx1MDAzZXZhbHVlX3NpemU7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNjUtXHRyZXR1cm4gdXNhZ2U7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjY3LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjY4OkJURl9JRF9MSVNUX1NJTkdMRShxdWV1ZV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcXVldWVfc3RhY2spXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNjktY29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHF1ZXVlX21hcF9vcHMgPSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NDYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFNjb3BlIG9mIFRoZXNlIERhdGEgU3RydWN0dXJlIE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYHF1ZXVlX21hcF9wZWVrX2VsZW1gLCBgc3RhY2tfbWFwX3BlZWtfZWxlbWAsIGBxdWV1ZV9tYXBfcG9wX2VsZW1gLCBgc3RhY2tfbWFwX3BvcF9lbGVtYCwgYW5kIGBxdWV1ZV9zdGFja19tYXBfcHVzaF9lbGVtYC4gVGhleSBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuLi4gaW50ZXJlc3RpbmcuIFRoaXMgdGVsbHMgbWUgdGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggaXMgZ29vZCBmb3IgZW5jYXBzdWxhdGlvbi4gQnV0IGl0IG1ha2VzIG1lIHdvbmRlciwgYXJlIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgIGFsc28gYHN0YXRpY2A/IEFuZCBtb3JlIGltcG9ydGFudGx5LCBhcmUgdGhleSAqZXhwb3J0ZWQqIG9yIHVzZWQgaW4gZXh0ZXJuYWwgbW9kdWxlcz8KCkkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGVzZSBgb3BzYCBzdHJ1Y3R1cmVzLiBJZiB0aGV5JiMzOTtyZSB2aXNpYmxlIG91dHNpZGUsIHRoZXkgbmVlZCBtb3JlIGNhcmUuIExldCYjMzk7cyBzdGFydCBieSBmaWd1cmluZyBvdXQgd2hlcmUgYHF1ZXVlX21hcF9vcHNgIGlzIGFjdHVhbGx5IHVzZWQuIEEgcXVpY2sgc2VhcmNoIHNob3VsZCBjbGFyaWZ5IHRoaW5ncy4gVW5kZXJzdGFuZGluZyB0aGlzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHRoZSBvdmVyYWxsIGRlc2lnbiBhbmQgYW55IHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMgb3IgZXh0ZXJuYWwgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxdWV1ZV9tYXBfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MjY4PUJURl9JRF9MSVNUX1NJTkdMRShxdWV1ZV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcXVldWVfc3RhY2spXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjk6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHF1ZXVlX21hcF9vcHMgPSB7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNzAtXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjA3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBxdWV1ZV9tYXBfb3BzYCBEZWNsYXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBxdWV1ZV9tYXBfb3BzYC4gSG9sZCBvbiBhIG1pbnV0ZeKApiBpc24mIzM5O3QgdGhhdCB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBleHRlcm5hbGx5LCBub3Qgc3RhdGljYWxseSB3aXRoaW4gdGhlIHNjb3BlIEkgd2FzIGp1c3QgZXhhbWluaW5nPyBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbGx5LCBtYXliZSBpbiB0aGUga2VybmVsIGhlYWRlcnMuIExldCBtZSBkb3VibGUtY2hlY2suIEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgaW4gYSBoZWFkZXIgcmVsYXRlZCB0byBCUEYsIGJ1dCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGZpbGUuIExldCYjMzk7cyBnbyB0byBgaW5jbHVkZS9saW51eC9icGYuaGAgb3Igc29tZXdoZXJlIHNpbWlsYXIgdG8gc2VlIGlmIEkgY2FuIHRyYWNlIHRoZSBkZWNsYXJhdGlvbiB0aGVyZS4gTm8sIHdhaXQsIEkgcmVtZW1iZXIgbm93LCBpdCBtYXkgd2VsbCBiZSBpbiBgaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaGAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBzaG91bGQgYmUgbG9va2luZyBmb3IgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGFuZCBwb3RlbnRpYWxseSB0aGUgZGVjbGFyYXRpb24uIFRpbWUgdG8gZ2V0IHRoYXQgZmlsZSBvcGVuIGFuZCB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3F1ZXVlX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTEyND1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JFVVNFUE9SVF9TT0NLQVJSQVksIHJldXNlcG9ydF9hcnJheV9vcHMpXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xMjYtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEyNzpCUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1FVRVVFLCBxdWV1ZV9tYXBfb3BzKVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xMjgtQlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9TVEFDSywgc3RhY2tfbWFwX29wcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MjcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBNYXAgQ3JlYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggQlBGIG1hcHMsIHNwZWNpZmljYWxseSBxdWV1ZS9zdGFjayBtYXBzLCBhbmQgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMgZm9yIGFuYWx5c2lzLiBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGV5JiMzOTtyZSByZWdpc3RlcmVkIHZpYSBgQlBGX01BUF9UWVBFYC4gVGhlIGtleSBoZXJlIGlzIHRvIGRldGVybWluZSB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBiZXN0IHRhcmdldHMgZm9yIGludmVzdGlnYXRpb24sIGdpdmVuIHRoZSBpbnN0cnVjdGlvbnMuCgpTaW5jZSB0aGUgZnVuY3Rpb25zIHdpdGhpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgIGFyZSBhbGwgc3RhdGljLCBteSBpbml0aWFsIGluc3RpbmN0cyB0ZWxsIG1lIHRvIGxvb2sgZWxzZXdoZXJlLiBUaGUgaW5zdHJ1Y3Rpb25zIGNsZWFybHkgZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cy4gVGhhdCBwb2ludHMgbWUgdG93YXJkIGBicGZfbWFwX2NyZWF0ZWAgb3IgYG1hcF9jcmVhdGVgIGluIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AuIEhvd2V2ZXIsIEkgY291bGQgY2hvb3NlIHRvIGFuYWx5emUgdGhlIHN0YXRpYyBmdW5jdGlvbnMgaWYgSSB3YW50ZWQsIGJ1dCB0aGUgaW5zdHJ1Y3Rpb25zIGFkdmlzZSBhZ2FpbnN0IHRoaXMgYmVjYXVzZSB0aGV5JiMzOTtyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4KCk5vdywgYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgKmlzKiBpbnRlcmVzdGluZyBiZWNhdXNlIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYG1hcF9hbGxvY19jaGVja2AsIGluIGBxdWV1ZV9tYXBfb3BzYC4gRnVuY3Rpb24gcG9pbnRlcnMgYXJlbiYjMzk7dCBpbmxpbmVkLCBzbyBpdCYjMzk7cyBhIHZhbGlkIGNob2ljZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIEhvd2V2ZXIsIEkgc3RpbGwgZmVlbCB0aGUgcHJvcGVyIGVudHJ5IHBvaW50IGlzIGBtYXBfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkgc2hvdWxkIGZvY3VzLiBTbywgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byBga2VybmVsL2JwZi9zeXNjYWxsLmNgIGFuZCBkaWcgaW50byBgbWFwX2NyZWF0ZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcF9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3N5c2NhbGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3N5c2NhbGwuYz0xMjQzPXN0YXRpYyBpbnQgbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX3Rva2VuICp0b2tlbixcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzY5LS8qIGNhbGxlZCB2aWEgc3lzY2FsbCAqL1xua2VybmVsL2JwZi9zeXNjYWxsLmM6MTM3MDpzdGF0aWMgaW50IG1hcF9jcmVhdGVfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTM3MS1cdFx0XHQgICAgc3RydWN0IGJwZl9tYXAgKiptYXBwLCBzdHJ1Y3QgYnBmX3Rva2VuICoqdG9rZW5wKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2MTctXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNjE4OnN0YXRpYyBpbnQgbWFwX2NyZWF0ZSh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsIHN0cnVjdCBicGZfY29tbW9uX2F0dHIgKmF0dHJfY29tbW9uLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYxOS1cdFx0ICAgICAgYnBmcHRyX3QgdWF0dHJfY29tbW9uLCB1MzIgc2l6ZV9jb21tb24pXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYzMS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE2MzI6XHRlcnIgPSBtYXBfY3JlYXRlX2FsbG9jKGF0dHIsIHVhdHRyLCBsb2csIFx1MDAyNm1hcCwgXHUwMDI2dG9rZW4pO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYzMy1cbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjQ5LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTY1MDpcdGVyciA9IHNlY3VyaXR5X2JwZl9tYXBfY3JlYXRlKG1hcCwgYXR0ciwgdG9rZW4sIHVhdHRyLmlzX2tlcm5lbCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjUxLVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02Mjk0PXN0YXRpYyBpbnQgX19zeXNfYnBmKGVudW0gYnBmX2NtZCBjbWQsIGJwZnB0cl90IHVhdHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MzM0LVx0Y2FzZSBCUEZfTUFQX0NSRUFURTpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjYzMzU6XHRcdGVyciA9IG1hcF9jcmVhdGUoXHUwMDI2YXR0ciwgdWF0dHIsIFx1MDAyNmF0dHJfY29tbW9uLCB1YXR0cl9jb21tb24sIHNpemVfY29tbW9uKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzMzYtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTczMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgUGF0Y2gqKgoKT2theSwgc28gYG1hcF9jcmVhdGVgIGZlZWxzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZGl2aW5nIGludG8gdGhpcy4gQW5kLCByaWdodCwgSSByZW1lbWJlciBub3csIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGlzbiYjMzk7dCBpbmxpbmVkIGJlY2F1c2UgaXQmIzM5O3MgYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIExldCBtZSBqdXN0IGNvbmZpcm0gd2hlcmUgdGhhdCBsaXZlcyDigJMgYWhhLCBpdCYjMzk7cyByaWdodCB0aGVyZSBpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgLCBhcyBleHBlY3RlZC4gVGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBmaXhpbmcgYW4gb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AuCgpGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXQgbG9va3MgZ29vZDsgaXQmIzM5O3MgcHJldmVudGluZyBhbiBpbnRlZ2VyIG92ZXJmbG93LCB3aGljaCwgaWYgZXhwbG9pdGVkLCBjb3VsZCBkZWZpbml0ZWx5IGxlYWQgdG8gc29tZSBuYXN0eSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MgaXNzdWVzLiBUaGUgbWFpbiBjb25maWd1cmF0aW9uIGludm9sdmVkIHNlZW1zIHRvIGJlIGBDT05GSUdfQlBGX1NZU0NBTExgLCBhbmQgeWVzLCB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IGVuYWJsZXIgZm9yIEJQRiBmdW5jdGlvbmFsaXR5LiBJJiMzOTtsbCBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLCB0byBlbnN1cmUgdGhlcmUgYXJlbuKAmXQgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE3MwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkxvY2F0aW5nIHRoZSBEZWZpbml0aW9uIG9mIGBCUEZfU1lTQ0FMTGAqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaW5kIG91dCB3aGVyZSBgQlBGX1NZU0NBTExgIGlzIGFjdHVhbGx5IGRlZmluZWQuIEl0JiMzOTtzIGEga2V5IGVsZW1lbnQgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSBCUEYgc3lzdGVtIGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwmIzM5O3Mgc3lzdGVtIGNhbGwgaW50ZXJmYWNlLCBidXQgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBtZWNoYW5pY3MgYW5kIGNvbnRleHQuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBpZWNlIGZpdHMgaW50byB0aGUgZ3JlYXRlciBwdXp6bGUuIEtub3dpbmcgdGhlIG9yaWdpbiBvZiB0aGlzIHN5bWJvbCB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgaXQgbWlnaHQgcmVsYXRlIHRvLCBhbmQgdWx0aW1hdGVseSwgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBodW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0NTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBCUEYgU3lzY2FsbCBEZXBlbmRlbmNpZXMgaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgYEJQRl9TWVNDQUxMYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGVsdmUgaW50byB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc3RhcnQgd2l0aCBga2VybmVsL2JwZi9LY29uZmlnYC4gVGhpcyBpcyB0aGUgcGxhY2Ugd2hlcmUgYWxsIHRoZSBCUEYtcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGxpa2VseSBkZWZpbmVkIGFuZCB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgSSYjMzk7bSBsb29raW5nIGZvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgQlBGX1NZU0NBTExgIGJlY29tZXMgYXZhaWxhYmxlIG9yIGhvdyBpdCBtaWdodCBpbmZsdWVuY2Ugb3RoZXIgZmVhdHVyZXMuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNzpcdGNvbmZpZyBCUEZfU1lTQ0FMTFxuICAyODpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiAgMjk6XHRcdHNlbGVjdCBCUEZcbiAgMzA6XHRcdHNlbGVjdCBJUlFfV09SS1xuICAzMTpcdFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXG4gIDMyOlx0XHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXG4gIDMzOlx0XHRzZWxlY3QgQklOQVJZX1BSSU5URlxuICAzNDpcdFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcbiAgMzU6XHRcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuICAzNjpcdFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbiAgMzc6XHRcdGRlZmF1bHQgblxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXG4gIDQwOlx0XHQgIGFuZCBtYXBzIHZpYSBmaWxlIGRlc2NyaXB0b3JzLlxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBCUEZfSklUXG4gIDQzOlx0XHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4gIDQ0Olx0XHRkZXBlbmRzIG9uIEJQRlxuICA0NTpcdFx0ZGVwZW5kcyBvbiBIQVZFX0NCUEZfSklUIHx8IEhBVkVfRUJQRl9KSVRcbiAgNDY6XHRcdHNlbGVjdCBFWEVDTUVNXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTM4CgkJCQkJCQlvdXRwdXQ6IDExNQoJCQkJCQkJdGhvdWdodHM6IDQzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGhhdmUgYW55IGV4cGxpY2l0IGRlcGVuZGVuY2llcyBsaXN0ZWQsIGp1c3QgaW1wbGllZCBvbmVzIGJhc2VkIG9uIHRoZSBjb2RlIGNoYW5nZXMuIFRoZSByZWxldmFudCBjb25maWcgdG8gZW5hYmxlIGhlcmUgc2VlbXMgdG8gYmUgYEJQRl9TWVNDQUxMYC4KCkxldCYjMzk7cyBxdWlja2x5IHJlY2FwIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nLiBBaCwgcmlnaHQsIHRoZSBib3VuZHMgY2hlY2suCgpgYGBjCgkvKgoJICogVGhlIHUzMiBoZWFkL3RhaWwgaW5kZXggaXMgbXVsdGlwbGllZCBieSB2YWx1ZV9zaXplIHRvIGFkZHJlc3MKCSAqIGVsZW1lbnRzW10uIEJvdW5kIHRoZSBtYXAgc2l6ZSBzbyB0aGUgcHJvZHVjdCBjYW5ub3Qgb3ZlcmZsb3cuCgkgKi8KCWlmICgodTY0KWF0dHItJmd0O21heF9lbnRyaWVzICogYXR0ci0mZ3Q7dmFsdWVfc2l6ZSAmZ3Q7IFUzMl9NQVgpCgkJcmV0dXJuIC1FMkJJRzsKYGBgCgpJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBmb2N1c2luZyBvbiBwcmV2ZW50aW5nIGFuIGludGVnZXIgb3ZlcmZsb3csIHBhcnRpY3VsYXJseSBpbiBgbWFwX2NyZWF0ZWAgd2l0aGluIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AgYW5kIG1vcmUgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbiBwb2ludGVyIHRhcmdldCBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AuIEV2ZW4gdGhvdWdoIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGlzIHN0YXRpYywgaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIGl0IGdldHMgaXRzIG93biBhZGRyZXNzIGFuZCBJIGNhbiBpbmNsdWRlIGl0LiBBY3R1YWxseSwgYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgaXMgdGhlICpleGFjdCogZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQsIHNvIEkmIzM5O20gZ29pbmcgdG8gaW5jbHVkZSBpdC4KCkkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIGZvciBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gVGhpcyBhbHNvIHRvdWNoZXMgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jYC4gVGhhdCYjMzk7cyBqdXN0IGEgc2VsZnRlc3QsIG5vdCBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCBidWlsZCwgYnV0IHRoZSBjaGFuZ2UgKml0c2VsZiogaXMgaW4gdGhlIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AgZmlsZS4KClNvLCB0aGUgY29uZmlnIEkgbmVlZCBpcyBzdGlsbCBgQlBGX1NZU0NBTExgLgoKQmFzaWNhbGx5LCB0aGlzIHBhdGNoIGFkZHMgYSBjcnVjaWFsIGJvdW5kcyBjaGVjayBpbiBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gY3JlYXRpbmcgQlBGIHF1ZXVlIGFuZCBzdGFjayBtYXBzLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IHdpdGhpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIGFmZmVjdGluZyBtYXAgY3JlYXRpb24sIHNwZWNpZmljYWxseSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLgoKQmVjYXVzZSBpdCB0b3VjaGVzIG1hcCBjcmVhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpBbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGFuIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtYXAgY3JlYXRpb24gbG9naWMgYW5kIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGFuIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtYXAgY3JlYXRpb24gbG9naWMgYW5kIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODowMS4xOTk1NDQzMTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQwNDQyNjIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hcF9jcmVhdGVcIixcbiAgICBcInF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgdG8gcHJldmVudCBhbiBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyB0aGUgY3JlYXRpb24gb2YgQlBGIHF1ZXVlIGFuZCBzdGFjayBtYXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWFwIGNyZWF0aW9uIGxvZ2ljIGFuZCBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODowMS4xOTk1NTIxMzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjIzNDM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJmYzNmNGEwNzUyZTYxMjdhMmI3ZWQ0YTM3ZDM5MGVkYTJmODc3ZTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgNyAwNDo1Nzo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXFxuaW5kZXggYzFjOWRlZTRkY2RkMC4uZjlmZjcwMWFiMjdiMCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY1xcbisrKyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXFxuQEAgLTU5LDYgKzU5LDEzIEBAIHN0YXRpYyBpbnQgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0cmV0dXJuIC1FMkJJRztcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSB1MzIgaGVhZC90YWlsIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgdmFsdWVfc2l6ZSB0byBhZGRyZXNzXFxuK1xcdCAqIGVsZW1lbnRzW10uIEJvdW5kIHRoZSBtYXAgc2l6ZSBzbyB0aGUgcHJvZHVjdCBjYW5ub3Qgb3ZlcmZsb3cuXFxuK1xcdCAqL1xcbitcXHRpZiAoKHU2NClhdHRyLVxcdTAwM2VtYXhfZW50cmllcyAqIGF0dHItXFx1MDAzZXZhbHVlX3NpemUgXFx1MDAzZSBVMzJfTUFYKVxcbitcXHRcXHRyZXR1cm4gLUUyQklHO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNcXG5pbmRleCA0MTQ0MTMyNWUxNzk0Li42ZjhhYzI4NWU3MTk2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNcXG5AQCAtMTAxLDggKzEwMSw0MiBAQCBzdGF0aWMgdm9pZCB0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKGludCB0eXBlKVxcbiBcXHRicGZfb2JqZWN0X19jbG9zZShvYmopO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X3F1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayh2b2lkKVxcbit7XFxuK1xcdExJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG9wdHMpO1xcbitcXHRjb25zdCBfX3UzMiBiaWdfdmFsdWUgPSAxIFxcdTAwM2NcXHUwMDNjIDIwOyAvKiAxTUIgKi9cXG4rXFx0aW50IGZkLCBzYXZlZF9lcnJubztcXG4rXFxuK1xcdC8qIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIHUzMiBpbmRleCBvdmVyZmxvdyBpbiBxdWV1ZS9zdGFjayBtYXBzOlxcbitcXHQgKiBhIG1hcCB3aG9zZSBlbGVtZW50IHN0b3JhZ2UgKG1heF9lbnRyaWVzICogdmFsdWVfc2l6ZSkgZXhjZWVkc1xcbitcXHQgKiBVMzJfTUFYIGJ5dGVzIG11c3QgYmUgcmVqZWN0ZWQgYXQgY3JlYXRpb24gdGltZSwgb3RoZXJ3aXNlIHRoZVxcbitcXHQgKiB1MzIgaGVhZC90YWlsIGluZGV4IG11bHRpcGxpY2F0aW9uIHdyYXBzIGFuZCBwdXNoL3BlZWsvcG9wXFxuK1xcdCAqIGFkZHJlc3MgdGhlIHdyb25nIGVsZW1lbnQuIDgxOTIgKiAxTUIgPSA4R0IgXFx1MDAzZSBVMzJfTUFYLlxcbitcXHQgKi9cXG4rXFx0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIGJpZ192YWx1ZSwgODE5MiwgXFx1MDAyNm9wdHMpO1xcbitcXHRzYXZlZF9lcnJubyA9IGVycm5vO1xcbitcXHRBU1NFUlRfTFQoZmQsIDAsIFxcXCJxdWV1ZV9vdmVyc2l6ZV9mZFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2F2ZWRfZXJybm8sIEUyQklHLCBcXFwicXVldWVfb3ZlcnNpemVfZXJybm9cXFwiKTtcXG4rXFx0aWYgKGZkIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKGZkKTtcXG4rXFxuK1xcdGZkID0gYnBmX21hcF9jcmVhdGUoQlBGX01BUF9UWVBFX1NUQUNLLCBOVUxMLCAwLCBiaWdfdmFsdWUsIDgxOTIsIFxcdTAwMjZvcHRzKTtcXG4rXFx0c2F2ZWRfZXJybm8gPSBlcnJubztcXG4rXFx0QVNTRVJUX0xUKGZkLCAwLCBcXFwic3RhY2tfb3ZlcnNpemVfZmRcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNhdmVkX2Vycm5vLCBFMkJJRywgXFxcInN0YWNrX292ZXJzaXplX2Vycm5vXFxcIik7XFxuK1xcdGlmIChmZCBcXHUwMDNlPSAwKVxcbitcXHRcXHRjbG9zZShmZCk7XFxuK1xcbitcXHQvKiBBIG5vcm1hbC1zaXplZCBtYXAgbXVzdCBzdGlsbCBiZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4gKi9cXG4rXFx0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIDY0LCAxMDAsIFxcdTAwMjZvcHRzKTtcXG4rXFx0QVNTRVJUX0dFKGZkLCAwLCBcXFwicXVldWVfbm9ybWFsX2ZkXFxcIik7XFxuK1xcdGlmIChmZCBcXHUwMDNlPSAwKVxcbitcXHRcXHRjbG9zZShmZCk7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXAodm9pZClcXG4ge1xcbiBcXHR0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKFFVRVVFKTtcXG4gXFx0dGVzdF9xdWV1ZV9zdGFja19tYXBfYnlfdHlwZShTVEFDSyk7XFxuK1xcdHRlc3RfcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKCk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MDEuNjYyNTE0MDA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ5NDE0NDc2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYXBfY3JlYXRlXCIsXG4gICAgXCJxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIHRvIHByZXZlbnQgYW4gaW50ZWdlciBvdmVyZmxvdyBkdXJpbmcgdGhlIGNyZWF0aW9uIG9mIEJQRiBxdWV1ZSBhbmQgc3RhY2sgbWFwcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIG1hcCBjcmVhdGlvbiBsb2dpYyBhbmQgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmZjM2Y0YTA3NTJlNjEyN2EyYjdlZDRhMzdkMzkwZWRhMmY4NzdlN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDQ6NTc6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXG5pbmRleCBjMWM5ZGVlNGRjZGQwLi5mOWZmNzAxYWIyN2IwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNcbisrKyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXG5AQCAtNTksNiArNTksMTMgQEAgc3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXHRcdCAqL1xuIFx0XHRyZXR1cm4gLUUyQklHO1xuIFxuK1x0LypcbitcdCAqIFRoZSB1MzIgaGVhZC90YWlsIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgdmFsdWVfc2l6ZSB0byBhZGRyZXNzXG4rXHQgKiBlbGVtZW50c1tdLiBCb3VuZCB0aGUgbWFwIHNpemUgc28gdGhlIHByb2R1Y3QgY2Fubm90IG92ZXJmbG93LlxuK1x0ICovXG4rXHRpZiAoKHU2NClhdHRyLVx1MDAzZW1heF9lbnRyaWVzICogYXR0ci1cdTAwM2V2YWx1ZV9zaXplIFx1MDAzZSBVMzJfTUFYKVxuK1x0XHRyZXR1cm4gLUUyQklHO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNcbmluZGV4IDQxNDQxMzI1ZTE3OTQuLjZmOGFjMjg1ZTcxOTYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNcbkBAIC0xMDEsOCArMTAxLDQyIEBAIHN0YXRpYyB2b2lkIHRlc3RfcXVldWVfc3RhY2tfbWFwX2J5X3R5cGUoaW50IHR5cGUpXG4gXHRicGZfb2JqZWN0X19jbG9zZShvYmopO1xuIH1cbiBcbitzdGF0aWMgdm9pZCB0ZXN0X3F1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayh2b2lkKVxuK3tcbitcdExJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG9wdHMpO1xuK1x0Y29uc3QgX191MzIgYmlnX3ZhbHVlID0gMSBcdTAwM2NcdTAwM2MgMjA7IC8qIDFNQiAqL1xuK1x0aW50IGZkLCBzYXZlZF9lcnJubztcbitcbitcdC8qIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIHUzMiBpbmRleCBvdmVyZmxvdyBpbiBxdWV1ZS9zdGFjayBtYXBzOlxuK1x0ICogYSBtYXAgd2hvc2UgZWxlbWVudCBzdG9yYWdlIChtYXhfZW50cmllcyAqIHZhbHVlX3NpemUpIGV4Y2VlZHNcbitcdCAqIFUzMl9NQVggYnl0ZXMgbXVzdCBiZSByZWplY3RlZCBhdCBjcmVhdGlvbiB0aW1lLCBvdGhlcndpc2UgdGhlXG4rXHQgKiB1MzIgaGVhZC90YWlsIGluZGV4IG11bHRpcGxpY2F0aW9uIHdyYXBzIGFuZCBwdXNoL3BlZWsvcG9wXG4rXHQgKiBhZGRyZXNzIHRoZSB3cm9uZyBlbGVtZW50LiA4MTkyICogMU1CID0gOEdCIFx1MDAzZSBVMzJfTUFYLlxuK1x0ICovXG4rXHRmZCA9IGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9RVUVVRSwgTlVMTCwgMCwgYmlnX3ZhbHVlLCA4MTkyLCBcdTAwMjZvcHRzKTtcbitcdHNhdmVkX2Vycm5vID0gZXJybm87XG4rXHRBU1NFUlRfTFQoZmQsIDAsIFwicXVldWVfb3ZlcnNpemVfZmRcIik7XG4rXHRBU1NFUlRfRVEoc2F2ZWRfZXJybm8sIEUyQklHLCBcInF1ZXVlX292ZXJzaXplX2Vycm5vXCIpO1xuK1x0aWYgKGZkIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UoZmQpO1xuK1xuK1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfU1RBQ0ssIE5VTEwsIDAsIGJpZ192YWx1ZSwgODE5MiwgXHUwMDI2b3B0cyk7XG4rXHRzYXZlZF9lcnJubyA9IGVycm5vO1xuK1x0QVNTRVJUX0xUKGZkLCAwLCBcInN0YWNrX292ZXJzaXplX2ZkXCIpO1xuK1x0QVNTRVJUX0VRKHNhdmVkX2Vycm5vLCBFMkJJRywgXCJzdGFja19vdmVyc2l6ZV9lcnJub1wiKTtcbitcdGlmIChmZCBcdTAwM2U9IDApXG4rXHRcdGNsb3NlKGZkKTtcbitcbitcdC8qIEEgbm9ybWFsLXNpemVkIG1hcCBtdXN0IHN0aWxsIGJlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiAqL1xuK1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIDY0LCAxMDAsIFx1MDAyNm9wdHMpO1xuK1x0QVNTRVJUX0dFKGZkLCAwLCBcInF1ZXVlX25vcm1hbF9mZFwiKTtcbitcdGlmIChmZCBcdTAwM2U9IDApXG4rXHRcdGNsb3NlKGZkKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3F1ZXVlX3N0YWNrX21hcCh2b2lkKVxuIHtcbiBcdHRlc3RfcXVldWVfc3RhY2tfbWFwX2J5X3R5cGUoUVVFVUUpO1xuIFx0dGVzdF9xdWV1ZV9zdGFja19tYXBfYnlfdHlwZShTVEFDSyk7XG4rXHR0ZXN0X3F1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjaygpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjAxLjY2MjUxNTUzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjU1MzMxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIEJQRiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgdGhpcyBuZXcgY2hlY2sgd2l0aGluIHRoZSBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCBmdW5jdGlvbi4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IGEgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgd2hlbiBjcmVhdGluZyBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFNwZWNpZmljYWxseSwgaXQncyBjaGVja2luZyB0aGF0IHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBgbWF4X2VudHJpZXNgIGFuZCBgdmFsdWVfc2l6ZWAgZG9lc24ndCBleGNlZWQgYFUzMl9NQVhgLiBUaGlzIGlzIGltcG9ydGFudCwgb2J2aW91c2x5LCBiZWNhdXNlIHRoZSByZXN1bHQgb2YgdGhhdCBtdWx0aXBsaWNhdGlvbiBpcyB1c2VkIHRvIGluZGV4IGFuIGFycmF5LCBgZWxlbWVudHNbXWAsIGFuZCBhbiBvdmVyZmxvdyB3b3VsZCBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCB3ZSBhYnNvbHV0ZWx5IGNhbm5vdCBoYXZlLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2Ugd2l0aGluIHRoZSBCUEYgc3Vic3lzdGVtLCBhbmQgc3BlY2lmaWNhbGx5LCBmb2N1c2VzIG9uIHRoZSBxdWV1ZSBhbmQgc3RhY2sgbWFwcywgd2hpY2ggbWFrZXMgc2Vuc2UuIFdlJ3JlIHRyeWluZyB0byBoYXJkZW4gdGhlIG1hcCBjcmVhdGlvbiBwcm9jZXNzLlxuXG5JIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IHZlcmlmeSB0aGUgQlBGIGNvbmZpZ3VyYXRpb24uIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyDigJMgcmlnaHQsIEJQRiBtYXBzIGFyZSBlbmFibGVkIHRocm91Z2ggYENPTkZJR19CUEZfU1lTQ0FMTGAuXG5cbk5vdywgbGV0J3MgdXNlIHRoZSBzdGFuZGFyZCB0b29scyB0byB2YWxpZGF0ZSB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MDYuMTI4MDUyMDIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODM0MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0zNj1zdGF0aWMgYm9vbCBxdWV1ZV9zdGFja19tYXBfaXNfZnVsbChzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpxcylcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQ2LS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo0NzpzdGF0aWMgaW50IHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00OC17XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0yNjk9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHF1ZXVlX21hcF9vcHMgPSB7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjcwLVxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNzE6XFx0Lm1hcF9hbGxvY19jaGVjayA9IHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNzItXFx0Lm1hcF9hbGxvYyA9IHF1ZXVlX3N0YWNrX21hcF9hbGxvYyxcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI4NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgc3RhY2tfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yODYtXFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4NzpcXHQubWFwX2FsbG9jX2NoZWNrID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrLFxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI4OC1cXHQubWFwX2FsbG9jID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODowNi4xNzE4OTE2MzdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAzMjc2MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgUXVldWUgYW5kIFN0YWNrIE1hcCBBbGxvY2F0aW9uKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbnRvIHRoaXMgYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgZnVuY3Rpb24uIEl0J3MgdHJpZ2dlcmVkIGR1cmluZyBtYXAgYWxsb2NhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHF1ZXVlIGFuZCBzdGFjayBtYXBzIOKAkyB0aGF0J3MgdGhlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCBldmVuICplbmFibGUqIHRoZSByZWxldmFudCBjb2RlIGluIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AuIFdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSB0aWVkIHRvIHRoYXQ/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBudWFuY2UgbGllczogYXJlIHRoZXNlIG1hcHMgY29uZGl0aW9uYWxseSBjb21waWxlZCwgb3IgYXJlIHRoZXJlIHJ1bnRpbWUgY2hlY2tzIGludm9sdmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGVudmlyb25tZW50YWwgY29uZGl0aW9ucyBkaWN0YXRlIHRoZWlyIGF2YWlsYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyMywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjA5LjM3NTE3MDUzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYwMzc4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9zdGFja19tYXBzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGhhc2h0YWIubyBhcnJheW1hcC5vIHBlcmNwdV9mcmVlbGlzdC5vIGJwZl9scnVfbGlzdC5vIGxwbV90cmllLm8gbWFwX2luX21hcC5vIGJsb29tX2ZpbHRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGxvY2FsX3N0b3JhZ2UubyBxdWV1ZV9zdGFja19tYXBzLm8gcmluZ2J1Zi5vIGJwZl9pbnNuX2FycmF5Lm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX2xvY2FsX3N0b3JhZ2UubyBicGZfdGFza19zdG9yYWdlLm9cXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NzI9Q0ZMQUdTX1JFTU9WRV9icGZfbHJ1X2xpc3QubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NzM6Q0ZMQUdTX1JFTU9WRV9xdWV1ZV9zdGFja19tYXBzLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTc0LUNGTEFHU19SRU1PVkVfbHBtX3RyaWUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODowOS40MjA3ODE2MjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgwNzQ4MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgU3RhY2svUXVldWUgTWFwIEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0J3MgYWxsIHByZWRpY2F0ZWQgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAsIHRoYXQncyB0aGUga2V5LiAgTm93LCB0aGUgdGhpbmcgdGhhdCdzIHNuYWdnaW5nIG15IGF0dGVudGlvbiBpcyB0aGlzIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGZ1bmN0aW9uLiBJdCdzIG1hcmtlZCBgc3RhdGljYCwgd2hpY2ggbWVhbnMgaXQncyBsaW1pdGVkIGluIHNjb3BlLCBidXQgdGhlbiBJIHNlZSBpdCdzIGJlaW5nIGFzc2lnbmVkIHRvIGBtYXBfYWxsb2NfY2hlY2tgIHdpdGhpbiBib3RoIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGVpciBzaGFyZWQgYmVoYXZpb3VyLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbnMgaGVyZSwgc28gbXkgbmV4dCBtb3ZlIGlzIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBib3RoIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgLiBBcmUgdGhleSB1c2VkIGluZGVwZW5kZW50bHkgb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBvcGVyYXRpb25zPyBBcmUgdGhlcmUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgc3BhY2UgdG8gc3R1ZHk/IEkga25vdyB0aGVyZSdzIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NgIGluIHRoZSBzYW1lIGZpbGUgdGhhdCdzIHdvcnRoIGEgbG9vaywgYW5kIEknbSBzdXJlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRvby4gSSdsbCBmb2N1cyBvbiB0aGVzZSBhcmVhcyB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjEzLjYwMTUzMjA2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQzNDk0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9zdGFja19tYXBfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MzY9c3RhdGljIGJvb2wgcXVldWVfc3RhY2tfbWFwX2lzX2Z1bGwoc3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMpXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00Ni0vKiBDYWxsZWQgZnJvbSBzeXNjYWxsICovXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NDc6c3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNDgte1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzEtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NzI6c3RhdGljIHN0cnVjdCBicGZfbWFwICpxdWV1ZV9zdGFja19tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzMte1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MjY5PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBxdWV1ZV9tYXBfb3BzID0ge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI3MC1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjcxOlxcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjcyOlxcdC5tYXBfYWxsb2MgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2MsXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjczLVxcdC5tYXBfZnJlZSA9IHF1ZXVlX3N0YWNrX21hcF9mcmVlLFxcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9Mjg1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBzdGFja19tYXBfb3BzID0ge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI4Ni1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Mjg3OlxcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Mjg4OlxcdC5tYXBfYWxsb2MgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2MsXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjg5LVxcdC5tYXBfZnJlZSA9IHF1ZXVlX3N0YWNrX21hcF9mcmVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoxMy42NDY5NzM3NThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjY2MjE1MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBtYXliZSBpdCdzIG5vdCB0aGUgbW9zdCBzdHJhdGVnaWMgZW50cnkgcG9pbnQgZm9yIGRlZXBlciBhbmFseXNpcy4gU3RhdGljIGZ1bmN0aW9ucyBjYW4gc29tZXRpbWVzIGJlIG1vcmUgY29udGFpbmVkLCBtZWFuaW5nIGZvY3VzaW5nIG9uICp0aGlzKiBzcGVjaWZpYyBzeW1ib2wgbWlnaHQgYmUgbWlzc2luZyBhIHdpZGVyIHN5c3RlbWljIGlzc3VlLiBNeSBpbnN0aW5jdHMgYXJlIG51ZGdpbmcgbWUgdG93YXJkcyBhIGJyb2FkZXIgdmlldy4gTGV0J3MgZGlnIGEgYml0IGRlZXBlciBpbnRvIHRoZSBjb2RlYmFzZS4gSSdtIGdvaW5nIHRvIHNoaWZ0IG15IGZvY3VzIGF3YXkgZnJvbSB0aGlzIGlzb2xhdGVkIHBpZWNlIG9mIGNvZGUgYW5kIHRvIGV4cGxvcmUgdGhlIGJyb2FkZXIgY29udGV4dCBieSBjaGVja2luZyBmb3Igbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgcXVldWUvc3RhY2sgbWFwcyBpbXBsZW1lbnRhdGlvbi4gU2VlaW5nIHRoZSBsYXJnZXIgc2V0IG9mIGZ1bmN0aW9ucywgcHVibGljIG9yIHByaXZhdGUsIHdpbGwgbGlrZWx5IHByb3ZpZGUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBkZXNpZ24gYW5kIHBvdGVudGlhbGx5IHJldmVhbCB3aGVyZSB0aGlzIG92ZXJmbG93IG1pZ2h0IGhhdmUgcHJvcGFnYXRlZCBmcm9tLCBvciB3aGVyZSBvdGhlciByZWxhdGVkIHZ1bG5lcmFiaWxpdGllcyBtYXkgZXhpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoxOC4zMTMxOTExOTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTYwOTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bXnN0YXRpY10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQtICpcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo1OiAqIENvcHlyaWdodCAoYykgMjAxOCBQb2xpdGVjbmljbyBkaSBUb3Jpbm9cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy02LSAqL1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTQtI2RlZmluZSBRVUVVRV9TVEFDS19DUkVBVEVfRkxBR19NQVNLIFxcXFxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNTpcXHQoQlBGX0ZfTlVNQV9OT0RFIHwgQlBGX0ZfQUNDRVNTX01BU0spXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTYtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTc9c3RydWN0IGJwZl9xdWV1ZV9zdGFjayB7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMi1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMzpcXHRjaGFyIGVsZW1lbnRzW10gX19hbGlnbmVkKDgpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI0LX07XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0yNj1zdGF0aWMgc3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqYnBmX3F1ZXVlX3N0YWNrKHN0cnVjdCBicGZfbWFwICptYXApXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjcte1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4OlxcdHJldHVybiBjb250YWluZXJfb2YobWFwLCBzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrLCBtYXApO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI5LX1cXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTM2PXN0YXRpYyBib29sIHF1ZXVlX3N0YWNrX21hcF9pc19mdWxsKHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzKVxcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMzktXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NDA6XFx0aWYgKHVubGlrZWx5KGhlYWQgXFx1MDAzZT0gcXMtXFx1MDAzZXNpemUpKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQxLVxcdFxcdGhlYWQgPSAwO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9NDc9c3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00OS1cXHQvKiBjaGVjayBzYW5pdHkgb2YgYXR0cmlidXRlcyAqL1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjUwOlxcdGlmIChhdHRyLVxcdTAwM2VtYXhfZW50cmllcyA9PSAwIHx8IGF0dHItXFx1MDAzZWtleV9zaXplICE9IDAgfHxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy01MS1cXHQgICAgYXR0ci1cXHUwMDNldmFsdWVfc2l6ZSA9PSAwIHx8XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNTItXFx0ICAgIGF0dHItXFx1MDAzZW1hcF9mbGFncyBcXHUwMDI2IH5RVUVVRV9TVEFDS19DUkVBVEVfRkxBR19NQVNLIHx8XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NTM6XFx0ICAgICFicGZfbWFwX2ZsYWdzX2FjY2Vzc19vayhhdHRyLVxcdTAwM2VtYXBfZmxhZ3MpKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTU0LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTU1LVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjU2OlxcdGlmIChhdHRyLVxcdTAwM2V2YWx1ZV9zaXplIFxcdTAwM2UgS01BTExPQ19NQVhfU0laRSlcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy01Ny1cXHRcXHQvKiBpZiB2YWx1ZV9zaXplIGlzIGJpZ2dlciwgdGhlIHVzZXIgc3BhY2Ugd29uJ3QgYmUgYWJsZSB0b1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNjUtXFx0ICovXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NjY6XFx0aWYgKCh1NjQpYXR0ci1cXHUwMDNlbWF4X2VudHJpZXMgKiBhdHRyLVxcdTAwM2V2YWx1ZV9zaXplIFxcdTAwM2UgVTMyX01BWClcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy02Ny1cXHRcXHRyZXR1cm4gLUUyQklHO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9NzI9c3RhdGljIHN0cnVjdCBicGZfbWFwICpxdWV1ZV9zdGFja19tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzMte1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjc0OlxcdGludCBudW1hX25vZGUgPSBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGF0dHIpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTc1LVxcdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzctXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Nzg6XFx0c2l6ZSA9ICh1NjQpIGF0dHItXFx1MDAzZW1heF9lbnRyaWVzICsgMTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo3OTpcXHRxdWV1ZV9zaXplID0gc2l6ZW9mKCpxcykgKyBzaXplICogYXR0ci1cXHUwMDNldmFsdWVfc2l6ZTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy04MC1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo4MTpcXHRxcyA9IGJwZl9tYXBfYXJlYV9hbGxvYyhxdWV1ZV9zaXplLCBudW1hX25vZGUpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjgyOlxcdGlmICghcXMpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODM6XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtODQtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODU6XFx0YnBmX21hcF9pbml0X2Zyb21fYXR0cihcXHUwMDI2cXMtXFx1MDAzZW1hcCwgYXR0cik7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtODYtXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy04OC1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo4OTpcXHRyYXdfcmVzX3NwaW5fbG9ja19pbml0KFxcdTAwMjZxcy1cXHUwMDNlbG9jayk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtOTAtXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz05NT1zdGF0aWMgdm9pZCBxdWV1ZV9zdGFja19tYXBfZnJlZShzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTk2LXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo5NzpcXHRzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpxcyA9IGJwZl9xdWV1ZV9zdGFjayhtYXApO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTk4LVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjk5OlxcdGJwZl9tYXBfYXJlYV9mcmVlKHFzKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMDAtfVxcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTAyPXN0YXRpYyBsb25nIF9fcXVldWVfbWFwX2dldChzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSwgYm9vbCBkZWxldGUpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTAzLXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMDQ6XFx0c3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMgPSBicGZfcXVldWVfc3RhY2sobWFwKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMDUtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEwOC1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMDk6XFx0aWYgKHJhd19yZXNfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnFzLVxcdTAwM2Vsb2NrLCBmbGFncykpIHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMTA6XFx0XFx0bWVtc2V0KHZhbHVlLCAwLCBxcy1cXHUwMDNlbWFwLnZhbHVlX3NpemUpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTExMS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTEzLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjExNDpcXHRpZiAocXVldWVfc3RhY2tfbWFwX2lzX2VtcHR5KHFzKSkge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjExNTpcXHRcXHRtZW1zZXQodmFsdWUsIDAsIHFzLVxcdTAwM2VtYXAudmFsdWVfc2l6ZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTE2LVxcdFxcdGVyciA9IC1FTk9FTlQ7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMjAtXFx0cHRyID0gXFx1MDAyNnFzLVxcdTAwM2VlbGVtZW50c1txcy1cXHUwMDNldGFpbCAqIHFzLVxcdTAwM2VtYXAudmFsdWVfc2l6ZV07XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTIxOlxcdG1lbWNweSh2YWx1ZSwgcHRyLCBxcy1cXHUwMDNlbWFwLnZhbHVlX3NpemUpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEyMi1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMjM6XFx0aWYgKGRlbGV0ZSkge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEyNDpcXHRcXHRpZiAodW5saWtlbHkoKytxcy1cXHUwMDNldGFpbCBcXHUwMDNlPSBxcy1cXHUwMDNlc2l6ZSkpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTI1LVxcdFxcdFxcdHFzLVxcdTAwM2V0YWlsID0gMDtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEyOC1vdXQ6XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTI5OlxcdHJhd19yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cXMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMzAtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTEzND1zdGF0aWMgbG9uZyBfX3N0YWNrX21hcF9nZXQoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsIGJvb2wgZGVsZXRlKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEzNS17XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTM2OlxcdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzID0gYnBmX3F1ZXVlX3N0YWNrKG1hcCk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTM3LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNDEtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTQyOlxcdGlmIChyYXdfcmVzX3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZxcy1cXHUwMDNlbG9jaywgZmxhZ3MpKSB7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTQzOlxcdFxcdG1lbXNldCh2YWx1ZSwgMCwgcXMtXFx1MDAzZW1hcC52YWx1ZV9zaXplKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNDQtXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0Ni1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNDc6XFx0aWYgKHF1ZXVlX3N0YWNrX21hcF9pc19lbXB0eShxcykpIHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNDg6XFx0XFx0bWVtc2V0KHZhbHVlLCAwLCBxcy1cXHUwMDNlbWFwLnZhbHVlX3NpemUpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0OS1cXHRcXHRlcnIgPSAtRU5PRU5UO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTUzLVxcdGluZGV4ID0gcXMtXFx1MDAzZWhlYWQgLSAxO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjE1NDpcXHRpZiAodW5saWtlbHkoaW5kZXggXFx1MDAzZT0gcXMtXFx1MDAzZXNpemUpKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE1NS1cXHRcXHRpbmRleCA9IHFzLVxcdTAwM2VzaXplIC0gMTtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE1Ny1cXHRwdHIgPSBcXHUwMDI2cXMtXFx1MDAzZWVsZW1lbnRzW2luZGV4ICogcXMtXFx1MDAzZW1hcC52YWx1ZV9zaXplXTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNTg6XFx0bWVtY3B5KHZhbHVlLCBwdHIsIHFzLVxcdTAwM2VtYXAudmFsdWVfc2l6ZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTU5LVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjE2MDpcXHRpZiAoZGVsZXRlKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2MS1cXHRcXHRxcy1cXHUwMDNlaGVhZCA9IGluZGV4O1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTYzLW91dDpcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNjQ6XFx0cmF3X3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZxcy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2NS1cXHRyZXR1cm4gZXJyO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTY5PXN0YXRpYyBsb25nIHF1ZXVlX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTcwLXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNzE6XFx0cmV0dXJuIF9fcXVldWVfbWFwX2dldChtYXAsIHZhbHVlLCBmYWxzZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTcyLX1cXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTE3NT1zdGF0aWMgbG9uZyBzdGFja19tYXBfcGVla19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE3Ni17XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTc3OlxcdHJldHVybiBfX3N0YWNrX21hcF9nZXQobWFwLCB2YWx1ZSwgZmFsc2UpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE3OC19XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0xODE9c3RhdGljIGxvbmcgcXVldWVfbWFwX3BvcF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE4Mi17XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTgzOlxcdHJldHVybiBfX3F1ZXVlX21hcF9nZXQobWFwLCB2YWx1ZSwgdHJ1ZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTg0LX1cXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTE4Nz1zdGF0aWMgbG9uZyBzdGFja19tYXBfcG9wX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTg4LXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxODk6XFx0cmV0dXJuIF9fc3RhY2tfbWFwX2dldChtYXAsIHZhbHVlLCB0cnVlKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xOTAtfVxcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTkzPXN0YXRpYyBsb25nIHF1ZXVlX3N0YWNrX21hcF9wdXNoX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xOTUte1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjE5NjpcXHRzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpxcyA9IGJwZl9xdWV1ZV9zdGFjayhtYXApO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE5Ny1cXHR1bnNpZ25lZCBsb25nIGlycV9mbGFncztcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIwMy1cXHQgKi9cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMDQ6XFx0Ym9vbCByZXBsYWNlID0gKGZsYWdzIFxcdTAwMjYgQlBGX0VYSVNUKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMDUtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA2LVxcdC8qIENoZWNrIHN1cHBvcnRlZCBmbGFncyBmb3IgcXVldWUgYW5kIHN0YWNrIG1hcHMgKi9cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMDc6XFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX05PRVhJU1QgfHwgZmxhZ3MgXFx1MDAzZSBCUEZfRVhJU1QpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA4LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIwOS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMTA6XFx0aWYgKHJhd19yZXNfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnFzLVxcdTAwM2Vsb2NrLCBpcnFfZmxhZ3MpKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIxMS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIxMi1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMTM6XFx0aWYgKHF1ZXVlX3N0YWNrX21hcF9pc19mdWxsKHFzKSkge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIxNDpcXHRcXHRpZiAoIXJlcGxhY2UpIHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMTUtXFx0XFx0XFx0ZXJyID0gLUUyQklHO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjE4LVxcdFxcdC8qIGFkdmFuY2UgdGFpbCBwb2ludGVyIHRvIG92ZXJ3cml0ZSBvbGRlc3QgZWxlbWVudCAqL1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIxOTpcXHRcXHRpZiAodW5saWtlbHkoKytxcy1cXHUwMDNldGFpbCBcXHUwMDNlPSBxcy1cXHUwMDNlc2l6ZSkpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjIwLVxcdFxcdFxcdHFzLVxcdTAwM2V0YWlsID0gMDtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIyMy1cXHRkc3QgPSBcXHUwMDI2cXMtXFx1MDAzZWVsZW1lbnRzW3FzLVxcdTAwM2VoZWFkICogcXMtXFx1MDAzZW1hcC52YWx1ZV9zaXplXTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMjQ6XFx0bWVtY3B5KGRzdCwgdmFsdWUsIHFzLVxcdTAwM2VtYXAudmFsdWVfc2l6ZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjI1LVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIyNjpcXHRpZiAodW5saWtlbHkoKytxcy1cXHUwMDNlaGVhZCBcXHUwMDNlPSBxcy1cXHUwMDNlc2l6ZSkpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjI3LVxcdFxcdHFzLVxcdTAwM2VoZWFkID0gMDtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIyOS1vdXQ6XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjMwOlxcdHJhd19yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cXMtXFx1MDAzZWxvY2ssIGlycV9mbGFncyk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjMxLVxcdHJldHVybiBlcnI7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0yNjA9c3RhdGljIHU2NCBxdWV1ZV9zdGFja19tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjYxLXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjI6XFx0dTY0IHVzYWdlID0gc2l6ZW9mKHN0cnVjdCBicGZfcXVldWVfc3RhY2spO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI2My1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjQ6XFx0dXNhZ2UgKz0gKCh1NjQpbWFwLVxcdTAwM2VtYXhfZW50cmllcyArIDEpICogbWFwLVxcdTAwM2V2YWx1ZV9zaXplO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI2NS1cXHRyZXR1cm4gdXNhZ2U7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNjctXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjY4OkJURl9JRF9MSVNUX1NJTkdMRShxdWV1ZV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcXVldWVfc3RhY2spXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjY5LWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBxdWV1ZV9tYXBfb3BzID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoxOC4zNTgzODMxOTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyMTIyODAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFNjb3BlIG9mIFRoZXNlIERhdGEgU3RydWN0dXJlIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBxdWV1ZV9tYXBfcGVla19lbGVtYCwgYHN0YWNrX21hcF9wZWVrX2VsZW1gLCBgcXVldWVfbWFwX3BvcF9lbGVtYCwgYHN0YWNrX21hcF9wb3BfZWxlbWAsIGFuZCBgcXVldWVfc3RhY2tfbWFwX3B1c2hfZWxlbWAuIFRoZXkgYXJlIGRlY2xhcmVkIGBzdGF0aWNgLi4uIGludGVyZXN0aW5nLiBUaGlzIHRlbGxzIG1lIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggaXMgZ29vZCBmb3IgZW5jYXBzdWxhdGlvbi4gQnV0IGl0IG1ha2VzIG1lIHdvbmRlciwgYXJlIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgIGFsc28gYHN0YXRpY2A/IEFuZCBtb3JlIGltcG9ydGFudGx5LCBhcmUgdGhleSAqZXhwb3J0ZWQqIG9yIHVzZWQgaW4gZXh0ZXJuYWwgbW9kdWxlcz9cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHNjb3BlIG9mIHRoZXNlIGBvcHNgIHN0cnVjdHVyZXMuIElmIHRoZXkncmUgdmlzaWJsZSBvdXRzaWRlLCB0aGV5IG5lZWQgbW9yZSBjYXJlLiBMZXQncyBzdGFydCBieSBmaWd1cmluZyBvdXQgd2hlcmUgYHF1ZXVlX21hcF9vcHNgIGlzIGFjdHVhbGx5IHVzZWQuIEEgcXVpY2sgc2VhcmNoIHNob3VsZCBjbGFyaWZ5IHRoaW5ncy4gVW5kZXJzdGFuZGluZyB0aGlzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHRoZSBvdmVyYWxsIGRlc2lnbiBhbmQgYW55IHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMgb3IgZXh0ZXJuYWwgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzQ2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MjIuNjc5NjEzNDY3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA5OTAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2OD1CVEZfSURfTElTVF9TSU5HTEUocXVldWVfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3F1ZXVlX3N0YWNrKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI2OTpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcXVldWVfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNzAtXFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoyMi43MjY3MTcwODJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzMzUzNTYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBxdWV1ZV9tYXBfb3BzYCBEZWNsYXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgcXVldWVfbWFwX29wc2AuIEhvbGQgb24gYSBtaW51dGXigKYgaXNuJ3QgdGhhdCB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBleHRlcm5hbGx5LCBub3Qgc3RhdGljYWxseSB3aXRoaW4gdGhlIHNjb3BlIEkgd2FzIGp1c3QgZXhhbWluaW5nPyBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbGx5LCBtYXliZSBpbiB0aGUga2VybmVsIGhlYWRlcnMuIExldCBtZSBkb3VibGUtY2hlY2suIEknbSBwcmV0dHkgc3VyZSBpdCdzIGluIGEgaGVhZGVyIHJlbGF0ZWQgdG8gQlBGLCBidXQgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBmaWxlLiBMZXQncyBnbyB0byBgaW5jbHVkZS9saW51eC9icGYuaGAgb3Igc29tZXdoZXJlIHNpbWlsYXIgdG8gc2VlIGlmIEkgY2FuIHRyYWNlIHRoZSBkZWNsYXJhdGlvbiB0aGVyZS4gTm8sIHdhaXQsIEkgcmVtZW1iZXIgbm93LCBpdCBtYXkgd2VsbCBiZSBpbiBgaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaGAuIFRoYXQncyB3aGVyZSBJIHNob3VsZCBiZSBsb29raW5nIGZvciB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gYW5kIHBvdGVudGlhbGx5IHRoZSBkZWNsYXJhdGlvbi4gVGltZSB0byBnZXQgdGhhdCBmaWxlIG9wZW4gYW5kIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMDcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoyNi42NjAyNTY2NjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjY1OTAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9MTI0PUJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfUkVVU0VQT1JUX1NPQ0tBUlJBWSwgcmV1c2Vwb3J0X2FycmF5X29wcylcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTI2LSNlbmRpZlxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6MTI3OkJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfUVVFVUUsIHF1ZXVlX21hcF9vcHMpXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xMjgtQlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9TVEFDSywgc3RhY2tfbWFwX29wcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MjYuODc2OTIwNDM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NzI4NzY2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBNYXAgQ3JlYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIEJQRiBtYXBzLCBzcGVjaWZpY2FsbHkgcXVldWUvc3RhY2sgbWFwcywgYW5kIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzIGZvciBhbmFseXNpcy4gSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGV5J3JlIHJlZ2lzdGVyZWQgdmlhIGBCUEZfTUFQX1RZUEVgLiBUaGUga2V5IGhlcmUgaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGJlc3QgdGFyZ2V0cyBmb3IgaW52ZXN0aWdhdGlvbiwgZ2l2ZW4gdGhlIGluc3RydWN0aW9ucy5cblxuU2luY2UgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gYGtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jYCBhcmUgYWxsIHN0YXRpYywgbXkgaW5pdGlhbCBpbnN0aW5jdHMgdGVsbCBtZSB0byBsb29rIGVsc2V3aGVyZS4gVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeSBwb2ludHMuIFRoYXQgcG9pbnRzIG1lIHRvd2FyZCBgYnBmX21hcF9jcmVhdGVgIG9yIGBtYXBfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBIb3dldmVyLCBJIGNvdWxkIGNob29zZSB0byBhbmFseXplIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGlmIEkgd2FudGVkLCBidXQgdGhlIGluc3RydWN0aW9ucyBhZHZpc2UgYWdhaW5zdCB0aGlzIGJlY2F1c2UgdGhleSdyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLlxuXG5Ob3csIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgICppcyogaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYG1hcF9hbGxvY19jaGVja2AsIGluIGBxdWV1ZV9tYXBfb3BzYC4gRnVuY3Rpb24gcG9pbnRlcnMgYXJlbid0IGlubGluZWQsIHNvIGl0J3MgYSB2YWxpZCBjaG9pY2UuIFRoYXQncyBnb29kIHRvIGtub3cuIEhvd2V2ZXIsIEkgc3RpbGwgZmVlbCB0aGUgcHJvcGVyIGVudHJ5IHBvaW50IGlzIGBtYXBfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBUaGF0J3Mgd2hlcmUgSSBzaG91bGQgZm9jdXMuIFNvLCBsZXQncyBoZWFkIG92ZXIgdG8gYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBhbmQgZGlnIGludG8gYG1hcF9jcmVhdGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYyNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODozMi42NDk3OTk0MThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNDI3MTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcF9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9zeXNjYWxsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9zeXNjYWxsLmM9MTI0Mz1zdGF0aWMgaW50IG1hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl90b2tlbiAqdG9rZW4sXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzY5LS8qIGNhbGxlZCB2aWEgc3lzY2FsbCAqL1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzNzA6c3RhdGljIGludCBtYXBfY3JlYXRlX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzcxLVxcdFxcdFxcdCAgICBzdHJ1Y3QgYnBmX21hcCAqKm1hcHAsIHN0cnVjdCBicGZfdG9rZW4gKip0b2tlbnApXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjE3LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE2MTg6c3RhdGljIGludCBtYXBfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9jb21tb25fYXR0ciAqYXR0cl9jb21tb24sXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYxOS1cXHRcXHQgICAgICBicGZwdHJfdCB1YXR0cl9jb21tb24sIHUzMiBzaXplX2NvbW1vbilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2MzEtXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTYzMjpcXHRlcnIgPSBtYXBfY3JlYXRlX2FsbG9jKGF0dHIsIHVhdHRyLCBsb2csIFxcdTAwMjZtYXAsIFxcdTAwMjZ0b2tlbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYzMy1cXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2NDktXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTY1MDpcXHRlcnIgPSBzZWN1cml0eV9icGZfbWFwX2NyZWF0ZShtYXAsIGF0dHIsIHRva2VuLCB1YXR0ci5pc19rZXJuZWwpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2NTEtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTYyOTQ9c3RhdGljIGludCBfX3N5c19icGYoZW51bSBicGZfY21kIGNtZCwgYnBmcHRyX3QgdWF0dHIsIHVuc2lnbmVkIGludCBzaXplLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjMzNC1cXHRjYXNlIEJQRl9NQVBfQ1JFQVRFOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjYzMzU6XFx0XFx0ZXJyID0gbWFwX2NyZWF0ZShcXHUwMDI2YXR0ciwgdWF0dHIsIFxcdTAwMjZhdHRyX2NvbW1vbiwgdWF0dHJfY29tbW9uLCBzaXplX2NvbW1vbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjMzNi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MzIuNzAyMjMxOTcyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NzEzODcxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFBhdGNoKipcblxuT2theSwgc28gYG1hcF9jcmVhdGVgIGZlZWxzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZGl2aW5nIGludG8gdGhpcy4gQW5kLCByaWdodCwgSSByZW1lbWJlciBub3csIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGlzbid0IGlubGluZWQgYmVjYXVzZSBpdCdzIGJlaW5nIHBhc3NlZCBhcm91bmQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBMZXQgbWUganVzdCBjb25maXJtIHdoZXJlIHRoYXQgbGl2ZXMg4oCTIGFoYSwgaXQncyByaWdodCB0aGVyZSBpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgLCBhcyBleHBlY3RlZC4gVGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBmaXhpbmcgYW4gb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCBsb29rcyBnb29kOyBpdCdzIHByZXZlbnRpbmcgYW4gaW50ZWdlciBvdmVyZmxvdywgd2hpY2gsIGlmIGV4cGxvaXRlZCwgY291bGQgZGVmaW5pdGVseSBsZWFkIHRvIHNvbWUgbmFzdHkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIGlzc3Vlcy4gVGhlIG1haW4gY29uZmlndXJhdGlvbiBpbnZvbHZlZCBzZWVtcyB0byBiZSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYW5kIHllcywgdGhhdCdzIHRoZSBwcmltYXJ5IGVuYWJsZXIgZm9yIEJQRiBmdW5jdGlvbmFsaXR5LiBJJ2xsIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2gsIHRvIGVuc3VyZSB0aGVyZSBhcmVu4oCZdCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIHdlIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTczMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODozNy40NzM2MjE5OTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTAwOTc5MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9TWVNDQUxMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MzcuNjY0NjQ4MDAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjE2ODAyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6XG5cbioqTG9jYXRpbmcgdGhlIERlZmluaXRpb24gb2YgYEJQRl9TWVNDQUxMYCoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCBvdXQgd2hlcmUgYEJQRl9TWVNDQUxMYCBpcyBhY3R1YWxseSBkZWZpbmVkLiBJdCdzIGEga2V5IGVsZW1lbnQgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSBCUEYgc3lzdGVtIGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwncyBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UsIGJ1dCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGRlZmluaXRpb24gdG8gZnVsbHkgZ3Jhc3AgdGhlIG1lY2hhbmljcyBhbmQgY29udGV4dC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgcGllY2UgZml0cyBpbnRvIHRoZSBncmVhdGVyIHB1enpsZS4gS25vd2luZyB0aGUgb3JpZ2luIG9mIHRoaXMgc3ltYm9sIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIGhvdyBpdCdzIGJlaW5nIHVzZWQsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1pZ2h0IHJlbGF0ZSB0bywgYW5kIHVsdGltYXRlbHksIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uIExldCdzIHN0YXJ0IHRoZSBodW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjE3MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjQwLjYyNjMzMTYzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NTYxNTU2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6NDIuMzExOTU1MjM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzY2NjQ5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIEJQRiBTeXNjYWxsIERlcGVuZGVuY2llcyBpbiB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIGBCUEZfU1lTQ0FMTGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdsbCBzdGFydCB3aXRoIGBrZXJuZWwvYnBmL0tjb25maWdgLiBUaGlzIGlzIHRoZSBwbGFjZSB3aGVyZSBhbGwgdGhlIEJQRi1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgbGlrZWx5IGRlZmluZWQgYW5kIHdoZXJlIEknbGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIEknbSBsb29raW5nIGZvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgQlBGX1NZU0NBTExgIGJlY29tZXMgYXZhaWxhYmxlIG9yIGhvdyBpdCBtaWdodCBpbmZsdWVuY2Ugb3RoZXIgZmVhdHVyZXMuIEl0J3MgYSBmdW5kYW1lbnRhbCBzdGVwIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgQlBGIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0NTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODo0OC40ODg2MjQwNjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI3OlxcdGNvbmZpZyBCUEZfU1lTQ0FMTFxcbiAgMjg6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcbiAgMjk6XFx0XFx0c2VsZWN0IEJQRlxcbiAgMzA6XFx0XFx0c2VsZWN0IElSUV9XT1JLXFxuICAzMTpcXHRcXHRzZWxlY3QgTkVFRF9UQVNLU19SQ1VcXG4gIDMyOlxcdFxcdHNlbGVjdCBUQVNLU19UUkFDRV9SQ1VcXG4gIDMzOlxcdFxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxcbiAgMzU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuICAzNjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbiAgMzc6XFx0XFx0ZGVmYXVsdCBuXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIEVuYWJsZSB0aGUgYnBmKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBCUEYgcHJvZ3JhbXNcXG4gIDQwOlxcdFxcdCAgYW5kIG1hcHMgdmlhIGZpbGUgZGVzY3JpcHRvcnMuXFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBCUEZfSklUXFxuICA0MzpcXHRcXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG4gIDQ0OlxcdFxcdGRlcGVuZHMgb24gQlBGXFxuICA0NTpcXHRcXHRkZXBlbmRzIG9uIEhBVkVfQ0JQRl9KSVQgfHwgSEFWRV9FQlBGX0pJVFxcbiAgNDY6XFx0XFx0c2VsZWN0IEVYRUNNRU1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6NDguNDg4NjkwNDU3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzcyNzg3ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGRvZXNuJ3QgaGF2ZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGxpc3RlZCwganVzdCBpbXBsaWVkIG9uZXMgYmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcy4gVGhlIHJlbGV2YW50IGNvbmZpZyB0byBlbmFibGUgaGVyZSBzZWVtcyB0byBiZSBgQlBGX1NZU0NBTExgLlxuXG5MZXQncyBxdWlja2x5IHJlY2FwIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nLiBBaCwgcmlnaHQsIHRoZSBib3VuZHMgY2hlY2suXG5cbmBgYGNcblx0Lypcblx0ICogVGhlIHUzMiBoZWFkL3RhaWwgaW5kZXggaXMgbXVsdGlwbGllZCBieSB2YWx1ZV9zaXplIHRvIGFkZHJlc3Ncblx0ICogZWxlbWVudHNbXS4gQm91bmQgdGhlIG1hcCBzaXplIHNvIHRoZSBwcm9kdWN0IGNhbm5vdCBvdmVyZmxvdy5cblx0ICovXG5cdGlmICgodTY0KWF0dHItXHUwMDNlbWF4X2VudHJpZXMgKiBhdHRyLVx1MDAzZXZhbHVlX3NpemUgXHUwMDNlIFUzMl9NQVgpXG5cdFx0cmV0dXJuIC1FMkJJRztcbmBgYFxuXG5JdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGZvY3VzaW5nIG9uIHByZXZlbnRpbmcgYW4gaW50ZWdlciBvdmVyZmxvdywgcGFydGljdWxhcmx5IGluIGBtYXBfY3JlYXRlYCB3aXRoaW4gYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBhbmQgbW9yZSBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFyZ2V0IGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGxvY2F0ZWQgaW4gYGtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jYC4gRXZlbiB0aG91Z2ggYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgaXMgc3RhdGljLCBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBzbyBpdCBnZXRzIGl0cyBvd24gYWRkcmVzcyBhbmQgSSBjYW4gaW5jbHVkZSBpdC4gQWN0dWFsbHksIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGlzIHRoZSAqZXhhY3QqIGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkLCBzbyBJJ20gZ29pbmcgdG8gaW5jbHVkZSBpdC5cblxuSSBzaG91bGQgYWxzbyBkb3VibGUtY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGlzIGFsc28gdG91Y2hlcyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNgLiBUaGF0J3MganVzdCBhIHNlbGZ0ZXN0LCBub3QgcGFydCBvZiB0aGUgY29yZSBrZXJuZWwgYnVpbGQsIGJ1dCB0aGUgY2hhbmdlICppdHNlbGYqIGlzIGluIHRoZSBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgIGZpbGUuXG5cblNvLCB0aGUgY29uZmlnIEkgbmVlZCBpcyBzdGlsbCBgQlBGX1NZU0NBTExgLlxuXG5CYXNpY2FsbHksIHRoaXMgcGF0Y2ggYWRkcyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIGluIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjcmVhdGluZyBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBkaXJlY3RseSB3aXRoaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSBhZmZlY3RpbmcgbWFwIGNyZWF0aW9uLCBzcGVjaWZpY2FsbHkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy5cblxuQmVjYXVzZSBpdCB0b3VjaGVzIG1hcCBjcmVhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzLCBpdCdzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuQWxyaWdodCwgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTM4LCJPdXRwdXRUb2tlbnMiOjExNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjU2LjUyNTk3Mjg2NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3OTg1OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hcF9jcmVhdGVcIixcbiAgICBcInF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgdG8gcHJldmVudCBhbiBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyB0aGUgY3JlYXRpb24gb2YgQlBGIHF1ZXVlIGFuZCBzdGFjayBtYXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWFwIGNyZWF0aW9uIGxvZ2ljIGFuZCBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFwX2NyZWF0ZVwiLFxuICAgIFwicXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGFuIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtYXAgY3JlYXRpb24gbG9naWMgYW5kIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow5fspw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 04:41:04 +0000 UTC FinishedAt: 2026-08-07 04:58:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "8c7f55d60aa3512fd3da7e9cf313723460e487b4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "8c7f55d60aa3512fd3da7e9cf313723460e487b4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "28c408dd-c8f5-4ac2-a118-8cd6105d2665" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "map_create", "queue_stack_map_alloc_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGFuIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtYXAgY3JlYXRpb24gbG9naWMgYW5kIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZmMzZjRhMDc1MmU2MTI3YTJiN2VkNGEzN2QzOTBlZGEyZjg3N2U3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNDo1Nzo1OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXG5pbmRleCBjMWM5ZGVlNGRjZGQwLi5mOWZmNzAxYWIyN2IwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXG5AQCAtNTksNiAmIzQzOzU5LDEzIEBAIHN0YXRpYyBpbnQgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuIFx0XHQgKi9cbiBcdFx0cmV0dXJuIC1FMkJJRztcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSB1MzIgaGVhZC90YWlsIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgdmFsdWVfc2l6ZSB0byBhZGRyZXNzXG4mIzQzO1x0ICogZWxlbWVudHNbXS4gQm91bmQgdGhlIG1hcCBzaXplIHNvIHRoZSBwcm9kdWN0IGNhbm5vdCBvdmVyZmxvdy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKHU2NClhdHRyLVx1MDAzZW1heF9lbnRyaWVzICogYXR0ci1cdTAwM2V2YWx1ZV9zaXplIFx1MDAzZSBVMzJfTUFYKVxuJiM0MztcdFx0cmV0dXJuIC1FMkJJRztcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuY1xuaW5kZXggNDE0NDEzMjVlMTc5NC4uNmY4YWMyODVlNzE5NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuY1xuQEAgLTEwMSw4ICYjNDM7MTAxLDQyIEBAIHN0YXRpYyB2b2lkIHRlc3RfcXVldWVfc3RhY2tfbWFwX2J5X3R5cGUoaW50IHR5cGUpXG4gXHRicGZfb2JqZWN0X19jbG9zZShvYmopO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodm9pZClcbiYjNDM7e1xuJiM0MztcdExJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG9wdHMpO1xuJiM0MztcdGNvbnN0IF9fdTMyIGJpZ192YWx1ZSA9IDEgXHUwMDNjXHUwMDNjIDIwOyAvKiAxTUIgKi9cbiYjNDM7XHRpbnQgZmQsIHNhdmVkX2Vycm5vO1xuJiM0MztcbiYjNDM7XHQvKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSB1MzIgaW5kZXggb3ZlcmZsb3cgaW4gcXVldWUvc3RhY2sgbWFwczpcbiYjNDM7XHQgKiBhIG1hcCB3aG9zZSBlbGVtZW50IHN0b3JhZ2UgKG1heF9lbnRyaWVzICogdmFsdWVfc2l6ZSkgZXhjZWVkc1xuJiM0MztcdCAqIFUzMl9NQVggYnl0ZXMgbXVzdCBiZSByZWplY3RlZCBhdCBjcmVhdGlvbiB0aW1lLCBvdGhlcndpc2UgdGhlXG4mIzQzO1x0ICogdTMyIGhlYWQvdGFpbCBpbmRleCBtdWx0aXBsaWNhdGlvbiB3cmFwcyBhbmQgcHVzaC9wZWVrL3BvcFxuJiM0MztcdCAqIGFkZHJlc3MgdGhlIHdyb25nIGVsZW1lbnQuIDgxOTIgKiAxTUIgPSA4R0IgXHUwMDNlIFUzMl9NQVguXG4mIzQzO1x0ICovXG4mIzQzO1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIGJpZ192YWx1ZSwgODE5MiwgXHUwMDI2b3B0cyk7XG4mIzQzO1x0c2F2ZWRfZXJybm8gPSBlcnJubztcbiYjNDM7XHRBU1NFUlRfTFQoZmQsIDAsIFwmIzM0O3F1ZXVlX292ZXJzaXplX2ZkXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2F2ZWRfZXJybm8sIEUyQklHLCBcJiMzNDtxdWV1ZV9vdmVyc2l6ZV9lcnJub1wmIzM0Oyk7XG4mIzQzO1x0aWYgKGZkIFx1MDAzZT0gMClcbiYjNDM7XHRcdGNsb3NlKGZkKTtcbiYjNDM7XG4mIzQzO1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfU1RBQ0ssIE5VTEwsIDAsIGJpZ192YWx1ZSwgODE5MiwgXHUwMDI2b3B0cyk7XG4mIzQzO1x0c2F2ZWRfZXJybm8gPSBlcnJubztcbiYjNDM7XHRBU1NFUlRfTFQoZmQsIDAsIFwmIzM0O3N0YWNrX292ZXJzaXplX2ZkXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2F2ZWRfZXJybm8sIEUyQklHLCBcJiMzNDtzdGFja19vdmVyc2l6ZV9lcnJub1wmIzM0Oyk7XG4mIzQzO1x0aWYgKGZkIFx1MDAzZT0gMClcbiYjNDM7XHRcdGNsb3NlKGZkKTtcbiYjNDM7XG4mIzQzO1x0LyogQSBub3JtYWwtc2l6ZWQgbWFwIG11c3Qgc3RpbGwgYmUgY3JlYXRlZCBzdWNjZXNzZnVsbHkuICovXG4mIzQzO1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIDY0LCAxMDAsIFx1MDAyNm9wdHMpO1xuJiM0MztcdEFTU0VSVF9HRShmZCwgMCwgXCYjMzQ7cXVldWVfbm9ybWFsX2ZkXCYjMzQ7KTtcbiYjNDM7XHRpZiAoZmQgXHUwMDNlPSAwKVxuJiM0MztcdFx0Y2xvc2UoZmQpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXAodm9pZClcbiB7XG4gXHR0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKFFVRVVFKTtcbiBcdHRlc3RfcXVldWVfc3RhY2tfbWFwX2J5X3R5cGUoU1RBQ0spO1xuJiM0MztcdHRlc3RfcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKCk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7cXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgdG8gcHJldmVudCBhbiBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyB0aGUgY3JlYXRpb24gb2YgQlBGIHF1ZXVlIGFuZCBzdGFjayBtYXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWFwIGNyZWF0aW9uIGxvZ2ljIGFuZCBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmZjM2Y0YTA3NTJlNjEyN2EyYjdlZDRhMzdkMzkwZWRhMmY4NzdlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDQ6NTc6NTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jCmluZGV4IGMxYzlkZWU0ZGNkZDAuLmY5ZmY3MDFhYjI3YjAgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jCkBAIC01OSw2ICYjNDM7NTksMTMgQEAgc3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpCiAJCSAqLwogCQlyZXR1cm4gLUUyQklHOwogCiYjNDM7CS8qCiYjNDM7CSAqIFRoZSB1MzIgaGVhZC90YWlsIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgdmFsdWVfc2l6ZSB0byBhZGRyZXNzCiYjNDM7CSAqIGVsZW1lbnRzW10uIEJvdW5kIHRoZSBtYXAgc2l6ZSBzbyB0aGUgcHJvZHVjdCBjYW5ub3Qgb3ZlcmZsb3cuCiYjNDM7CSAqLwomIzQzOwlpZiAoKHU2NClhdHRyLSZndDttYXhfZW50cmllcyAqIGF0dHItJmd0O3ZhbHVlX3NpemUgJmd0OyBVMzJfTUFYKQomIzQzOwkJcmV0dXJuIC1FMkJJRzsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuYwppbmRleCA0MTQ0MTMyNWUxNzk0Li42ZjhhYzI4NWU3MTk2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuYwpAQCAtMTAxLDggJiM0MzsxMDEsNDIgQEAgc3RhdGljIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXBfYnlfdHlwZShpbnQgdHlwZSkKIAlicGZfb2JqZWN0X19jbG9zZShvYmopOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodm9pZCkKJiM0Mzt7CiYjNDM7CUxJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG9wdHMpOwomIzQzOwljb25zdCBfX3UzMiBiaWdfdmFsdWUgPSAxICZsdDsmbHQ7IDIwOyAvKiAxTUIgKi8KJiM0MzsJaW50IGZkLCBzYXZlZF9lcnJubzsKJiM0MzsKJiM0MzsJLyogUmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgdTMyIGluZGV4IG92ZXJmbG93IGluIHF1ZXVlL3N0YWNrIG1hcHM6CiYjNDM7CSAqIGEgbWFwIHdob3NlIGVsZW1lbnQgc3RvcmFnZSAobWF4X2VudHJpZXMgKiB2YWx1ZV9zaXplKSBleGNlZWRzCiYjNDM7CSAqIFUzMl9NQVggYnl0ZXMgbXVzdCBiZSByZWplY3RlZCBhdCBjcmVhdGlvbiB0aW1lLCBvdGhlcndpc2UgdGhlCiYjNDM7CSAqIHUzMiBoZWFkL3RhaWwgaW5kZXggbXVsdGlwbGljYXRpb24gd3JhcHMgYW5kIHB1c2gvcGVlay9wb3AKJiM0MzsJICogYWRkcmVzcyB0aGUgd3JvbmcgZWxlbWVudC4gODE5MiAqIDFNQiA9IDhHQiAmZ3Q7IFUzMl9NQVguCiYjNDM7CSAqLwomIzQzOwlmZCA9IGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9RVUVVRSwgTlVMTCwgMCwgYmlnX3ZhbHVlLCA4MTkyLCAmYW1wO29wdHMpOwomIzQzOwlzYXZlZF9lcnJubyA9IGVycm5vOwomIzQzOwlBU1NFUlRfTFQoZmQsIDAsICYjMzQ7cXVldWVfb3ZlcnNpemVfZmQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShzYXZlZF9lcnJubywgRTJCSUcsICYjMzQ7cXVldWVfb3ZlcnNpemVfZXJybm8mIzM0Oyk7CiYjNDM7CWlmIChmZCAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoZmQpOwomIzQzOwomIzQzOwlmZCA9IGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9TVEFDSywgTlVMTCwgMCwgYmlnX3ZhbHVlLCA4MTkyLCAmYW1wO29wdHMpOwomIzQzOwlzYXZlZF9lcnJubyA9IGVycm5vOwomIzQzOwlBU1NFUlRfTFQoZmQsIDAsICYjMzQ7c3RhY2tfb3ZlcnNpemVfZmQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShzYXZlZF9lcnJubywgRTJCSUcsICYjMzQ7c3RhY2tfb3ZlcnNpemVfZXJybm8mIzM0Oyk7CiYjNDM7CWlmIChmZCAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoZmQpOwomIzQzOwomIzQzOwkvKiBBIG5vcm1hbC1zaXplZCBtYXAgbXVzdCBzdGlsbCBiZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4gKi8KJiM0MzsJZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIDY0LCAxMDAsICZhbXA7b3B0cyk7CiYjNDM7CUFTU0VSVF9HRShmZCwgMCwgJiMzNDtxdWV1ZV9ub3JtYWxfZmQmIzM0Oyk7CiYjNDM7CWlmIChmZCAmZ3Q7PSAwKQomIzQzOwkJY2xvc2UoZmQpOwomIzQzO30KJiM0MzsKIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXAodm9pZCkKIHsKIAl0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKFFVRVVFKTsKIAl0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKFNUQUNLKTsKJiM0MzsJdGVzdF9xdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2soKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQlBGIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIHRoaXMgbmV3IGNoZWNrIHdpdGhpbiB0aGUgYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgZnVuY3Rpb24uIEl0JiMzOTtzIGRlc2lnbmVkIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNyZWF0aW5nIEJQRiBxdWV1ZSBhbmQgc3RhY2sgbWFwcy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBjaGVja2luZyB0aGF0IHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBgbWF4X2VudHJpZXNgIGFuZCBgdmFsdWVfc2l6ZWAgZG9lc24mIzM5O3QgZXhjZWVkIGBVMzJfTUFYYC4gVGhpcyBpcyBpbXBvcnRhbnQsIG9idmlvdXNseSwgYmVjYXVzZSB0aGUgcmVzdWx0IG9mIHRoYXQgbXVsdGlwbGljYXRpb24gaXMgdXNlZCB0byBpbmRleCBhbiBhcnJheSwgYGVsZW1lbnRzW11gLCBhbmQgYW4gb3ZlcmZsb3cgd291bGQgbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggd2UgYWJzb2x1dGVseSBjYW5ub3QgaGF2ZS4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIGFuZCBzcGVjaWZpY2FsbHksIGZvY3VzZXMgb24gdGhlIHF1ZXVlIGFuZCBzdGFjayBtYXBzLCB3aGljaCBtYWtlcyBzZW5zZS4gV2UmIzM5O3JlIHRyeWluZyB0byBoYXJkZW4gdGhlIG1hcCBjcmVhdGlvbiBwcm9jZXNzLgoKSSBzaG91bGQgcHJvYmFibHkgcXVpY2tseSB2ZXJpZnkgdGhlIEJQRiBjb25maWd1cmF0aW9uLiBMZXQgbWUgY2hlY2sgdGhlIEtjb25maWcg4oCTIHJpZ2h0LCBCUEYgbWFwcyBhcmUgZW5hYmxlZCB0aHJvdWdoIGBDT05GSUdfQlBGX1NZU0NBTExgLgoKTm93LCBsZXQmIzM5O3MgdXNlIHRoZSBzdGFuZGFyZCB0b29scyB0byB2YWxpZGF0ZSB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3F1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTM2PXN0YXRpYyBib29sIHF1ZXVlX3N0YWNrX21hcF9pc19mdWxsKHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzKVxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQ2LS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjQ3OnN0YXRpYyBpbnQgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNDgte1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2OT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcXVldWVfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI3MC1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI3MTpcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNzItXHQubWFwX2FsbG9jID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jLFxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI4NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgc3RhY2tfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI4Ni1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4NzpcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yODgtXHQubWFwX2FsbG9jID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgUXVldWUgYW5kIFN0YWNrIE1hcCBBbGxvY2F0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCBmdW5jdGlvbi4gSXQmIzM5O3MgdHJpZ2dlcmVkIGR1cmluZyBtYXAgYWxsb2NhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHF1ZXVlIGFuZCBzdGFjayBtYXBzIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRoYXQgZXZlbiAqZW5hYmxlKiB0aGUgcmVsZXZhbnQgY29kZSBpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgLiBXaGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdGllZCB0byB0aGF0PyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbnVhbmNlIGxpZXM6IGFyZSB0aGVzZSBtYXBzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIG9yIGFyZSB0aGVyZSBydW50aW1lIGNoZWNrcyBpbnZvbHZlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbnMgZGljdGF0ZSB0aGVpciBhdmFpbGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cXVldWVfc3RhY2tfbWFwcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT03Mj1DRkxBR1NfUkVNT1ZFX2JwZl9scnVfbGlzdC5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjczOkNGTEFHU19SRU1PVkVfcXVldWVfc3RhY2tfbWFwcy5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTc0LUNGTEFHU19SRU1PVkVfbHBtX3RyaWUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBTdGFjay9RdWV1ZSBNYXAgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBpdCYjMzk7cyBhbGwgcHJlZGljYXRlZCBvbiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgdGhhdCYjMzk7cyB0aGUga2V5LiAgTm93LCB0aGUgdGhpbmcgdGhhdCYjMzk7cyBzbmFnZ2luZyBteSBhdHRlbnRpb24gaXMgdGhpcyBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCBmdW5jdGlvbi4gSXQmIzM5O3MgbWFya2VkIGBzdGF0aWNgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBsaW1pdGVkIGluIHNjb3BlLCBidXQgdGhlbiBJIHNlZSBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byBgbWFwX2FsbG9jX2NoZWNrYCB3aXRoaW4gYm90aCBgcXVldWVfbWFwX29wc2AgYW5kIGBzdGFja19tYXBfb3BzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIHNoYXJlZCBiZWhhdmlvdXIuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbnMgaGVyZSwgc28gbXkgbmV4dCBtb3ZlIGlzIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBib3RoIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgLiBBcmUgdGhleSB1c2VkIGluZGVwZW5kZW50bHkgb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBvcGVyYXRpb25zPyBBcmUgdGhlcmUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgc3BhY2UgdG8gc3R1ZHk/IEkga25vdyB0aGVyZSYjMzk7cyBgcXVldWVfc3RhY2tfbWFwX2FsbG9jYCBpbiB0aGUgc2FtZSBmaWxlIHRoYXQmIzM5O3Mgd29ydGggYSBsb29rLCBhbmQgSSYjMzk7bSBzdXJlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRvby4gSSYjMzk7bGwgZm9jdXMgb24gdGhlc2UgYXJlYXMgdG8gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxdWV1ZV9zdGFja19tYXBfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0zNj1zdGF0aWMgYm9vbCBxdWV1ZV9zdGFja19tYXBfaXNfZnVsbChzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpxcylcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00Ni0vKiBDYWxsZWQgZnJvbSBzeXNjYWxsICovXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo0NzpzdGF0aWMgaW50IHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQ4LXtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy03MS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjcyOnN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqcXVldWVfc3RhY2tfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzMte1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2OT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcXVldWVfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI3MC1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI3MTpcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNzI6XHQubWFwX2FsbG9jID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jLFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjczLVx0Lm1hcF9mcmVlID0gcXVldWVfc3RhY2tfbWFwX2ZyZWUsXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9Mjg1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBzdGFja19tYXBfb3BzID0ge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjg2LVx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Mjg3Olx0Lm1hcF9hbGxvY19jaGVjayA9IHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4ODpcdC5tYXBfYWxsb2MgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2MsXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yODktXHQubWFwX2ZyZWUgPSBxdWV1ZV9zdGFja19tYXBfZnJlZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTYxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJ1ZyBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgbWF5YmUgaXQmIzM5O3Mgbm90IHRoZSBtb3N0IHN0cmF0ZWdpYyBlbnRyeSBwb2ludCBmb3IgZGVlcGVyIGFuYWx5c2lzLiBTdGF0aWMgZnVuY3Rpb25zIGNhbiBzb21ldGltZXMgYmUgbW9yZSBjb250YWluZWQsIG1lYW5pbmcgZm9jdXNpbmcgb24gKnRoaXMqIHNwZWNpZmljIHN5bWJvbCBtaWdodCBiZSBtaXNzaW5nIGEgd2lkZXIgc3lzdGVtaWMgaXNzdWUuIE15IGluc3RpbmN0cyBhcmUgbnVkZ2luZyBtZSB0b3dhcmRzIGEgYnJvYWRlciB2aWV3LiBMZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlciBpbnRvIHRoZSBjb2RlYmFzZS4gSSYjMzk7bSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyBhd2F5IGZyb20gdGhpcyBpc29sYXRlZCBwaWVjZSBvZiBjb2RlIGFuZCB0byBleHBsb3JlIHRoZSBicm9hZGVyIGNvbnRleHQgYnkgY2hlY2tpbmcgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIHF1ZXVlL3N0YWNrIG1hcHMgaW1wbGVtZW50YXRpb24uIFNlZWluZyB0aGUgbGFyZ2VyIHNldCBvZiBmdW5jdGlvbnMsIHB1YmxpYyBvciBwcml2YXRlLCB3aWxsIGxpa2VseSBwcm92aWRlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgZGVzaWduIGFuZCBwb3RlbnRpYWxseSByZXZlYWwgd2hlcmUgdGhpcyBvdmVyZmxvdyBtaWdodCBoYXZlIHByb3BhZ2F0ZWQgZnJvbSwgb3Igd2hlcmUgb3RoZXIgcmVsYXRlZCB2dWxuZXJhYmlsaXRpZXMgbWF5IGV4aXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW15zdGF0aWNdLipcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00LSAqXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo1OiAqIENvcHlyaWdodCAoYykgMjAxOCBQb2xpdGVjbmljbyBkaSBUb3Jpbm9cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTYtICovXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTQtI2RlZmluZSBRVUVVRV9TVEFDS19DUkVBVEVfRkxBR19NQVNLIFxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNTpcdChCUEZfRl9OVU1BX05PREUgfCBCUEZfRl9BQ0NFU1NfTUFTSylcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTc9c3RydWN0IGJwZl9xdWV1ZV9zdGFjayB7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjItXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMzpcdGNoYXIgZWxlbWVudHNbXSBfX2FsaWduZWQoOCk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNC19O1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2PXN0YXRpYyBzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpicGZfcXVldWVfc3RhY2soc3RydWN0IGJwZl9tYXAgKm1hcClcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI3LXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4Olx0cmV0dXJuIGNvbnRhaW5lcl9vZihtYXAsIHN0cnVjdCBicGZfcXVldWVfc3RhY2ssIG1hcCk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yOS19XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MzY9c3RhdGljIGJvb2wgcXVldWVfc3RhY2tfbWFwX2lzX2Z1bGwoc3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMpXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMzktXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo0MDpcdGlmICh1bmxpa2VseShoZWFkIFx1MDAzZT0gcXMtXHUwMDNlc2l6ZSkpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00MS1cdFx0aGVhZCA9IDA7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9NDc9c3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNDktXHQvKiBjaGVjayBzYW5pdHkgb2YgYXR0cmlidXRlcyAqL1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NTA6XHRpZiAoYXR0ci1cdTAwM2VtYXhfZW50cmllcyA9PSAwIHx8IGF0dHItXHUwMDNla2V5X3NpemUgIT0gMCB8fFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNTEtXHQgICAgYXR0ci1cdTAwM2V2YWx1ZV9zaXplID09IDAgfHxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTUyLVx0ICAgIGF0dHItXHUwMDNlbWFwX2ZsYWdzIFx1MDAyNiB+UVVFVUVfU1RBQ0tfQ1JFQVRFX0ZMQUdfTUFTSyB8fFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NTM6XHQgICAgIWJwZl9tYXBfZmxhZ3NfYWNjZXNzX29rKGF0dHItXHUwMDNlbWFwX2ZsYWdzKSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTU0LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTU1LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NTY6XHRpZiAoYXR0ci1cdTAwM2V2YWx1ZV9zaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNTctXHRcdC8qIGlmIHZhbHVlX3NpemUgaXMgYmlnZ2VyLCB0aGUgdXNlciBzcGFjZSB3b24mIzM5O3QgYmUgYWJsZSB0b1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTY1LVx0ICovXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo2NjpcdGlmICgodTY0KWF0dHItXHUwMDNlbWF4X2VudHJpZXMgKiBhdHRyLVx1MDAzZXZhbHVlX3NpemUgXHUwMDNlIFUzMl9NQVgpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy02Ny1cdFx0cmV0dXJuIC1FMkJJRztcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz03Mj1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKnF1ZXVlX3N0YWNrX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTczLXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjc0Olx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy03NS1cdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTc3LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Nzg6XHRzaXplID0gKHU2NCkgYXR0ci1cdTAwM2VtYXhfZW50cmllcyAmIzQzOyAxO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Nzk6XHRxdWV1ZV9zaXplID0gc2l6ZW9mKCpxcykgJiM0Mzsgc2l6ZSAqIGF0dHItXHUwMDNldmFsdWVfc2l6ZTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTgwLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODE6XHRxcyA9IGJwZl9tYXBfYXJlYV9hbGxvYyhxdWV1ZV9zaXplLCBudW1hX25vZGUpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODI6XHRpZiAoIXFzKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODM6XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtODQtXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo4NTpcdGJwZl9tYXBfaW5pdF9mcm9tX2F0dHIoXHUwMDI2cXMtXHUwMDNlbWFwLCBhdHRyKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTg2LVxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTg4LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODk6XHRyYXdfcmVzX3NwaW5fbG9ja19pbml0KFx1MDAyNnFzLVx1MDAzZWxvY2spO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtOTAtXG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9OTU9c3RhdGljIHZvaWQgcXVldWVfc3RhY2tfbWFwX2ZyZWUoc3RydWN0IGJwZl9tYXAgKm1hcClcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTk2LXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjk3Olx0c3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMgPSBicGZfcXVldWVfc3RhY2sobWFwKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTk4LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6OTk6XHRicGZfbWFwX2FyZWFfZnJlZShxcyk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMDAtfVxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTEwMj1zdGF0aWMgbG9uZyBfX3F1ZXVlX21hcF9nZXQoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsIGJvb2wgZGVsZXRlKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTAzLXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEwNDpcdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzID0gYnBmX3F1ZXVlX3N0YWNrKG1hcCk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMDUtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEwOC1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEwOTpcdGlmIChyYXdfcmVzX3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnFzLVx1MDAzZWxvY2ssIGZsYWdzKSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTEwOlx0XHRtZW1zZXQodmFsdWUsIDAsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTExMS1cdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMTMtXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMTQ6XHRpZiAocXVldWVfc3RhY2tfbWFwX2lzX2VtcHR5KHFzKSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTE1Olx0XHRtZW1zZXQodmFsdWUsIDAsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTExNi1cdFx0ZXJyID0gLUVOT0VOVDtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMjAtXHRwdHIgPSBcdTAwMjZxcy1cdTAwM2VlbGVtZW50c1txcy1cdTAwM2V0YWlsICogcXMtXHUwMDNlbWFwLnZhbHVlX3NpemVdO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTIxOlx0bWVtY3B5KHZhbHVlLCBwdHIsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEyMi1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEyMzpcdGlmIChkZWxldGUpIHtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEyNDpcdFx0aWYgKHVubGlrZWx5KCYjNDM7JiM0Mztxcy1cdTAwM2V0YWlsIFx1MDAzZT0gcXMtXHUwMDNlc2l6ZSkpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMjUtXHRcdFx0cXMtXHUwMDNldGFpbCA9IDA7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTI4LW91dDpcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEyOTpcdHJhd19yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZxcy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMzAtXHRyZXR1cm4gZXJyO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTEzND1zdGF0aWMgbG9uZyBfX3N0YWNrX21hcF9nZXQoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsIGJvb2wgZGVsZXRlKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTM1LXtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEzNjpcdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzID0gYnBmX3F1ZXVlX3N0YWNrKG1hcCk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMzctXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0MS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjE0MjpcdGlmIChyYXdfcmVzX3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnFzLVx1MDAzZWxvY2ssIGZsYWdzKSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTQzOlx0XHRtZW1zZXQodmFsdWUsIDAsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0NC1cdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNDYtXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNDc6XHRpZiAocXVldWVfc3RhY2tfbWFwX2lzX2VtcHR5KHFzKSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTQ4Olx0XHRtZW1zZXQodmFsdWUsIDAsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0OS1cdFx0ZXJyID0gLUVOT0VOVDtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNTMtXHRpbmRleCA9IHFzLVx1MDAzZWhlYWQgLSAxO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTU0Olx0aWYgKHVubGlrZWx5KGluZGV4IFx1MDAzZT0gcXMtXHUwMDNlc2l6ZSkpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNTUtXHRcdGluZGV4ID0gcXMtXHUwMDNlc2l6ZSAtIDE7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTU3LVx0cHRyID0gXHUwMDI2cXMtXHUwMDNlZWxlbWVudHNbaW5kZXggKiBxcy1cdTAwM2VtYXAudmFsdWVfc2l6ZV07XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNTg6XHRtZW1jcHkodmFsdWUsIHB0ciwgcXMtXHUwMDNlbWFwLnZhbHVlX3NpemUpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTU5LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTYwOlx0aWYgKGRlbGV0ZSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2MS1cdFx0cXMtXHUwMDNlaGVhZCA9IGluZGV4O1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2My1vdXQ6XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNjQ6XHRyYXdfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cXMtXHUwMDNlbG9jaywgZmxhZ3MpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTY1LVx0cmV0dXJuIGVycjtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0xNjk9c3RhdGljIGxvbmcgcXVldWVfbWFwX3BlZWtfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE3MC17XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNzE6XHRyZXR1cm4gX19xdWV1ZV9tYXBfZ2V0KG1hcCwgdmFsdWUsIGZhbHNlKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE3Mi19XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTc1PXN0YXRpYyBsb25nIHN0YWNrX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNzYte1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTc3Olx0cmV0dXJuIF9fc3RhY2tfbWFwX2dldChtYXAsIHZhbHVlLCBmYWxzZSk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNzgtfVxuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTE4MT1zdGF0aWMgbG9uZyBxdWV1ZV9tYXBfcG9wX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xODIte1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTgzOlx0cmV0dXJuIF9fcXVldWVfbWFwX2dldChtYXAsIHZhbHVlLCB0cnVlKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE4NC19XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTg3PXN0YXRpYyBsb25nIHN0YWNrX21hcF9wb3BfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE4OC17XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxODk6XHRyZXR1cm4gX19zdGFja19tYXBfZ2V0KG1hcCwgdmFsdWUsIHRydWUpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTkwLX1cbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0xOTM9c3RhdGljIGxvbmcgcXVldWVfc3RhY2tfbWFwX3B1c2hfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSxcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xOTUte1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTk2Olx0c3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMgPSBicGZfcXVldWVfc3RhY2sobWFwKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE5Ny1cdHVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIwMy1cdCAqL1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjA0Olx0Ym9vbCByZXBsYWNlID0gKGZsYWdzIFx1MDAyNiBCUEZfRVhJU1QpO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA1LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA2LVx0LyogQ2hlY2sgc3VwcG9ydGVkIGZsYWdzIGZvciBxdWV1ZSBhbmQgc3RhY2sgbWFwcyAqL1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjA3Olx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfTk9FWElTVCB8fCBmbGFncyBcdTAwM2UgQlBGX0VYSVNUKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIwOS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIxMDpcdGlmIChyYXdfcmVzX3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnFzLVx1MDAzZWxvY2ssIGlycV9mbGFncykpXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMTEtXHRcdHJldHVybiAtRUJVU1k7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMTItXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMTM6XHRpZiAocXVldWVfc3RhY2tfbWFwX2lzX2Z1bGwocXMpKSB7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMTQ6XHRcdGlmICghcmVwbGFjZSkge1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjE1LVx0XHRcdGVyciA9IC1FMkJJRztcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMTgtXHRcdC8qIGFkdmFuY2UgdGFpbCBwb2ludGVyIHRvIG92ZXJ3cml0ZSBvbGRlc3QgZWxlbWVudCAqL1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjE5Olx0XHRpZiAodW5saWtlbHkoJiM0MzsmIzQzO3FzLVx1MDAzZXRhaWwgXHUwMDNlPSBxcy1cdTAwM2VzaXplKSlcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIyMC1cdFx0XHRxcy1cdTAwM2V0YWlsID0gMDtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMjMtXHRkc3QgPSBcdTAwMjZxcy1cdTAwM2VlbGVtZW50c1txcy1cdTAwM2VoZWFkICogcXMtXHUwMDNlbWFwLnZhbHVlX3NpemVdO1xua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjI0Olx0bWVtY3B5KGRzdCwgdmFsdWUsIHFzLVx1MDAzZW1hcC52YWx1ZV9zaXplKTtcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIyNS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIyNjpcdGlmICh1bmxpa2VseSgmIzQzOyYjNDM7cXMtXHUwMDNlaGVhZCBcdTAwM2U9IHFzLVx1MDAzZXNpemUpKVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjI3LVx0XHRxcy1cdTAwM2VoZWFkID0gMDtcbi0tXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMjktb3V0Olxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjMwOlx0cmF3X3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnFzLVx1MDAzZWxvY2ssIGlycV9mbGFncyk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMzEtXHRyZXR1cm4gZXJyO1xuLS1cbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2MD1zdGF0aWMgdTY0IHF1ZXVlX3N0YWNrX21hcF9tZW1fdXNhZ2UoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcClcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI2MS17XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjI6XHR1NjQgdXNhZ2UgPSBzaXplb2Yoc3RydWN0IGJwZl9xdWV1ZV9zdGFjayk7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNjMtXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjQ6XHR1c2FnZSAmIzQzOz0gKCh1NjQpbWFwLVx1MDAzZW1heF9lbnRyaWVzICYjNDM7IDEpICogbWFwLVx1MDAzZXZhbHVlX3NpemU7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNjUtXHRyZXR1cm4gdXNhZ2U7XG4tLVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjY3LVxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjY4OkJURl9JRF9MSVNUX1NJTkdMRShxdWV1ZV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcXVldWVfc3RhY2spXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNjktY29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHF1ZXVlX21hcF9vcHMgPSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NDYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFNjb3BlIG9mIFRoZXNlIERhdGEgU3RydWN0dXJlIE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYHF1ZXVlX21hcF9wZWVrX2VsZW1gLCBgc3RhY2tfbWFwX3BlZWtfZWxlbWAsIGBxdWV1ZV9tYXBfcG9wX2VsZW1gLCBgc3RhY2tfbWFwX3BvcF9lbGVtYCwgYW5kIGBxdWV1ZV9zdGFja19tYXBfcHVzaF9lbGVtYC4gVGhleSBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuLi4gaW50ZXJlc3RpbmcuIFRoaXMgdGVsbHMgbWUgdGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggaXMgZ29vZCBmb3IgZW5jYXBzdWxhdGlvbi4gQnV0IGl0IG1ha2VzIG1lIHdvbmRlciwgYXJlIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgIGFsc28gYHN0YXRpY2A/IEFuZCBtb3JlIGltcG9ydGFudGx5LCBhcmUgdGhleSAqZXhwb3J0ZWQqIG9yIHVzZWQgaW4gZXh0ZXJuYWwgbW9kdWxlcz8KCkkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGVzZSBgb3BzYCBzdHJ1Y3R1cmVzLiBJZiB0aGV5JiMzOTtyZSB2aXNpYmxlIG91dHNpZGUsIHRoZXkgbmVlZCBtb3JlIGNhcmUuIExldCYjMzk7cyBzdGFydCBieSBmaWd1cmluZyBvdXQgd2hlcmUgYHF1ZXVlX21hcF9vcHNgIGlzIGFjdHVhbGx5IHVzZWQuIEEgcXVpY2sgc2VhcmNoIHNob3VsZCBjbGFyaWZ5IHRoaW5ncy4gVW5kZXJzdGFuZGluZyB0aGlzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHRoZSBvdmVyYWxsIGRlc2lnbiBhbmQgYW55IHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMgb3IgZXh0ZXJuYWwgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxdWV1ZV9tYXBfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MjY4PUJURl9JRF9MSVNUX1NJTkdMRShxdWV1ZV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcXVldWVfc3RhY2spXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjk6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHF1ZXVlX21hcF9vcHMgPSB7XG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNzAtXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjA3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBxdWV1ZV9tYXBfb3BzYCBEZWNsYXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBxdWV1ZV9tYXBfb3BzYC4gSG9sZCBvbiBhIG1pbnV0ZeKApiBpc24mIzM5O3QgdGhhdCB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBleHRlcm5hbGx5LCBub3Qgc3RhdGljYWxseSB3aXRoaW4gdGhlIHNjb3BlIEkgd2FzIGp1c3QgZXhhbWluaW5nPyBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbGx5LCBtYXliZSBpbiB0aGUga2VybmVsIGhlYWRlcnMuIExldCBtZSBkb3VibGUtY2hlY2suIEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgaW4gYSBoZWFkZXIgcmVsYXRlZCB0byBCUEYsIGJ1dCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGZpbGUuIExldCYjMzk7cyBnbyB0byBgaW5jbHVkZS9saW51eC9icGYuaGAgb3Igc29tZXdoZXJlIHNpbWlsYXIgdG8gc2VlIGlmIEkgY2FuIHRyYWNlIHRoZSBkZWNsYXJhdGlvbiB0aGVyZS4gTm8sIHdhaXQsIEkgcmVtZW1iZXIgbm93LCBpdCBtYXkgd2VsbCBiZSBpbiBgaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaGAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBzaG91bGQgYmUgbG9va2luZyBmb3IgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGFuZCBwb3RlbnRpYWxseSB0aGUgZGVjbGFyYXRpb24uIFRpbWUgdG8gZ2V0IHRoYXQgZmlsZSBvcGVuIGFuZCB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3F1ZXVlX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTEyND1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JFVVNFUE9SVF9TT0NLQVJSQVksIHJldXNlcG9ydF9hcnJheV9vcHMpXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xMjYtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEyNzpCUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1FVRVVFLCBxdWV1ZV9tYXBfb3BzKVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xMjgtQlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9TVEFDSywgc3RhY2tfbWFwX29wcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MjcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBNYXAgQ3JlYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggQlBGIG1hcHMsIHNwZWNpZmljYWxseSBxdWV1ZS9zdGFjayBtYXBzLCBhbmQgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMgZm9yIGFuYWx5c2lzLiBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGV5JiMzOTtyZSByZWdpc3RlcmVkIHZpYSBgQlBGX01BUF9UWVBFYC4gVGhlIGtleSBoZXJlIGlzIHRvIGRldGVybWluZSB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBiZXN0IHRhcmdldHMgZm9yIGludmVzdGlnYXRpb24sIGdpdmVuIHRoZSBpbnN0cnVjdGlvbnMuCgpTaW5jZSB0aGUgZnVuY3Rpb25zIHdpdGhpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgIGFyZSBhbGwgc3RhdGljLCBteSBpbml0aWFsIGluc3RpbmN0cyB0ZWxsIG1lIHRvIGxvb2sgZWxzZXdoZXJlLiBUaGUgaW5zdHJ1Y3Rpb25zIGNsZWFybHkgZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cy4gVGhhdCBwb2ludHMgbWUgdG93YXJkIGBicGZfbWFwX2NyZWF0ZWAgb3IgYG1hcF9jcmVhdGVgIGluIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AuIEhvd2V2ZXIsIEkgY291bGQgY2hvb3NlIHRvIGFuYWx5emUgdGhlIHN0YXRpYyBmdW5jdGlvbnMgaWYgSSB3YW50ZWQsIGJ1dCB0aGUgaW5zdHJ1Y3Rpb25zIGFkdmlzZSBhZ2FpbnN0IHRoaXMgYmVjYXVzZSB0aGV5JiMzOTtyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4KCk5vdywgYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgKmlzKiBpbnRlcmVzdGluZyBiZWNhdXNlIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYG1hcF9hbGxvY19jaGVja2AsIGluIGBxdWV1ZV9tYXBfb3BzYC4gRnVuY3Rpb24gcG9pbnRlcnMgYXJlbiYjMzk7dCBpbmxpbmVkLCBzbyBpdCYjMzk7cyBhIHZhbGlkIGNob2ljZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIEhvd2V2ZXIsIEkgc3RpbGwgZmVlbCB0aGUgcHJvcGVyIGVudHJ5IHBvaW50IGlzIGBtYXBfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkgc2hvdWxkIGZvY3VzLiBTbywgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byBga2VybmVsL2JwZi9zeXNjYWxsLmNgIGFuZCBkaWcgaW50byBgbWFwX2NyZWF0ZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcF9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3N5c2NhbGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3N5c2NhbGwuYz0xMjQzPXN0YXRpYyBpbnQgbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX3Rva2VuICp0b2tlbixcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzY5LS8qIGNhbGxlZCB2aWEgc3lzY2FsbCAqL1xua2VybmVsL2JwZi9zeXNjYWxsLmM6MTM3MDpzdGF0aWMgaW50IG1hcF9jcmVhdGVfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTM3MS1cdFx0XHQgICAgc3RydWN0IGJwZl9tYXAgKiptYXBwLCBzdHJ1Y3QgYnBmX3Rva2VuICoqdG9rZW5wKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2MTctXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNjE4OnN0YXRpYyBpbnQgbWFwX2NyZWF0ZSh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsIHN0cnVjdCBicGZfY29tbW9uX2F0dHIgKmF0dHJfY29tbW9uLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYxOS1cdFx0ICAgICAgYnBmcHRyX3QgdWF0dHJfY29tbW9uLCB1MzIgc2l6ZV9jb21tb24pXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYzMS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE2MzI6XHRlcnIgPSBtYXBfY3JlYXRlX2FsbG9jKGF0dHIsIHVhdHRyLCBsb2csIFx1MDAyNm1hcCwgXHUwMDI2dG9rZW4pO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYzMy1cbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjQ5LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTY1MDpcdGVyciA9IHNlY3VyaXR5X2JwZl9tYXBfY3JlYXRlKG1hcCwgYXR0ciwgdG9rZW4sIHVhdHRyLmlzX2tlcm5lbCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjUxLVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02Mjk0PXN0YXRpYyBpbnQgX19zeXNfYnBmKGVudW0gYnBmX2NtZCBjbWQsIGJwZnB0cl90IHVhdHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MzM0LVx0Y2FzZSBCUEZfTUFQX0NSRUFURTpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjYzMzU6XHRcdGVyciA9IG1hcF9jcmVhdGUoXHUwMDI2YXR0ciwgdWF0dHIsIFx1MDAyNmF0dHJfY29tbW9uLCB1YXR0cl9jb21tb24sIHNpemVfY29tbW9uKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzMzYtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTczMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgUGF0Y2gqKgoKT2theSwgc28gYG1hcF9jcmVhdGVgIGZlZWxzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZGl2aW5nIGludG8gdGhpcy4gQW5kLCByaWdodCwgSSByZW1lbWJlciBub3csIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGlzbiYjMzk7dCBpbmxpbmVkIGJlY2F1c2UgaXQmIzM5O3MgYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIExldCBtZSBqdXN0IGNvbmZpcm0gd2hlcmUgdGhhdCBsaXZlcyDigJMgYWhhLCBpdCYjMzk7cyByaWdodCB0aGVyZSBpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgLCBhcyBleHBlY3RlZC4gVGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBmaXhpbmcgYW4gb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AuCgpGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXQgbG9va3MgZ29vZDsgaXQmIzM5O3MgcHJldmVudGluZyBhbiBpbnRlZ2VyIG92ZXJmbG93LCB3aGljaCwgaWYgZXhwbG9pdGVkLCBjb3VsZCBkZWZpbml0ZWx5IGxlYWQgdG8gc29tZSBuYXN0eSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MgaXNzdWVzLiBUaGUgbWFpbiBjb25maWd1cmF0aW9uIGludm9sdmVkIHNlZW1zIHRvIGJlIGBDT05GSUdfQlBGX1NZU0NBTExgLCBhbmQgeWVzLCB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IGVuYWJsZXIgZm9yIEJQRiBmdW5jdGlvbmFsaXR5LiBJJiMzOTtsbCBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLCB0byBlbnN1cmUgdGhlcmUgYXJlbuKAmXQgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE3MwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkxvY2F0aW5nIHRoZSBEZWZpbml0aW9uIG9mIGBCUEZfU1lTQ0FMTGAqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaW5kIG91dCB3aGVyZSBgQlBGX1NZU0NBTExgIGlzIGFjdHVhbGx5IGRlZmluZWQuIEl0JiMzOTtzIGEga2V5IGVsZW1lbnQgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSBCUEYgc3lzdGVtIGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwmIzM5O3Mgc3lzdGVtIGNhbGwgaW50ZXJmYWNlLCBidXQgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBtZWNoYW5pY3MgYW5kIGNvbnRleHQuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBpZWNlIGZpdHMgaW50byB0aGUgZ3JlYXRlciBwdXp6bGUuIEtub3dpbmcgdGhlIG9yaWdpbiBvZiB0aGlzIHN5bWJvbCB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgaXQgbWlnaHQgcmVsYXRlIHRvLCBhbmQgdWx0aW1hdGVseSwgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBodW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0NTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBCUEYgU3lzY2FsbCBEZXBlbmRlbmNpZXMgaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgYEJQRl9TWVNDQUxMYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGVsdmUgaW50byB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc3RhcnQgd2l0aCBga2VybmVsL2JwZi9LY29uZmlnYC4gVGhpcyBpcyB0aGUgcGxhY2Ugd2hlcmUgYWxsIHRoZSBCUEYtcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGxpa2VseSBkZWZpbmVkIGFuZCB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgSSYjMzk7bSBsb29raW5nIGZvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgQlBGX1NZU0NBTExgIGJlY29tZXMgYXZhaWxhYmxlIG9yIGhvdyBpdCBtaWdodCBpbmZsdWVuY2Ugb3RoZXIgZmVhdHVyZXMuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNzpcdGNvbmZpZyBCUEZfU1lTQ0FMTFxuICAyODpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiAgMjk6XHRcdHNlbGVjdCBCUEZcbiAgMzA6XHRcdHNlbGVjdCBJUlFfV09SS1xuICAzMTpcdFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXG4gIDMyOlx0XHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXG4gIDMzOlx0XHRzZWxlY3QgQklOQVJZX1BSSU5URlxuICAzNDpcdFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcbiAgMzU6XHRcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuICAzNjpcdFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbiAgMzc6XHRcdGRlZmF1bHQgblxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXG4gIDQwOlx0XHQgIGFuZCBtYXBzIHZpYSBmaWxlIGRlc2NyaXB0b3JzLlxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBCUEZfSklUXG4gIDQzOlx0XHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4gIDQ0Olx0XHRkZXBlbmRzIG9uIEJQRlxuICA0NTpcdFx0ZGVwZW5kcyBvbiBIQVZFX0NCUEZfSklUIHx8IEhBVkVfRUJQRl9KSVRcbiAgNDY6XHRcdHNlbGVjdCBFWEVDTUVNXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTM4CgkJCQkJCQlvdXRwdXQ6IDExNQoJCQkJCQkJdGhvdWdodHM6IDQzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGhhdmUgYW55IGV4cGxpY2l0IGRlcGVuZGVuY2llcyBsaXN0ZWQsIGp1c3QgaW1wbGllZCBvbmVzIGJhc2VkIG9uIHRoZSBjb2RlIGNoYW5nZXMuIFRoZSByZWxldmFudCBjb25maWcgdG8gZW5hYmxlIGhlcmUgc2VlbXMgdG8gYmUgYEJQRl9TWVNDQUxMYC4KCkxldCYjMzk7cyBxdWlja2x5IHJlY2FwIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nLiBBaCwgcmlnaHQsIHRoZSBib3VuZHMgY2hlY2suCgpgYGBjCgkvKgoJICogVGhlIHUzMiBoZWFkL3RhaWwgaW5kZXggaXMgbXVsdGlwbGllZCBieSB2YWx1ZV9zaXplIHRvIGFkZHJlc3MKCSAqIGVsZW1lbnRzW10uIEJvdW5kIHRoZSBtYXAgc2l6ZSBzbyB0aGUgcHJvZHVjdCBjYW5ub3Qgb3ZlcmZsb3cuCgkgKi8KCWlmICgodTY0KWF0dHItJmd0O21heF9lbnRyaWVzICogYXR0ci0mZ3Q7dmFsdWVfc2l6ZSAmZ3Q7IFUzMl9NQVgpCgkJcmV0dXJuIC1FMkJJRzsKYGBgCgpJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBmb2N1c2luZyBvbiBwcmV2ZW50aW5nIGFuIGludGVnZXIgb3ZlcmZsb3csIHBhcnRpY3VsYXJseSBpbiBgbWFwX2NyZWF0ZWAgd2l0aGluIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AgYW5kIG1vcmUgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbiBwb2ludGVyIHRhcmdldCBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AuIEV2ZW4gdGhvdWdoIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGlzIHN0YXRpYywgaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIGl0IGdldHMgaXRzIG93biBhZGRyZXNzIGFuZCBJIGNhbiBpbmNsdWRlIGl0LiBBY3R1YWxseSwgYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgaXMgdGhlICpleGFjdCogZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQsIHNvIEkmIzM5O20gZ29pbmcgdG8gaW5jbHVkZSBpdC4KCkkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIGZvciBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gVGhpcyBhbHNvIHRvdWNoZXMgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jYC4gVGhhdCYjMzk7cyBqdXN0IGEgc2VsZnRlc3QsIG5vdCBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCBidWlsZCwgYnV0IHRoZSBjaGFuZ2UgKml0c2VsZiogaXMgaW4gdGhlIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AgZmlsZS4KClNvLCB0aGUgY29uZmlnIEkgbmVlZCBpcyBzdGlsbCBgQlBGX1NZU0NBTExgLgoKQmFzaWNhbGx5LCB0aGlzIHBhdGNoIGFkZHMgYSBjcnVjaWFsIGJvdW5kcyBjaGVjayBpbiBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gY3JlYXRpbmcgQlBGIHF1ZXVlIGFuZCBzdGFjayBtYXBzLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IHdpdGhpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIGFmZmVjdGluZyBtYXAgY3JlYXRpb24sIHNwZWNpZmljYWxseSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLgoKQmVjYXVzZSBpdCB0b3VjaGVzIG1hcCBjcmVhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpBbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGFuIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtYXAgY3JlYXRpb24gbG9naWMgYW5kIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGFuIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtYXAgY3JlYXRpb24gbG9naWMgYW5kIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODowMS4xOTk1NDQzMTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQwNDQyNjIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hcF9jcmVhdGVcIixcbiAgICBcInF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgdG8gcHJldmVudCBhbiBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyB0aGUgY3JlYXRpb24gb2YgQlBGIHF1ZXVlIGFuZCBzdGFjayBtYXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWFwIGNyZWF0aW9uIGxvZ2ljIGFuZCBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODowMS4xOTk1NTIxMzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjIzNDM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJmYzNmNGEwNzUyZTYxMjdhMmI3ZWQ0YTM3ZDM5MGVkYTJmODc3ZTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgNyAwNDo1Nzo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXFxuaW5kZXggYzFjOWRlZTRkY2RkMC4uZjlmZjcwMWFiMjdiMCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY1xcbisrKyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXFxuQEAgLTU5LDYgKzU5LDEzIEBAIHN0YXRpYyBpbnQgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0cmV0dXJuIC1FMkJJRztcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSB1MzIgaGVhZC90YWlsIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgdmFsdWVfc2l6ZSB0byBhZGRyZXNzXFxuK1xcdCAqIGVsZW1lbnRzW10uIEJvdW5kIHRoZSBtYXAgc2l6ZSBzbyB0aGUgcHJvZHVjdCBjYW5ub3Qgb3ZlcmZsb3cuXFxuK1xcdCAqL1xcbitcXHRpZiAoKHU2NClhdHRyLVxcdTAwM2VtYXhfZW50cmllcyAqIGF0dHItXFx1MDAzZXZhbHVlX3NpemUgXFx1MDAzZSBVMzJfTUFYKVxcbitcXHRcXHRyZXR1cm4gLUUyQklHO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNcXG5pbmRleCA0MTQ0MTMyNWUxNzk0Li42ZjhhYzI4NWU3MTk2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNcXG5AQCAtMTAxLDggKzEwMSw0MiBAQCBzdGF0aWMgdm9pZCB0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKGludCB0eXBlKVxcbiBcXHRicGZfb2JqZWN0X19jbG9zZShvYmopO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X3F1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayh2b2lkKVxcbit7XFxuK1xcdExJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG9wdHMpO1xcbitcXHRjb25zdCBfX3UzMiBiaWdfdmFsdWUgPSAxIFxcdTAwM2NcXHUwMDNjIDIwOyAvKiAxTUIgKi9cXG4rXFx0aW50IGZkLCBzYXZlZF9lcnJubztcXG4rXFxuK1xcdC8qIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIHUzMiBpbmRleCBvdmVyZmxvdyBpbiBxdWV1ZS9zdGFjayBtYXBzOlxcbitcXHQgKiBhIG1hcCB3aG9zZSBlbGVtZW50IHN0b3JhZ2UgKG1heF9lbnRyaWVzICogdmFsdWVfc2l6ZSkgZXhjZWVkc1xcbitcXHQgKiBVMzJfTUFYIGJ5dGVzIG11c3QgYmUgcmVqZWN0ZWQgYXQgY3JlYXRpb24gdGltZSwgb3RoZXJ3aXNlIHRoZVxcbitcXHQgKiB1MzIgaGVhZC90YWlsIGluZGV4IG11bHRpcGxpY2F0aW9uIHdyYXBzIGFuZCBwdXNoL3BlZWsvcG9wXFxuK1xcdCAqIGFkZHJlc3MgdGhlIHdyb25nIGVsZW1lbnQuIDgxOTIgKiAxTUIgPSA4R0IgXFx1MDAzZSBVMzJfTUFYLlxcbitcXHQgKi9cXG4rXFx0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIGJpZ192YWx1ZSwgODE5MiwgXFx1MDAyNm9wdHMpO1xcbitcXHRzYXZlZF9lcnJubyA9IGVycm5vO1xcbitcXHRBU1NFUlRfTFQoZmQsIDAsIFxcXCJxdWV1ZV9vdmVyc2l6ZV9mZFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2F2ZWRfZXJybm8sIEUyQklHLCBcXFwicXVldWVfb3ZlcnNpemVfZXJybm9cXFwiKTtcXG4rXFx0aWYgKGZkIFxcdTAwM2U9IDApXFxuK1xcdFxcdGNsb3NlKGZkKTtcXG4rXFxuK1xcdGZkID0gYnBmX21hcF9jcmVhdGUoQlBGX01BUF9UWVBFX1NUQUNLLCBOVUxMLCAwLCBiaWdfdmFsdWUsIDgxOTIsIFxcdTAwMjZvcHRzKTtcXG4rXFx0c2F2ZWRfZXJybm8gPSBlcnJubztcXG4rXFx0QVNTRVJUX0xUKGZkLCAwLCBcXFwic3RhY2tfb3ZlcnNpemVfZmRcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNhdmVkX2Vycm5vLCBFMkJJRywgXFxcInN0YWNrX292ZXJzaXplX2Vycm5vXFxcIik7XFxuK1xcdGlmIChmZCBcXHUwMDNlPSAwKVxcbitcXHRcXHRjbG9zZShmZCk7XFxuK1xcbitcXHQvKiBBIG5vcm1hbC1zaXplZCBtYXAgbXVzdCBzdGlsbCBiZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4gKi9cXG4rXFx0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIDY0LCAxMDAsIFxcdTAwMjZvcHRzKTtcXG4rXFx0QVNTRVJUX0dFKGZkLCAwLCBcXFwicXVldWVfbm9ybWFsX2ZkXFxcIik7XFxuK1xcdGlmIChmZCBcXHUwMDNlPSAwKVxcbitcXHRcXHRjbG9zZShmZCk7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF9xdWV1ZV9zdGFja19tYXAodm9pZClcXG4ge1xcbiBcXHR0ZXN0X3F1ZXVlX3N0YWNrX21hcF9ieV90eXBlKFFVRVVFKTtcXG4gXFx0dGVzdF9xdWV1ZV9zdGFja19tYXBfYnlfdHlwZShTVEFDSyk7XFxuK1xcdHRlc3RfcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrKCk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MDEuNjYyNTE0MDA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ5NDE0NDc2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYXBfY3JlYXRlXCIsXG4gICAgXCJxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIHRvIHByZXZlbnQgYW4gaW50ZWdlciBvdmVyZmxvdyBkdXJpbmcgdGhlIGNyZWF0aW9uIG9mIEJQRiBxdWV1ZSBhbmQgc3RhY2sgbWFwcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIG1hcCBjcmVhdGlvbiBsb2dpYyBhbmQgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmZjM2Y0YTA3NTJlNjEyN2EyYjdlZDRhMzdkMzkwZWRhMmY4NzdlN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDQ6NTc6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXG5pbmRleCBjMWM5ZGVlNGRjZGQwLi5mOWZmNzAxYWIyN2IwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNcbisrKyBiL2tlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXG5AQCAtNTksNiArNTksMTMgQEAgc3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXHRcdCAqL1xuIFx0XHRyZXR1cm4gLUUyQklHO1xuIFxuK1x0LypcbitcdCAqIFRoZSB1MzIgaGVhZC90YWlsIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgdmFsdWVfc2l6ZSB0byBhZGRyZXNzXG4rXHQgKiBlbGVtZW50c1tdLiBCb3VuZCB0aGUgbWFwIHNpemUgc28gdGhlIHByb2R1Y3QgY2Fubm90IG92ZXJmbG93LlxuK1x0ICovXG4rXHRpZiAoKHU2NClhdHRyLVx1MDAzZW1heF9lbnRyaWVzICogYXR0ci1cdTAwM2V2YWx1ZV9zaXplIFx1MDAzZSBVMzJfTUFYKVxuK1x0XHRyZXR1cm4gLUUyQklHO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3F1ZXVlX3N0YWNrX21hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNcbmluZGV4IDQxNDQxMzI1ZTE3OTQuLjZmOGFjMjg1ZTcxOTYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9xdWV1ZV9zdGFja19tYXAuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNcbkBAIC0xMDEsOCArMTAxLDQyIEBAIHN0YXRpYyB2b2lkIHRlc3RfcXVldWVfc3RhY2tfbWFwX2J5X3R5cGUoaW50IHR5cGUpXG4gXHRicGZfb2JqZWN0X19jbG9zZShvYmopO1xuIH1cbiBcbitzdGF0aWMgdm9pZCB0ZXN0X3F1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayh2b2lkKVxuK3tcbitcdExJQkJQRl9PUFRTKGJwZl9tYXBfY3JlYXRlX29wdHMsIG9wdHMpO1xuK1x0Y29uc3QgX191MzIgYmlnX3ZhbHVlID0gMSBcdTAwM2NcdTAwM2MgMjA7IC8qIDFNQiAqL1xuK1x0aW50IGZkLCBzYXZlZF9lcnJubztcbitcbitcdC8qIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIHUzMiBpbmRleCBvdmVyZmxvdyBpbiBxdWV1ZS9zdGFjayBtYXBzOlxuK1x0ICogYSBtYXAgd2hvc2UgZWxlbWVudCBzdG9yYWdlIChtYXhfZW50cmllcyAqIHZhbHVlX3NpemUpIGV4Y2VlZHNcbitcdCAqIFUzMl9NQVggYnl0ZXMgbXVzdCBiZSByZWplY3RlZCBhdCBjcmVhdGlvbiB0aW1lLCBvdGhlcndpc2UgdGhlXG4rXHQgKiB1MzIgaGVhZC90YWlsIGluZGV4IG11bHRpcGxpY2F0aW9uIHdyYXBzIGFuZCBwdXNoL3BlZWsvcG9wXG4rXHQgKiBhZGRyZXNzIHRoZSB3cm9uZyBlbGVtZW50LiA4MTkyICogMU1CID0gOEdCIFx1MDAzZSBVMzJfTUFYLlxuK1x0ICovXG4rXHRmZCA9IGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9RVUVVRSwgTlVMTCwgMCwgYmlnX3ZhbHVlLCA4MTkyLCBcdTAwMjZvcHRzKTtcbitcdHNhdmVkX2Vycm5vID0gZXJybm87XG4rXHRBU1NFUlRfTFQoZmQsIDAsIFwicXVldWVfb3ZlcnNpemVfZmRcIik7XG4rXHRBU1NFUlRfRVEoc2F2ZWRfZXJybm8sIEUyQklHLCBcInF1ZXVlX292ZXJzaXplX2Vycm5vXCIpO1xuK1x0aWYgKGZkIFx1MDAzZT0gMClcbitcdFx0Y2xvc2UoZmQpO1xuK1xuK1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfU1RBQ0ssIE5VTEwsIDAsIGJpZ192YWx1ZSwgODE5MiwgXHUwMDI2b3B0cyk7XG4rXHRzYXZlZF9lcnJubyA9IGVycm5vO1xuK1x0QVNTRVJUX0xUKGZkLCAwLCBcInN0YWNrX292ZXJzaXplX2ZkXCIpO1xuK1x0QVNTRVJUX0VRKHNhdmVkX2Vycm5vLCBFMkJJRywgXCJzdGFja19vdmVyc2l6ZV9lcnJub1wiKTtcbitcdGlmIChmZCBcdTAwM2U9IDApXG4rXHRcdGNsb3NlKGZkKTtcbitcbitcdC8qIEEgbm9ybWFsLXNpemVkIG1hcCBtdXN0IHN0aWxsIGJlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiAqL1xuK1x0ZmQgPSBicGZfbWFwX2NyZWF0ZShCUEZfTUFQX1RZUEVfUVVFVUUsIE5VTEwsIDAsIDY0LCAxMDAsIFx1MDAyNm9wdHMpO1xuK1x0QVNTRVJUX0dFKGZkLCAwLCBcInF1ZXVlX25vcm1hbF9mZFwiKTtcbitcdGlmIChmZCBcdTAwM2U9IDApXG4rXHRcdGNsb3NlKGZkKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3F1ZXVlX3N0YWNrX21hcCh2b2lkKVxuIHtcbiBcdHRlc3RfcXVldWVfc3RhY2tfbWFwX2J5X3R5cGUoUVVFVUUpO1xuIFx0dGVzdF9xdWV1ZV9zdGFja19tYXBfYnlfdHlwZShTVEFDSyk7XG4rXHR0ZXN0X3F1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjaygpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjAxLjY2MjUxNTUzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjU1MzMxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIEJQRiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgdGhpcyBuZXcgY2hlY2sgd2l0aGluIHRoZSBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCBmdW5jdGlvbi4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IGEgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgd2hlbiBjcmVhdGluZyBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFNwZWNpZmljYWxseSwgaXQncyBjaGVja2luZyB0aGF0IHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBgbWF4X2VudHJpZXNgIGFuZCBgdmFsdWVfc2l6ZWAgZG9lc24ndCBleGNlZWQgYFUzMl9NQVhgLiBUaGlzIGlzIGltcG9ydGFudCwgb2J2aW91c2x5LCBiZWNhdXNlIHRoZSByZXN1bHQgb2YgdGhhdCBtdWx0aXBsaWNhdGlvbiBpcyB1c2VkIHRvIGluZGV4IGFuIGFycmF5LCBgZWxlbWVudHNbXWAsIGFuZCBhbiBvdmVyZmxvdyB3b3VsZCBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCB3ZSBhYnNvbHV0ZWx5IGNhbm5vdCBoYXZlLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2Ugd2l0aGluIHRoZSBCUEYgc3Vic3lzdGVtLCBhbmQgc3BlY2lmaWNhbGx5LCBmb2N1c2VzIG9uIHRoZSBxdWV1ZSBhbmQgc3RhY2sgbWFwcywgd2hpY2ggbWFrZXMgc2Vuc2UuIFdlJ3JlIHRyeWluZyB0byBoYXJkZW4gdGhlIG1hcCBjcmVhdGlvbiBwcm9jZXNzLlxuXG5JIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IHZlcmlmeSB0aGUgQlBGIGNvbmZpZ3VyYXRpb24uIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyDigJMgcmlnaHQsIEJQRiBtYXBzIGFyZSBlbmFibGVkIHRocm91Z2ggYENPTkZJR19CUEZfU1lTQ0FMTGAuXG5cbk5vdywgbGV0J3MgdXNlIHRoZSBzdGFuZGFyZCB0b29scyB0byB2YWxpZGF0ZSB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MDYuMTI4MDUyMDIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODM0MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0zNj1zdGF0aWMgYm9vbCBxdWV1ZV9zdGFja19tYXBfaXNfZnVsbChzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpxcylcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQ2LS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo0NzpzdGF0aWMgaW50IHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00OC17XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0yNjk9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHF1ZXVlX21hcF9vcHMgPSB7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjcwLVxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNzE6XFx0Lm1hcF9hbGxvY19jaGVjayA9IHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVjayxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNzItXFx0Lm1hcF9hbGxvYyA9IHF1ZXVlX3N0YWNrX21hcF9hbGxvYyxcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI4NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgc3RhY2tfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yODYtXFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4NzpcXHQubWFwX2FsbG9jX2NoZWNrID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrLFxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI4OC1cXHQubWFwX2FsbG9jID0gcXVldWVfc3RhY2tfbWFwX2FsbG9jLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODowNi4xNzE4OTE2MzdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAzMjc2MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgUXVldWUgYW5kIFN0YWNrIE1hcCBBbGxvY2F0aW9uKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbnRvIHRoaXMgYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgZnVuY3Rpb24uIEl0J3MgdHJpZ2dlcmVkIGR1cmluZyBtYXAgYWxsb2NhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHF1ZXVlIGFuZCBzdGFjayBtYXBzIOKAkyB0aGF0J3MgdGhlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCBldmVuICplbmFibGUqIHRoZSByZWxldmFudCBjb2RlIGluIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AuIFdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSB0aWVkIHRvIHRoYXQ/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBudWFuY2UgbGllczogYXJlIHRoZXNlIG1hcHMgY29uZGl0aW9uYWxseSBjb21waWxlZCwgb3IgYXJlIHRoZXJlIHJ1bnRpbWUgY2hlY2tzIGludm9sdmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGVudmlyb25tZW50YWwgY29uZGl0aW9ucyBkaWN0YXRlIHRoZWlyIGF2YWlsYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyMywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjA5LjM3NTE3MDUzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYwMzc4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9zdGFja19tYXBzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGhhc2h0YWIubyBhcnJheW1hcC5vIHBlcmNwdV9mcmVlbGlzdC5vIGJwZl9scnVfbGlzdC5vIGxwbV90cmllLm8gbWFwX2luX21hcC5vIGJsb29tX2ZpbHRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGxvY2FsX3N0b3JhZ2UubyBxdWV1ZV9zdGFja19tYXBzLm8gcmluZ2J1Zi5vIGJwZl9pbnNuX2FycmF5Lm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX2xvY2FsX3N0b3JhZ2UubyBicGZfdGFza19zdG9yYWdlLm9cXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NzI9Q0ZMQUdTX1JFTU9WRV9icGZfbHJ1X2xpc3QubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NzM6Q0ZMQUdTX1JFTU9WRV9xdWV1ZV9zdGFja19tYXBzLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTc0LUNGTEFHU19SRU1PVkVfbHBtX3RyaWUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODowOS40MjA3ODE2MjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgwNzQ4MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgU3RhY2svUXVldWUgTWFwIEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0J3MgYWxsIHByZWRpY2F0ZWQgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAsIHRoYXQncyB0aGUga2V5LiAgTm93LCB0aGUgdGhpbmcgdGhhdCdzIHNuYWdnaW5nIG15IGF0dGVudGlvbiBpcyB0aGlzIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGZ1bmN0aW9uLiBJdCdzIG1hcmtlZCBgc3RhdGljYCwgd2hpY2ggbWVhbnMgaXQncyBsaW1pdGVkIGluIHNjb3BlLCBidXQgdGhlbiBJIHNlZSBpdCdzIGJlaW5nIGFzc2lnbmVkIHRvIGBtYXBfYWxsb2NfY2hlY2tgIHdpdGhpbiBib3RoIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGVpciBzaGFyZWQgYmVoYXZpb3VyLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbnMgaGVyZSwgc28gbXkgbmV4dCBtb3ZlIGlzIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBib3RoIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgLiBBcmUgdGhleSB1c2VkIGluZGVwZW5kZW50bHkgb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBvcGVyYXRpb25zPyBBcmUgdGhlcmUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgc3BhY2UgdG8gc3R1ZHk/IEkga25vdyB0aGVyZSdzIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NgIGluIHRoZSBzYW1lIGZpbGUgdGhhdCdzIHdvcnRoIGEgbG9vaywgYW5kIEknbSBzdXJlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRvby4gSSdsbCBmb2N1cyBvbiB0aGVzZSBhcmVhcyB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjEzLjYwMTUzMjA2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQzNDk0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9zdGFja19tYXBfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MzY9c3RhdGljIGJvb2wgcXVldWVfc3RhY2tfbWFwX2lzX2Z1bGwoc3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMpXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00Ni0vKiBDYWxsZWQgZnJvbSBzeXNjYWxsICovXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NDc6c3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNDgte1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzEtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NzI6c3RhdGljIHN0cnVjdCBicGZfbWFwICpxdWV1ZV9zdGFja19tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzMte1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MjY5PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBxdWV1ZV9tYXBfb3BzID0ge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI3MC1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjcxOlxcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjcyOlxcdC5tYXBfYWxsb2MgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2MsXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjczLVxcdC5tYXBfZnJlZSA9IHF1ZXVlX3N0YWNrX21hcF9mcmVlLFxcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9Mjg1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBzdGFja19tYXBfb3BzID0ge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI4Ni1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Mjg3OlxcdC5tYXBfYWxsb2NfY2hlY2sgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2ssXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Mjg4OlxcdC5tYXBfYWxsb2MgPSBxdWV1ZV9zdGFja19tYXBfYWxsb2MsXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjg5LVxcdC5tYXBfZnJlZSA9IHF1ZXVlX3N0YWNrX21hcF9mcmVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoxMy42NDY5NzM3NThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjY2MjE1MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBtYXliZSBpdCdzIG5vdCB0aGUgbW9zdCBzdHJhdGVnaWMgZW50cnkgcG9pbnQgZm9yIGRlZXBlciBhbmFseXNpcy4gU3RhdGljIGZ1bmN0aW9ucyBjYW4gc29tZXRpbWVzIGJlIG1vcmUgY29udGFpbmVkLCBtZWFuaW5nIGZvY3VzaW5nIG9uICp0aGlzKiBzcGVjaWZpYyBzeW1ib2wgbWlnaHQgYmUgbWlzc2luZyBhIHdpZGVyIHN5c3RlbWljIGlzc3VlLiBNeSBpbnN0aW5jdHMgYXJlIG51ZGdpbmcgbWUgdG93YXJkcyBhIGJyb2FkZXIgdmlldy4gTGV0J3MgZGlnIGEgYml0IGRlZXBlciBpbnRvIHRoZSBjb2RlYmFzZS4gSSdtIGdvaW5nIHRvIHNoaWZ0IG15IGZvY3VzIGF3YXkgZnJvbSB0aGlzIGlzb2xhdGVkIHBpZWNlIG9mIGNvZGUgYW5kIHRvIGV4cGxvcmUgdGhlIGJyb2FkZXIgY29udGV4dCBieSBjaGVja2luZyBmb3Igbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBrZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuY2AuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgcXVldWUvc3RhY2sgbWFwcyBpbXBsZW1lbnRhdGlvbi4gU2VlaW5nIHRoZSBsYXJnZXIgc2V0IG9mIGZ1bmN0aW9ucywgcHVibGljIG9yIHByaXZhdGUsIHdpbGwgbGlrZWx5IHByb3ZpZGUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBkZXNpZ24gYW5kIHBvdGVudGlhbGx5IHJldmVhbCB3aGVyZSB0aGlzIG92ZXJmbG93IG1pZ2h0IGhhdmUgcHJvcGFnYXRlZCBmcm9tLCBvciB3aGVyZSBvdGhlciByZWxhdGVkIHZ1bG5lcmFiaWxpdGllcyBtYXkgZXhpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoxOC4zMTMxOTExOTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTYwOTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bXnN0YXRpY10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQtICpcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo1OiAqIENvcHlyaWdodCAoYykgMjAxOCBQb2xpdGVjbmljbyBkaSBUb3Jpbm9cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy02LSAqL1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTQtI2RlZmluZSBRVUVVRV9TVEFDS19DUkVBVEVfRkxBR19NQVNLIFxcXFxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNTpcXHQoQlBGX0ZfTlVNQV9OT0RFIHwgQlBGX0ZfQUNDRVNTX01BU0spXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTYtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTc9c3RydWN0IGJwZl9xdWV1ZV9zdGFjayB7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMi1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMzpcXHRjaGFyIGVsZW1lbnRzW10gX19hbGlnbmVkKDgpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI0LX07XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0yNj1zdGF0aWMgc3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqYnBmX3F1ZXVlX3N0YWNrKHN0cnVjdCBicGZfbWFwICptYXApXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjcte1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI4OlxcdHJldHVybiBjb250YWluZXJfb2YobWFwLCBzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrLCBtYXApO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI5LX1cXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTM2PXN0YXRpYyBib29sIHF1ZXVlX3N0YWNrX21hcF9pc19mdWxsKHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzKVxcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMzktXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NDA6XFx0aWYgKHVubGlrZWx5KGhlYWQgXFx1MDAzZT0gcXMtXFx1MDAzZXNpemUpKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTQxLVxcdFxcdGhlYWQgPSAwO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9NDc9c3RhdGljIGludCBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy00OS1cXHQvKiBjaGVjayBzYW5pdHkgb2YgYXR0cmlidXRlcyAqL1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjUwOlxcdGlmIChhdHRyLVxcdTAwM2VtYXhfZW50cmllcyA9PSAwIHx8IGF0dHItXFx1MDAzZWtleV9zaXplICE9IDAgfHxcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy01MS1cXHQgICAgYXR0ci1cXHUwMDNldmFsdWVfc2l6ZSA9PSAwIHx8XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNTItXFx0ICAgIGF0dHItXFx1MDAzZW1hcF9mbGFncyBcXHUwMDI2IH5RVUVVRV9TVEFDS19DUkVBVEVfRkxBR19NQVNLIHx8XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NTM6XFx0ICAgICFicGZfbWFwX2ZsYWdzX2FjY2Vzc19vayhhdHRyLVxcdTAwM2VtYXBfZmxhZ3MpKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTU0LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTU1LVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjU2OlxcdGlmIChhdHRyLVxcdTAwM2V2YWx1ZV9zaXplIFxcdTAwM2UgS01BTExPQ19NQVhfU0laRSlcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy01Ny1cXHRcXHQvKiBpZiB2YWx1ZV9zaXplIGlzIGJpZ2dlciwgdGhlIHVzZXIgc3BhY2Ugd29uJ3QgYmUgYWJsZSB0b1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNjUtXFx0ICovXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6NjY6XFx0aWYgKCh1NjQpYXR0ci1cXHUwMDNlbWF4X2VudHJpZXMgKiBhdHRyLVxcdTAwM2V2YWx1ZV9zaXplIFxcdTAwM2UgVTMyX01BWClcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy02Ny1cXHRcXHRyZXR1cm4gLUUyQklHO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9NzI9c3RhdGljIHN0cnVjdCBicGZfbWFwICpxdWV1ZV9zdGFja19tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzMte1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjc0OlxcdGludCBudW1hX25vZGUgPSBicGZfbWFwX2F0dHJfbnVtYV9ub2RlKGF0dHIpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTc1LVxcdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtNzctXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6Nzg6XFx0c2l6ZSA9ICh1NjQpIGF0dHItXFx1MDAzZW1heF9lbnRyaWVzICsgMTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo3OTpcXHRxdWV1ZV9zaXplID0gc2l6ZW9mKCpxcykgKyBzaXplICogYXR0ci1cXHUwMDNldmFsdWVfc2l6ZTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy04MC1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo4MTpcXHRxcyA9IGJwZl9tYXBfYXJlYV9hbGxvYyhxdWV1ZV9zaXplLCBudW1hX25vZGUpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjgyOlxcdGlmICghcXMpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODM6XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtODQtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6ODU6XFx0YnBmX21hcF9pbml0X2Zyb21fYXR0cihcXHUwMDI2cXMtXFx1MDAzZW1hcCwgYXR0cik7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtODYtXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy04OC1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo4OTpcXHRyYXdfcmVzX3NwaW5fbG9ja19pbml0KFxcdTAwMjZxcy1cXHUwMDNlbG9jayk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtOTAtXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz05NT1zdGF0aWMgdm9pZCBxdWV1ZV9zdGFja19tYXBfZnJlZShzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTk2LXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzo5NzpcXHRzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpxcyA9IGJwZl9xdWV1ZV9zdGFjayhtYXApO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTk4LVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjk5OlxcdGJwZl9tYXBfYXJlYV9mcmVlKHFzKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMDAtfVxcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTAyPXN0YXRpYyBsb25nIF9fcXVldWVfbWFwX2dldChzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSwgYm9vbCBkZWxldGUpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTAzLXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMDQ6XFx0c3RydWN0IGJwZl9xdWV1ZV9zdGFjayAqcXMgPSBicGZfcXVldWVfc3RhY2sobWFwKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMDUtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEwOC1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMDk6XFx0aWYgKHJhd19yZXNfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnFzLVxcdTAwM2Vsb2NrLCBmbGFncykpIHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMTA6XFx0XFx0bWVtc2V0KHZhbHVlLCAwLCBxcy1cXHUwMDNlbWFwLnZhbHVlX3NpemUpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTExMS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTEzLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjExNDpcXHRpZiAocXVldWVfc3RhY2tfbWFwX2lzX2VtcHR5KHFzKSkge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjExNTpcXHRcXHRtZW1zZXQodmFsdWUsIDAsIHFzLVxcdTAwM2VtYXAudmFsdWVfc2l6ZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTE2LVxcdFxcdGVyciA9IC1FTk9FTlQ7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMjAtXFx0cHRyID0gXFx1MDAyNnFzLVxcdTAwM2VlbGVtZW50c1txcy1cXHUwMDNldGFpbCAqIHFzLVxcdTAwM2VtYXAudmFsdWVfc2l6ZV07XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTIxOlxcdG1lbWNweSh2YWx1ZSwgcHRyLCBxcy1cXHUwMDNlbWFwLnZhbHVlX3NpemUpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEyMi1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxMjM6XFx0aWYgKGRlbGV0ZSkge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjEyNDpcXHRcXHRpZiAodW5saWtlbHkoKytxcy1cXHUwMDNldGFpbCBcXHUwMDNlPSBxcy1cXHUwMDNlc2l6ZSkpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTI1LVxcdFxcdFxcdHFzLVxcdTAwM2V0YWlsID0gMDtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEyOC1vdXQ6XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTI5OlxcdHJhd19yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cXMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xMzAtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTEzND1zdGF0aWMgbG9uZyBfX3N0YWNrX21hcF9nZXQoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsIGJvb2wgZGVsZXRlKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTEzNS17XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTM2OlxcdHN0cnVjdCBicGZfcXVldWVfc3RhY2sgKnFzID0gYnBmX3F1ZXVlX3N0YWNrKG1hcCk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTM3LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNDEtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTQyOlxcdGlmIChyYXdfcmVzX3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZxcy1cXHUwMDNlbG9jaywgZmxhZ3MpKSB7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTQzOlxcdFxcdG1lbXNldCh2YWx1ZSwgMCwgcXMtXFx1MDAzZW1hcC52YWx1ZV9zaXplKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xNDQtXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0Ni1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNDc6XFx0aWYgKHF1ZXVlX3N0YWNrX21hcF9pc19lbXB0eShxcykpIHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNDg6XFx0XFx0bWVtc2V0KHZhbHVlLCAwLCBxcy1cXHUwMDNlbWFwLnZhbHVlX3NpemUpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE0OS1cXHRcXHRlcnIgPSAtRU5PRU5UO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTUzLVxcdGluZGV4ID0gcXMtXFx1MDAzZWhlYWQgLSAxO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjE1NDpcXHRpZiAodW5saWtlbHkoaW5kZXggXFx1MDAzZT0gcXMtXFx1MDAzZXNpemUpKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE1NS1cXHRcXHRpbmRleCA9IHFzLVxcdTAwM2VzaXplIC0gMTtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE1Ny1cXHRwdHIgPSBcXHUwMDI2cXMtXFx1MDAzZWVsZW1lbnRzW2luZGV4ICogcXMtXFx1MDAzZW1hcC52YWx1ZV9zaXplXTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNTg6XFx0bWVtY3B5KHZhbHVlLCBwdHIsIHFzLVxcdTAwM2VtYXAudmFsdWVfc2l6ZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTU5LVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjE2MDpcXHRpZiAoZGVsZXRlKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2MS1cXHRcXHRxcy1cXHUwMDNlaGVhZCA9IGluZGV4O1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTYzLW91dDpcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNjQ6XFx0cmF3X3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZxcy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE2NS1cXHRyZXR1cm4gZXJyO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTY5PXN0YXRpYyBsb25nIHF1ZXVlX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTcwLXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxNzE6XFx0cmV0dXJuIF9fcXVldWVfbWFwX2dldChtYXAsIHZhbHVlLCBmYWxzZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTcyLX1cXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTE3NT1zdGF0aWMgbG9uZyBzdGFja19tYXBfcGVla19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE3Ni17XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTc3OlxcdHJldHVybiBfX3N0YWNrX21hcF9nZXQobWFwLCB2YWx1ZSwgZmFsc2UpO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE3OC19XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0xODE9c3RhdGljIGxvbmcgcXVldWVfbWFwX3BvcF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE4Mi17XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MTgzOlxcdHJldHVybiBfX3F1ZXVlX21hcF9nZXQobWFwLCB2YWx1ZSwgdHJ1ZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTg0LX1cXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTE4Nz1zdGF0aWMgbG9uZyBzdGFja19tYXBfcG9wX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMTg4LXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoxODk6XFx0cmV0dXJuIF9fc3RhY2tfbWFwX2dldChtYXAsIHZhbHVlLCB0cnVlKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xOTAtfVxcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM9MTkzPXN0YXRpYyBsb25nIHF1ZXVlX3N0YWNrX21hcF9wdXNoX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsXFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0xOTUte1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjE5NjpcXHRzdHJ1Y3QgYnBmX3F1ZXVlX3N0YWNrICpxcyA9IGJwZl9xdWV1ZV9zdGFjayhtYXApO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTE5Ny1cXHR1bnNpZ25lZCBsb25nIGlycV9mbGFncztcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIwMy1cXHQgKi9cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMDQ6XFx0Ym9vbCByZXBsYWNlID0gKGZsYWdzIFxcdTAwMjYgQlBGX0VYSVNUKTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMDUtXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA2LVxcdC8qIENoZWNrIHN1cHBvcnRlZCBmbGFncyBmb3IgcXVldWUgYW5kIHN0YWNrIG1hcHMgKi9cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMDc6XFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX05PRVhJU1QgfHwgZmxhZ3MgXFx1MDAzZSBCUEZfRVhJU1QpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjA4LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIwOS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMTA6XFx0aWYgKHJhd19yZXNfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnFzLVxcdTAwM2Vsb2NrLCBpcnFfZmxhZ3MpKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIxMS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIxMi1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMTM6XFx0aWYgKHF1ZXVlX3N0YWNrX21hcF9pc19mdWxsKHFzKSkge1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIxNDpcXHRcXHRpZiAoIXJlcGxhY2UpIHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yMTUtXFx0XFx0XFx0ZXJyID0gLUUyQklHO1xcbi0tXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjE4LVxcdFxcdC8qIGFkdmFuY2UgdGFpbCBwb2ludGVyIHRvIG92ZXJ3cml0ZSBvbGRlc3QgZWxlbWVudCAqL1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIxOTpcXHRcXHRpZiAodW5saWtlbHkoKytxcy1cXHUwMDNldGFpbCBcXHUwMDNlPSBxcy1cXHUwMDNlc2l6ZSkpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjIwLVxcdFxcdFxcdHFzLVxcdTAwM2V0YWlsID0gMDtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIyMy1cXHRkc3QgPSBcXHUwMDI2cXMtXFx1MDAzZWVsZW1lbnRzW3FzLVxcdTAwM2VoZWFkICogcXMtXFx1MDAzZW1hcC52YWx1ZV9zaXplXTtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyMjQ6XFx0bWVtY3B5KGRzdCwgdmFsdWUsIHFzLVxcdTAwM2VtYXAudmFsdWVfc2l6ZSk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjI1LVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjIyNjpcXHRpZiAodW5saWtlbHkoKytxcy1cXHUwMDNlaGVhZCBcXHUwMDNlPSBxcy1cXHUwMDNlc2l6ZSkpXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjI3LVxcdFxcdHFzLVxcdTAwM2VoZWFkID0gMDtcXG4tLVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTIyOS1vdXQ6XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjMwOlxcdHJhd19yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cXMtXFx1MDAzZWxvY2ssIGlycV9mbGFncyk7XFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjMxLVxcdHJldHVybiBlcnI7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYz0yNjA9c3RhdGljIHU2NCBxdWV1ZV9zdGFja19tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjYxLXtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjI6XFx0dTY0IHVzYWdlID0gc2l6ZW9mKHN0cnVjdCBicGZfcXVldWVfc3RhY2spO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI2My1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYzoyNjQ6XFx0dXNhZ2UgKz0gKCh1NjQpbWFwLVxcdTAwM2VtYXhfZW50cmllcyArIDEpICogbWFwLVxcdTAwM2V2YWx1ZV9zaXplO1xcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jLTI2NS1cXHRyZXR1cm4gdXNhZ2U7XFxuLS1cXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNjctXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmM6MjY4OkJURl9JRF9MSVNUX1NJTkdMRShxdWV1ZV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcXVldWVfc3RhY2spXFxua2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmMtMjY5LWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBxdWV1ZV9tYXBfb3BzID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoxOC4zNTgzODMxOTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyMTIyODAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFNjb3BlIG9mIFRoZXNlIERhdGEgU3RydWN0dXJlIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBxdWV1ZV9tYXBfcGVla19lbGVtYCwgYHN0YWNrX21hcF9wZWVrX2VsZW1gLCBgcXVldWVfbWFwX3BvcF9lbGVtYCwgYHN0YWNrX21hcF9wb3BfZWxlbWAsIGFuZCBgcXVldWVfc3RhY2tfbWFwX3B1c2hfZWxlbWAuIFRoZXkgYXJlIGRlY2xhcmVkIGBzdGF0aWNgLi4uIGludGVyZXN0aW5nLiBUaGlzIHRlbGxzIG1lIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggaXMgZ29vZCBmb3IgZW5jYXBzdWxhdGlvbi4gQnV0IGl0IG1ha2VzIG1lIHdvbmRlciwgYXJlIGBxdWV1ZV9tYXBfb3BzYCBhbmQgYHN0YWNrX21hcF9vcHNgIGFsc28gYHN0YXRpY2A/IEFuZCBtb3JlIGltcG9ydGFudGx5LCBhcmUgdGhleSAqZXhwb3J0ZWQqIG9yIHVzZWQgaW4gZXh0ZXJuYWwgbW9kdWxlcz9cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHNjb3BlIG9mIHRoZXNlIGBvcHNgIHN0cnVjdHVyZXMuIElmIHRoZXkncmUgdmlzaWJsZSBvdXRzaWRlLCB0aGV5IG5lZWQgbW9yZSBjYXJlLiBMZXQncyBzdGFydCBieSBmaWd1cmluZyBvdXQgd2hlcmUgYHF1ZXVlX21hcF9vcHNgIGlzIGFjdHVhbGx5IHVzZWQuIEEgcXVpY2sgc2VhcmNoIHNob3VsZCBjbGFyaWZ5IHRoaW5ncy4gVW5kZXJzdGFuZGluZyB0aGlzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHRoZSBvdmVyYWxsIGRlc2lnbiBhbmQgYW55IHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMgb3IgZXh0ZXJuYWwgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzQ2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MjIuNjc5NjEzNDY3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA5OTAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jPTI2OD1CVEZfSURfTElTVF9TSU5HTEUocXVldWVfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3F1ZXVlX3N0YWNrKVxcbmtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jOjI2OTpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcXVldWVfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL3F1ZXVlX3N0YWNrX21hcHMuYy0yNzAtXFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoyMi43MjY3MTcwODJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzMzUzNTYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBxdWV1ZV9tYXBfb3BzYCBEZWNsYXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgcXVldWVfbWFwX29wc2AuIEhvbGQgb24gYSBtaW51dGXigKYgaXNuJ3QgdGhhdCB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBleHRlcm5hbGx5LCBub3Qgc3RhdGljYWxseSB3aXRoaW4gdGhlIHNjb3BlIEkgd2FzIGp1c3QgZXhhbWluaW5nPyBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbGx5LCBtYXliZSBpbiB0aGUga2VybmVsIGhlYWRlcnMuIExldCBtZSBkb3VibGUtY2hlY2suIEknbSBwcmV0dHkgc3VyZSBpdCdzIGluIGEgaGVhZGVyIHJlbGF0ZWQgdG8gQlBGLCBidXQgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBmaWxlLiBMZXQncyBnbyB0byBgaW5jbHVkZS9saW51eC9icGYuaGAgb3Igc29tZXdoZXJlIHNpbWlsYXIgdG8gc2VlIGlmIEkgY2FuIHRyYWNlIHRoZSBkZWNsYXJhdGlvbiB0aGVyZS4gTm8sIHdhaXQsIEkgcmVtZW1iZXIgbm93LCBpdCBtYXkgd2VsbCBiZSBpbiBgaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaGAuIFRoYXQncyB3aGVyZSBJIHNob3VsZCBiZSBsb29raW5nIGZvciB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gYW5kIHBvdGVudGlhbGx5IHRoZSBkZWNsYXJhdGlvbi4gVGltZSB0byBnZXQgdGhhdCBmaWxlIG9wZW4gYW5kIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMDcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODoyNi42NjAyNTY2NjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjY1OTAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9MTI0PUJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfUkVVU0VQT1JUX1NPQ0tBUlJBWSwgcmV1c2Vwb3J0X2FycmF5X29wcylcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTI2LSNlbmRpZlxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg6MTI3OkJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfUVVFVUUsIHF1ZXVlX21hcF9vcHMpXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xMjgtQlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9TVEFDSywgc3RhY2tfbWFwX29wcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MjYuODc2OTIwNDM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NzI4NzY2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBNYXAgQ3JlYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIEJQRiBtYXBzLCBzcGVjaWZpY2FsbHkgcXVldWUvc3RhY2sgbWFwcywgYW5kIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzIGZvciBhbmFseXNpcy4gSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGV5J3JlIHJlZ2lzdGVyZWQgdmlhIGBCUEZfTUFQX1RZUEVgLiBUaGUga2V5IGhlcmUgaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGJlc3QgdGFyZ2V0cyBmb3IgaW52ZXN0aWdhdGlvbiwgZ2l2ZW4gdGhlIGluc3RydWN0aW9ucy5cblxuU2luY2UgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gYGtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jYCBhcmUgYWxsIHN0YXRpYywgbXkgaW5pdGlhbCBpbnN0aW5jdHMgdGVsbCBtZSB0byBsb29rIGVsc2V3aGVyZS4gVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeSBwb2ludHMuIFRoYXQgcG9pbnRzIG1lIHRvd2FyZCBgYnBmX21hcF9jcmVhdGVgIG9yIGBtYXBfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBIb3dldmVyLCBJIGNvdWxkIGNob29zZSB0byBhbmFseXplIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGlmIEkgd2FudGVkLCBidXQgdGhlIGluc3RydWN0aW9ucyBhZHZpc2UgYWdhaW5zdCB0aGlzIGJlY2F1c2UgdGhleSdyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLlxuXG5Ob3csIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgICppcyogaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYG1hcF9hbGxvY19jaGVja2AsIGluIGBxdWV1ZV9tYXBfb3BzYC4gRnVuY3Rpb24gcG9pbnRlcnMgYXJlbid0IGlubGluZWQsIHNvIGl0J3MgYSB2YWxpZCBjaG9pY2UuIFRoYXQncyBnb29kIHRvIGtub3cuIEhvd2V2ZXIsIEkgc3RpbGwgZmVlbCB0aGUgcHJvcGVyIGVudHJ5IHBvaW50IGlzIGBtYXBfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBUaGF0J3Mgd2hlcmUgSSBzaG91bGQgZm9jdXMuIFNvLCBsZXQncyBoZWFkIG92ZXIgdG8gYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBhbmQgZGlnIGludG8gYG1hcF9jcmVhdGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYyNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODozMi42NDk3OTk0MThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNDI3MTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcF9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9zeXNjYWxsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9zeXNjYWxsLmM9MTI0Mz1zdGF0aWMgaW50IG1hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl90b2tlbiAqdG9rZW4sXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzY5LS8qIGNhbGxlZCB2aWEgc3lzY2FsbCAqL1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzNzA6c3RhdGljIGludCBtYXBfY3JlYXRlX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzcxLVxcdFxcdFxcdCAgICBzdHJ1Y3QgYnBmX21hcCAqKm1hcHAsIHN0cnVjdCBicGZfdG9rZW4gKip0b2tlbnApXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjE3LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE2MTg6c3RhdGljIGludCBtYXBfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9jb21tb25fYXR0ciAqYXR0cl9jb21tb24sXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYxOS1cXHRcXHQgICAgICBicGZwdHJfdCB1YXR0cl9jb21tb24sIHUzMiBzaXplX2NvbW1vbilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2MzEtXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTYzMjpcXHRlcnIgPSBtYXBfY3JlYXRlX2FsbG9jKGF0dHIsIHVhdHRyLCBsb2csIFxcdTAwMjZtYXAsIFxcdTAwMjZ0b2tlbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTYzMy1cXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2NDktXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTY1MDpcXHRlcnIgPSBzZWN1cml0eV9icGZfbWFwX2NyZWF0ZShtYXAsIGF0dHIsIHRva2VuLCB1YXR0ci5pc19rZXJuZWwpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2NTEtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTYyOTQ9c3RhdGljIGludCBfX3N5c19icGYoZW51bSBicGZfY21kIGNtZCwgYnBmcHRyX3QgdWF0dHIsIHVuc2lnbmVkIGludCBzaXplLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjMzNC1cXHRjYXNlIEJQRl9NQVBfQ1JFQVRFOlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjYzMzU6XFx0XFx0ZXJyID0gbWFwX2NyZWF0ZShcXHUwMDI2YXR0ciwgdWF0dHIsIFxcdTAwMjZhdHRyX2NvbW1vbiwgdWF0dHJfY29tbW9uLCBzaXplX2NvbW1vbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjMzNi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MzIuNzAyMjMxOTcyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NzEzODcxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFBhdGNoKipcblxuT2theSwgc28gYG1hcF9jcmVhdGVgIGZlZWxzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZGl2aW5nIGludG8gdGhpcy4gQW5kLCByaWdodCwgSSByZW1lbWJlciBub3csIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGlzbid0IGlubGluZWQgYmVjYXVzZSBpdCdzIGJlaW5nIHBhc3NlZCBhcm91bmQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBMZXQgbWUganVzdCBjb25maXJtIHdoZXJlIHRoYXQgbGl2ZXMg4oCTIGFoYSwgaXQncyByaWdodCB0aGVyZSBpbiBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgLCBhcyBleHBlY3RlZC4gVGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBmaXhpbmcgYW4gb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3aXRoaW4gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCBsb29rcyBnb29kOyBpdCdzIHByZXZlbnRpbmcgYW4gaW50ZWdlciBvdmVyZmxvdywgd2hpY2gsIGlmIGV4cGxvaXRlZCwgY291bGQgZGVmaW5pdGVseSBsZWFkIHRvIHNvbWUgbmFzdHkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIGlzc3Vlcy4gVGhlIG1haW4gY29uZmlndXJhdGlvbiBpbnZvbHZlZCBzZWVtcyB0byBiZSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYW5kIHllcywgdGhhdCdzIHRoZSBwcmltYXJ5IGVuYWJsZXIgZm9yIEJQRiBmdW5jdGlvbmFsaXR5LiBJJ2xsIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2gsIHRvIGVuc3VyZSB0aGVyZSBhcmVu4oCZdCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIHdlIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTczMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODozNy40NzM2MjE5OTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTAwOTc5MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9TWVNDQUxMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6MzcuNjY0NjQ4MDAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjE2ODAyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6XG5cbioqTG9jYXRpbmcgdGhlIERlZmluaXRpb24gb2YgYEJQRl9TWVNDQUxMYCoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCBvdXQgd2hlcmUgYEJQRl9TWVNDQUxMYCBpcyBhY3R1YWxseSBkZWZpbmVkLiBJdCdzIGEga2V5IGVsZW1lbnQgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSBCUEYgc3lzdGVtIGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwncyBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UsIGJ1dCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGRlZmluaXRpb24gdG8gZnVsbHkgZ3Jhc3AgdGhlIG1lY2hhbmljcyBhbmQgY29udGV4dC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgcGllY2UgZml0cyBpbnRvIHRoZSBncmVhdGVyIHB1enpsZS4gS25vd2luZyB0aGUgb3JpZ2luIG9mIHRoaXMgc3ltYm9sIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIGhvdyBpdCdzIGJlaW5nIHVzZWQsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1pZ2h0IHJlbGF0ZSB0bywgYW5kIHVsdGltYXRlbHksIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uIExldCdzIHN0YXJ0IHRoZSBodW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjE3MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjQwLjYyNjMzMTYzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NTYxNTU2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6NDIuMzExOTU1MjM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzY2NjQ5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIEJQRiBTeXNjYWxsIERlcGVuZGVuY2llcyBpbiB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIGBCUEZfU1lTQ0FMTGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdsbCBzdGFydCB3aXRoIGBrZXJuZWwvYnBmL0tjb25maWdgLiBUaGlzIGlzIHRoZSBwbGFjZSB3aGVyZSBhbGwgdGhlIEJQRi1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgbGlrZWx5IGRlZmluZWQgYW5kIHdoZXJlIEknbGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIEknbSBsb29raW5nIGZvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBgQlBGX1NZU0NBTExgIGJlY29tZXMgYXZhaWxhYmxlIG9yIGhvdyBpdCBtaWdodCBpbmZsdWVuY2Ugb3RoZXIgZmVhdHVyZXMuIEl0J3MgYSBmdW5kYW1lbnRhbCBzdGVwIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgQlBGIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0NTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNDo1ODo0OC40ODg2MjQwNjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI3OlxcdGNvbmZpZyBCUEZfU1lTQ0FMTFxcbiAgMjg6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcbiAgMjk6XFx0XFx0c2VsZWN0IEJQRlxcbiAgMzA6XFx0XFx0c2VsZWN0IElSUV9XT1JLXFxuICAzMTpcXHRcXHRzZWxlY3QgTkVFRF9UQVNLU19SQ1VcXG4gIDMyOlxcdFxcdHNlbGVjdCBUQVNLU19UUkFDRV9SQ1VcXG4gIDMzOlxcdFxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxcbiAgMzU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuICAzNjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbiAgMzc6XFx0XFx0ZGVmYXVsdCBuXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIEVuYWJsZSB0aGUgYnBmKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBCUEYgcHJvZ3JhbXNcXG4gIDQwOlxcdFxcdCAgYW5kIG1hcHMgdmlhIGZpbGUgZGVzY3JpcHRvcnMuXFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBCUEZfSklUXFxuICA0MzpcXHRcXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG4gIDQ0OlxcdFxcdGRlcGVuZHMgb24gQlBGXFxuICA0NTpcXHRcXHRkZXBlbmRzIG9uIEhBVkVfQ0JQRl9KSVQgfHwgSEFWRV9FQlBGX0pJVFxcbiAgNDY6XFx0XFx0c2VsZWN0IEVYRUNNRU1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDQ6NTg6NDguNDg4NjkwNDU3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzcyNzg3ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGRvZXNuJ3QgaGF2ZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGxpc3RlZCwganVzdCBpbXBsaWVkIG9uZXMgYmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcy4gVGhlIHJlbGV2YW50IGNvbmZpZyB0byBlbmFibGUgaGVyZSBzZWVtcyB0byBiZSBgQlBGX1NZU0NBTExgLlxuXG5MZXQncyBxdWlja2x5IHJlY2FwIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nLiBBaCwgcmlnaHQsIHRoZSBib3VuZHMgY2hlY2suXG5cbmBgYGNcblx0Lypcblx0ICogVGhlIHUzMiBoZWFkL3RhaWwgaW5kZXggaXMgbXVsdGlwbGllZCBieSB2YWx1ZV9zaXplIHRvIGFkZHJlc3Ncblx0ICogZWxlbWVudHNbXS4gQm91bmQgdGhlIG1hcCBzaXplIHNvIHRoZSBwcm9kdWN0IGNhbm5vdCBvdmVyZmxvdy5cblx0ICovXG5cdGlmICgodTY0KWF0dHItXHUwMDNlbWF4X2VudHJpZXMgKiBhdHRyLVx1MDAzZXZhbHVlX3NpemUgXHUwMDNlIFUzMl9NQVgpXG5cdFx0cmV0dXJuIC1FMkJJRztcbmBgYFxuXG5JdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGZvY3VzaW5nIG9uIHByZXZlbnRpbmcgYW4gaW50ZWdlciBvdmVyZmxvdywgcGFydGljdWxhcmx5IGluIGBtYXBfY3JlYXRlYCB3aXRoaW4gYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBhbmQgbW9yZSBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFyZ2V0IGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGxvY2F0ZWQgaW4gYGtlcm5lbC9icGYvcXVldWVfc3RhY2tfbWFwcy5jYC4gRXZlbiB0aG91Z2ggYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgaXMgc3RhdGljLCBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBzbyBpdCBnZXRzIGl0cyBvd24gYWRkcmVzcyBhbmQgSSBjYW4gaW5jbHVkZSBpdC4gQWN0dWFsbHksIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIGlzIHRoZSAqZXhhY3QqIGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkLCBzbyBJJ20gZ29pbmcgdG8gaW5jbHVkZSBpdC5cblxuSSBzaG91bGQgYWxzbyBkb3VibGUtY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGlzIGFsc28gdG91Y2hlcyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcXVldWVfc3RhY2tfbWFwLmNgLiBUaGF0J3MganVzdCBhIHNlbGZ0ZXN0LCBub3QgcGFydCBvZiB0aGUgY29yZSBrZXJuZWwgYnVpbGQsIGJ1dCB0aGUgY2hhbmdlICppdHNlbGYqIGlzIGluIHRoZSBga2VybmVsL2JwZi9xdWV1ZV9zdGFja19tYXBzLmNgIGZpbGUuXG5cblNvLCB0aGUgY29uZmlnIEkgbmVlZCBpcyBzdGlsbCBgQlBGX1NZU0NBTExgLlxuXG5CYXNpY2FsbHksIHRoaXMgcGF0Y2ggYWRkcyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIGluIGBxdWV1ZV9zdGFja19tYXBfYWxsb2NfY2hlY2tgIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjcmVhdGluZyBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBkaXJlY3RseSB3aXRoaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSBhZmZlY3RpbmcgbWFwIGNyZWF0aW9uLCBzcGVjaWZpY2FsbHkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy5cblxuQmVjYXVzZSBpdCB0b3VjaGVzIG1hcCBjcmVhdGlvbiBhbmQgb3ZlcmZsb3cgY2hlY2tzLCBpdCdzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuQWxyaWdodCwgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTM4LCJPdXRwdXRUb2tlbnMiOjExNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA0OjU4OjU2LjUyNTk3Mjg2NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3OTg1OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hcF9jcmVhdGVcIixcbiAgICBcInF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYHF1ZXVlX3N0YWNrX21hcF9hbGxvY19jaGVja2AgdG8gcHJldmVudCBhbiBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZyB0aGUgY3JlYXRpb24gb2YgQlBGIHF1ZXVlIGFuZCBzdGFjayBtYXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWFwIGNyZWF0aW9uIGxvZ2ljIGFuZCBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFwX2NyZWF0ZVwiLFxuICAgIFwicXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgcXVldWVfc3RhY2tfbWFwX2FsbG9jX2NoZWNrYCB0byBwcmV2ZW50IGFuIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBCUEYgcXVldWUgYW5kIHN0YWNrIG1hcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtYXAgY3JlYXRpb24gbG9naWMgYW5kIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow5fspw[1] Phase: Succeeded StartedAt: 2026-08-07 04:59:07 +0000 UTC FinishedAt: 2026-08-07 04:59:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 04:59:07 +0000 UTC FinishedAt: 2026-08-07 04:59:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2] Phase: Succeeded StartedAt: 2026-08-07 04:59:07 +0000 UTC FinishedAt: 2026-08-07 08:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 04:59:07 +0000 UTC FinishedAt: 2026-08-07 08:39:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 04:59:07 +0000 UTC FinishedAt: 2026-08-07 04:59:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 04:59:07 +0000 UTC FinishedAt: 2026-08-07 04:59:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow5fspw/series-workflow5fspw-convert-artifact-3648411177/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 04:59:17 +0000 UTC FinishedAt: 2026-08-07 05:15:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 04:59:17 +0000 UTC FinishedAt: 2026-08-07 05:15:25 +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:*f7099b69-8f95-4d8c-bbf5-a097c3f1a54c,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-workflow5fspw/series-workflow5fspw-convert-artifact-3648411177/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": "bde75308-d68e-4731-b19a-a7c64c6c2c4a", "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-workflow5fspw/series-workflow5fspw-build-action-3530342023/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 04:59:17 +0000 UTC FinishedAt: 2026-08-07 05:15:15 +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:*f7099b69-8f95-4d8c-bbf5-a097c3f1a54c,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-workflow5fspw/series-workflow5fspw-convert-artifact-3648411177/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": "bde75308-d68e-4731-b19a-a7c64c6c2c4a", "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-workflow5fspw/series-workflow5fspw-build-action-3530342023/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 05:15:25 +0000 UTC FinishedAt: 2026-08-07 05:15:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 05:15:25 +0000 UTC FinishedAt: 2026-08-07 05:15:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 05:15:25 +0000 UTC FinishedAt: 2026-08-07 05:15:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 05:15:25 +0000 UTC FinishedAt: 2026-08-07 05:15:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow5fspw/series-workflow5fspw-convert-artifact-385921468/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 05:15:35 +0000 UTC FinishedAt: 2026-08-07 05:17:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 05:15:35 +0000 UTC FinishedAt: 2026-08-07 05:17:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bde75308-d68e-4731-b19a-a7c64c6c2c4a,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-workflow5fspw/series-workflow5fspw-build-action-3530342023/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-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 05:17:42 +0000 UTC FinishedAt: 2026-08-07 05:17:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 05:17:42 +0000 UTC FinishedAt: 2026-08-07 05:17:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 05:17:42 +0000 UTC FinishedAt: 2026-08-07 05:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 05:17:42 +0000 UTC FinishedAt: 2026-08-07 05:34:31 +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:*f7099b69-8f95-4d8c-bbf5-a097c3f1a54c,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-workflow5fspw/series-workflow5fspw-convert-artifact-385921468/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": "b233efb6-230c-457e-9159-fc4dbff35f25", "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-workflow5fspw/series-workflow5fspw-build-action-3874782232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 05:17:42 +0000 UTC FinishedAt: 2026-08-07 05:34:21 +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:*f7099b69-8f95-4d8c-bbf5-a097c3f1a54c,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-workflow5fspw/series-workflow5fspw-convert-artifact-385921468/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": "b233efb6-230c-457e-9159-fc4dbff35f25", "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-workflow5fspw/series-workflow5fspw-build-action-3874782232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 05:34:31 +0000 UTC FinishedAt: 2026-08-07 05:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 05:34:31 +0000 UTC FinishedAt: 2026-08-07 05:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 05:34:31 +0000 UTC FinishedAt: 2026-08-07 05:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 05:34:31 +0000 UTC FinishedAt: 2026-08-07 05:36:25 +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:*b233efb6-230c-457e-9159-fc4dbff35f25,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-workflow5fspw/series-workflow5fspw-build-action-3874782232/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-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 05:36:35 +0000 UTC FinishedAt: 2026-08-07 08:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 05:36:35 +0000 UTC FinishedAt: 2026-08-07 08:39:39 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*bde75308-d68e-4731-b19a-a7c64c6c2c4a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b233efb6-230c-457e-9159-fc4dbff35f25,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-workflow5fspw/series-workflow5fspw-build-action-3530342023/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-workflow5fspw/series-workflow5fspw-build-action-3874782232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 05:36:35 +0000 UTC FinishedAt: 2026-08-07 05:36:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 05:36:35 +0000 UTC FinishedAt: 2026-08-07 05:36:39 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5fspw/series-workflow5fspw-convert-artifact-765968005/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 05:36:35 +0000 UTC FinishedAt: 2026-08-07 05:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 05:36:35 +0000 UTC FinishedAt: 2026-08-07 05:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 05:36:35 +0000 UTC FinishedAt: 2026-08-07 05:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 05:36:45 +0000 UTC FinishedAt: 2026-08-07 08:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fspw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["map_create","queue_stack_map_alloc_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c7f55d60aa3512fd3da7e9cf313723460e487b4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"28c408dd-c8f5-4ac2-a118-8cd6105d2665","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 05:36:45 +0000 UTC FinishedAt: 2026-08-07 08:39:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bde75308-d68e-4731-b19a-a7c64c6c2c4a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b233efb6-230c-457e-9159-fc4dbff35f25,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-workflow5fspw/series-workflow5fspw-build-action-3530342023/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-workflow5fspw/series-workflow5fspw-build-action-3874782232/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-workflow5fspw/series-workflow5fspw-convert-artifact-765968005/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,}