Name: series-workflowqv6sc Phase: Succeeded StartedAt: 2026-09-08 06:39:30 +0000 UTC FinishedAt: 2026-09-08 11:21:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[0] Phase: Succeeded StartedAt: 2026-09-08 06:39:30 +0000 UTC FinishedAt: 2026-09-08 07:41:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 06:39:30 +0000 UTC FinishedAt: 2026-09-08 07:41:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_MESH", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_MESH", "CFG80211" ], "series_id": "cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mesh_fast_tx_cache", "mesh_path_del", "mesh_path_flush_by_nexthop", "mesh_path_tbl_expire", "mesh_nexthop_lookup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX01FU0gmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZXNoX2Zhc3RfdHhfY2FjaGUmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX2RlbCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfdGJsX2V4cGlyZSYjMzQ7LAogICAgJiMzNDttZXNoX25leHRob3BfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVzb2x2ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBtYWM4MDIxMSBtZXNoIHBhdGggbWFuYWdlbWVudCB3aGVyZSBhIG1lc2ggcGF0aCBtYXJrZWQgZm9yIGRlbGV0aW9uIGNvdWxkIGJlIGluc2VydGVkIGludG8gdGhlIGZhc3QgVFggY2FjaGUgYWZ0ZXIgdGhlIGNhY2hlIGZsdXNoLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikuIFRoZSBmaXggc2V0cyBgTUVTSF9QQVRIX0RFTEVURURgIHVuZGVyIGxvY2sgaW4gYF9fbWVzaF9wYXRoX2RlbCgpYCBhbmQgY2hlY2tzIGZvciB0aGlzIGZsYWcgYmVmb3JlIGluc2VydGluZyBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGluIGBtZXNoX2Zhc3RfdHhfY2FjaGUoKWAuIFxuXG5UaGlzIGNoYW5nZSBhZGRyZXNzZXMgb2JqZWN0IGxpZmV0aW1lIGFuZCBjb25jdXJyZW5jeSAoVUFGKSBpc3N1ZXMgd2hpY2ggYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4uIEl0IGRvZXMgbm90IGludHJvZHVjZSwgcmVhZCwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBub3IgZG9lcyBpdCBhZmZlY3QgdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHN0cnVjdCBwYWRkaW5nLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc3luY2hyb25pemF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWVzaCBwYXRocyBpbiBtYWM4MDIxMSwgc2V0dGluZyB0aGUgTUVTSF9QQVRIX0RFTEVURUQgZmxhZyBpbiBfX21lc2hfcGF0aF9kZWwoKSBhbmQgY2hlY2tpbmcgZm9yIGl0IHVuZGVyIGxvY2sgaW4gbWVzaF9mYXN0X3R4X2NhY2hlKCkgdG8gcHJldmVudCBjYWNoaW5nIGRlbGV0ZWQgcGF0aHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG1lc2ggaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU4YTdmMmNkZmE0ZDk0YzgxZmQxMmJjNTk3NGU5YTA3NzFjYmVlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA3OjQwOjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1xuaW5kZXggMDMxNzFjZjAwODU1Ny4uZGZjYzRmM2E3MDg4ZSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG5AQCAtNTc3LDYgJiM0Mzs1NzcsMTIgQEAgdm9pZCBtZXNoX2Zhc3RfdHhfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdGdvdG8gdW5sb2NrX3N0YTtcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZjYWNoZS1cdTAwM2V3YWxrX2xvY2spO1xuJiM0MztcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4mIzQzO1x0ICAgIChtcHBhdGggXHUwMDI2XHUwMDI2IChSRUFEX09OQ0UobXBwYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpKSkge1xuJiM0MztcdFx0a2ZyZWUoZW50cnkpO1xuJiM0MztcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHByZXYgPSByaGFzaHRhYmxlX2xvb2t1cF9nZXRfaW5zZXJ0X2Zhc3QoXHUwMDI2Y2FjaGUtXHUwMDNlcmh0LFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZlbnRyeS1cdTAwM2VyaGFzaCxcbiBcdFx0XHRcdFx0XHQgZmFzdF90eF9yaHRfcGFyYW1zKTtcbkBAIC04MTIsNiAmIzQzOzgxOCw5IEBAIHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcbiB7XG4gXHRobGlzdF9kZWxfcmN1KFx1MDAyNm1wYXRoLVx1MDAzZXdhbGtfbGlzdCk7XG4gXHRyaGFzaHRhYmxlX3JlbW92ZV9mYXN0KFx1MDAyNnRibC1cdTAwM2VyaGVhZCwgXHUwMDI2bXBhdGgtXHUwMDNlcmhhc2gsIG1lc2hfcmh0X3BhcmFtcyk7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdG1wYXRoLVx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9ERUxFVEVEO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0aWYgKHRibCA9PSBcdTAwMjZtcGF0aC1cdTAwM2VzZGF0YS1cdTAwM2V1Lm1lc2gubXBwX3BhdGhzKVxuIFx0XHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cdTAwM2VzZGF0YSwgbXBhdGgtXHUwMDNlZHN0KTtcbiBcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9NRVNIJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWVzaF9mYXN0X3R4X2NhY2hlJiMzNDssCiAgICAmIzM0O21lc2hfcGF0aF9kZWwmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3AmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX3RibF9leHBpcmUmIzM0OywKICAgICYjMzQ7bWVzaF9uZXh0aG9wX2xvb2t1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzeW5jaHJvbml6YXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtZXNoIHBhdGhzIGluIG1hYzgwMjExLCBzZXR0aW5nIHRoZSBNRVNIX1BBVEhfREVMRVRFRCBmbGFnIGluIF9fbWVzaF9wYXRoX2RlbCgpIGFuZCBjaGVja2luZyBmb3IgaXQgdW5kZXIgbG9jayBpbiBtZXNoX2Zhc3RfdHhfY2FjaGUoKSB0byBwcmV2ZW50IGNhY2hpbmcgZGVsZXRlZCBwYXRocy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgbWVzaCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNThhN2YyY2RmYTRkOTRjODFmZDEyYmM1OTc0ZTlhMDc3MWNiZWVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMDc6NDA6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMKaW5kZXggMDMxNzFjZjAwODU1Ny4uZGZjYzRmM2E3MDg4ZSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYwpAQCAtNTc3LDYgJiM0Mzs1NzcsMTIgQEAgdm9pZCBtZXNoX2Zhc3RfdHhfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCWdvdG8gdW5sb2NrX3N0YTsKIAogCXNwaW5fbG9jaygmYW1wO2NhY2hlLSZndDt3YWxrX2xvY2spOwomIzQzOwlpZiAoKFJFQURfT05DRShtcGF0aC0mZ3Q7ZmxhZ3MpICZhbXA7IE1FU0hfUEFUSF9ERUxFVEVEKSB8fAomIzQzOwkgICAgKG1wcGF0aCAmYW1wOyZhbXA7IChSRUFEX09OQ0UobXBwYXRoLSZndDtmbGFncykgJmFtcDsgTUVTSF9QQVRIX0RFTEVURUQpKSkgewomIzQzOwkJa2ZyZWUoZW50cnkpOwomIzQzOwkJZ290byB1bmxvY2tfY2FjaGU7CiYjNDM7CX0KJiM0MzsKIAlwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KCZhbXA7Y2FjaGUtJmd0O3JodCwKIAkJCQkJCSAmYW1wO2VudHJ5LSZndDtyaGFzaCwKIAkJCQkJCSBmYXN0X3R4X3JodF9wYXJhbXMpOwpAQCAtODEyLDYgJiM0Mzs4MTgsOSBAQCBzdGF0aWMgdm9pZCBfX21lc2hfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpCiB7CiAJaGxpc3RfZGVsX3JjdSgmYW1wO21wYXRoLSZndDt3YWxrX2xpc3QpOwogCXJoYXNodGFibGVfcmVtb3ZlX2Zhc3QoJmFtcDt0YmwtJmd0O3JoZWFkLCAmYW1wO21wYXRoLSZndDtyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7bXBhdGgtJmd0O3N0YXRlX2xvY2spOwomIzQzOwltcGF0aC0mZ3Q7ZmxhZ3MgfD0gTUVTSF9QQVRIX0RFTEVURUQ7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bXBhdGgtJmd0O3N0YXRlX2xvY2spOwogCWlmICh0YmwgPT0gJmFtcDttcGF0aC0mZ3Q7c2RhdGEtJmd0O3UubWVzaC5tcHBfcGF0aHMpCiAJCW1lc2hfZmFzdF90eF9mbHVzaF9hZGRyKG1wYXRoLSZndDtzZGF0YSwgbXBhdGgtJmd0O2RzdCk7CiAJZWxzZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTQ4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBtYWM4MDIxMSBNZXNoIFBhdGggVGFibGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiBiZWNhdXNlIG9mIGl0cyBwb3RlbnRpYWwgbmV0d29yayBpbnRlcmFjdGlvbnMuCgpTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhlcmUmIzM5O3MgYSBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgbWVzaF9mYXN0X3R4X2NhY2hlYCBmdW5jdGlvbi4gVGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayBmb3IgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFncyBvbiBlaXRoZXIgYG1wYXRoYCBvciBgbXBwYXRoYCBiZWZvcmUgZG9pbmcgYW4gaW5zZXJ0aW9uL2xvb2t1cCBpbiB0aGUgcmhhc2h0YWJsZS4gQWRkaXRpb25hbGx5LCBpbiBgX19tZXNoX3BhdGhfZGVsYCwgaXQmIzM5O3Mgc2V0dGluZyB0aGUgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFnIHVuZGVyIGEgbG9jay4gVGhpcyBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gYmVpbmcgYWRkcmVzc2VkIG9yIGEgY2hhbmdlIGluIGhvdyBlbnRyaWVzIGFyZSBiZWluZyBtYW5hZ2VkIGluIHRoZSBtZXNoIHBhdGggdGFibGUuIExvb2tzIGxpa2UgdGhleSBhZGRlZCB0aGUgYHNwaW5fbG9ja19iaGAgYW5kIGBzcGluX3VubG9ja19iaGAgYXJvdW5kIHRoZSBmbGFnIHNldHRpbmcuCgpOb3csIGZvciBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGxldCYjMzk7cyBjb25zaWRlciB0aGUgYnJvYWRlciBjb250ZXh0LiBgbmV0L21hYzgwMjExYCBpcyB0aGUgTGludXggd2lyZWxlc3MgODAyLjExIHN1YnN5c3RlbS4gQW5kLCBpbXBvcnRhbnRseSwgd2UgY2FuIGVtdWxhdGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nICg4MDIuMTFzKSBpbiBRRU1VIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHN5emthbGxlciBoYXMgcHJldHR5IGdvb2Qgc3VwcG9ydCBmb3IuIFRoYXQmIzM5O3MgYSBodWdlIGdyZWVuIGxpZ2h0IQoKVG8gZmlybSB1cCBteSBhc3Nlc3NtZW50LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIHRvIHNlZSBpZiBtZXNoIHN1cHBvcnQgaXMgZW5hYmxlZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZS4gQSBxdWljayBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgd2lsbCBsZXQgbWUgcXVpY2tseSBwdWxsIHVwIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgYW5kIGBuZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIGFuZCByZWxldmFudCBjb25maWd1cmF0aW9ucy4gVGhpcyB3aWxsIGd1aWRlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSYjMzk7cyBiZWhhdmlvciBhbmQgZGV0ZXJtaW5lIGlmIHRoZSBmdXp6aW5nIGVmZm9ydCB3aWxsIGJlIHdvcnRod2hpbGUuIE15IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIGFueSBuZXcsIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIHN0YXRlcywgZXNwZWNpYWxseSBnaXZlbiB0aGUgaW5jcmVhc2VkIHVzZSBvZiBsb2NrcyBhbmQgZmxhZ3MsIHdoaWNoIGFyZSBwcmltZSB0YXJnZXRzIGZvciByYWNlIGNvbmRpdGlvbiB2dWxuZXJhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU2NTpcdFx0YnVpbGQuaGRybGVuICYjNDM7PSBzaXplb2YocmZjMTA0Ml9oZWFkZXIpO1xuIDU2NjpcdFx0bWVtY3B5KGJ1aWxkLmZhc3RfdHguaGRyLCBoZHIsIGJ1aWxkLmZhc3RfdHguaGRyX2xlbik7XG4gNTY3Olx0XG4gNTY4Olx0XHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilidWlsZC5mYXN0X3R4LmhkcjtcbiA1Njk6XHRcdGlmIChidWlsZC5mYXN0X3R4LmtleSlcbiA1NzA6XHRcdFx0aGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wgfD0gY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTtcbiA1NzE6XHRcbiA1NzI6XHRcdHFjID0gaWVlZTgwMjExX2dldF9xb3NfY3RsKGhkcik7XG4gNTczOlx0XHRxY1sxXSB8PSBJRUVFODAyMTFfUU9TX0NUTF9NRVNIX0NPTlRST0xfUFJFU0VOVCBcdTAwM2VcdTAwM2UgODtcbiA1NzQ6XHRcbiA1NzU6XHRcdGVudHJ5ID0ga21lbWR1cChcdTAwMjZidWlsZCwgc2l6ZW9mKGJ1aWxkKSwgR0ZQX0FUT01JQyk7XG4gNTc2Olx0XHRpZiAoIWVudHJ5KVxuIDU3NzpcdFx0XHRnb3RvIHVubG9ja19zdGE7XG4gNTc4Olx0XG4gNTc5Olx0XHRzcGluX2xvY2soXHUwMDI2Y2FjaGUtXHUwMDNld2Fsa19sb2NrKTtcbiA1ODA6XHRcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4gNTgxOlx0XHQgICAgKG1wcGF0aCBcdTAwMjZcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XG4gNTgyOlx0XHRcdGtmcmVlKGVudHJ5KTtcbiA1ODM6XHRcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4gNTg0Olx0XHR9XG4gNTg1Olx0XG4gNTg2Olx0XHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFx1MDAyNmNhY2hlLVx1MDAzZXJodCxcbiA1ODc6XHRcdFx0XHRcdFx0XHQgXHUwMDI2ZW50cnktXHUwMDNlcmhhc2gsXG4gNTg4Olx0XHRcdFx0XHRcdFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XG4gNTg5Olx0XHRpZiAoSVNfRVJSKHByZXYpKSB7XG4gNTkwOlx0XHRcdGtmcmVlKGVudHJ5KTtcbiA1OTE6XHRcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4gNTkyOlx0XHR9XG4gNTkzOlx0XG4gNTk0Olx0XHQvKlxuIDU5NTpcdFx0ICogcmVwbGFjZSBhbnkgcHJldmlvdXMgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUsIGluIGNhc2Ugd2UmIzM5O3JlXG4gNTk2Olx0XHQgKiByZXBsYWNpbmcgaXQgd2l0aCBhIGRpZmZlcmVudCB0eXBlIChlLmcuIG1wYXRoIC1cdTAwM2UgbXBwKVxuIDU5NzpcdFx0ICovXG4gNTk4Olx0XHRpZiAodW5saWtlbHkocHJldikpIHtcbiA1OTk6XHRcdFx0cmhhc2h0YWJsZV9yZXBsYWNlX2Zhc3QoXHUwMDI2Y2FjaGUtXHUwMDNlcmh0LCBcdTAwMjZwcmV2LVx1MDAzZXJoYXNoLFxuIDYwMDpcdFx0XHRcdFx0XHRcdTAwMjZlbnRyeS1cdTAwM2VyaGFzaCwgZmFzdF90eF9yaHRfcGFyYW1zKTtcbiA2MDE6XHRcdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZwcmV2LVx1MDAzZXdhbGtfbGlzdCk7XG4gNjAyOlx0XHRcdGtmcmVlX3JjdShwcmV2LCBmYXN0X3R4LnJjdV9oZWFkKTtcbiA2MDM6XHRcdH1cbiA2MDQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODcwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBNZXNoIFBhdGggVGFibGUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRoIGRlbGV0aW9uIHByb2Nlc3MuIExldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBNeSBpbnN0aW5jdHMgYXJlIHRlbGxpbmcgbWUgdG8gbG9vayBhdCBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYF9fbWVzaF9wYXRoX2RlbGAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgaG93IHBhdGhzIGFyZSByZW1vdmVkIGZyb20gdGhlIG1lc2ggcGF0aCB0YWJsZSwgc28gaXQgc2hvdWxkIGJlIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGdyYXNwIHRoZSBrZXkgbG9naWMgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gcGF0aCBtYW5hZ2VtZW50IGhlcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDU6XHRcbiA4MDY6XHRcdHNwaW5fbG9ja19iaChcdTAwMjZtcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA4MDc6XHRcdG1wYXRoLVx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9SRVNPTFZJTkcgfCBNRVNIX1BBVEhfREVMRVRFRDtcbiA4MDg6XHRcdG1lc2hfZ2F0ZV9kZWwodGJsLCBtcGF0aCk7XG4gODA5Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZtcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA4MTA6XHRcdHRpbWVyX3NodXRkb3duX3N5bmMoXHUwMDI2bXBhdGgtXHUwMDNldGltZXIpO1xuIDgxMTpcdFx0YXRvbWljX2RlYyhcdTAwMjZzZGF0YS1cdTAwM2V1Lm1lc2gubXBhdGhzKTtcbiA4MTI6XHRcdGF0b21pY19kZWMoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpO1xuIDgxMzpcdFx0bWVzaF9wYXRoX2ZsdXNoX3BlbmRpbmcobXBhdGgpO1xuIDgxNDpcdFx0a2ZyZWVfcmN1KG1wYXRoLCByY3UpO1xuIDgxNTpcdH1cbiA4MTY6XHRcbiA4MTc6XHRzdGF0aWMgdm9pZCBfX21lc2hfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpXG4gODE4Olx0e1xuIDgxOTpcdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZtcGF0aC1cdTAwM2V3YWxrX2xpc3QpO1xuIDgyMDpcdFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcdTAwMjZ0YmwtXHUwMDNlcmhlYWQsIFx1MDAyNm1wYXRoLVx1MDAzZXJoYXNoLCBtZXNoX3JodF9wYXJhbXMpO1xuIDgyMTpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuIDgyMjpcdFx0bXBhdGgtXHUwMDNlZmxhZ3MgfD0gTUVTSF9QQVRIX0RFTEVURUQ7XG4gODIzOlx0XHRzcGluX3VubG9ja19iaChcdTAwMjZtcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA4MjQ6XHRcdGlmICh0YmwgPT0gXHUwMDI2bXBhdGgtXHUwMDNlc2RhdGEtXHUwMDNldS5tZXNoLm1wcF9wYXRocylcbiA4MjU6XHRcdFx0bWVzaF9mYXN0X3R4X2ZsdXNoX2FkZHIobXBhdGgtXHUwMDNlc2RhdGEsIG1wYXRoLVx1MDAzZWRzdCk7XG4gODI2Olx0XHRlbHNlXG4gODI3Olx0XHRcdG1lc2hfZmFzdF90eF9mbHVzaF9tcGF0aChtcGF0aCk7XG4gODI4Olx0XHRtZXNoX3BhdGhfZnJlZV9yY3UodGJsLCBtcGF0aCk7XG4gODI5Olx0fVxuIDgzMDpcdFxuIDgzMTpcdC8qKlxuIDgzMjpcdCAqIG1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wIC0gRGVsZXRlcyBtZXNoIHBhdGhzIGlmIHRoZWlyIG5leHQgaG9wIG1hdGNoZXNcbiA4MzM6XHQgKlxuIDgzNDpcdCAqIEBzdGE6IG1lc2ggcGVlciB0byBtYXRjaFxuIDgzNTpcdCAqXG4gODM2Olx0ICogUkNVIG5vdGVzOiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgbWVzaCBwbGluayB0cmFuc2l0aW9ucyBmcm9tXG4gODM3Olx0ICogUExJTktfRVNUQUIgdG8gYW55IG90aGVyIHN0YXRlLCBzaW5jZSBQTElOS19FU1RBQiBzdGF0ZSBpcyB0aGUgb25seSBvbmUgdGhhdFxuIDgzODpcdCAqIGFsbG93cyBwYXRoIGNyZWF0aW9uLiBUaGlzIHdpbGwgaGFwcGVuIGJlZm9yZSB0aGUgc3RhIGNhbiBiZSBmcmVlZCAoYmVjYXVzZVxuIDgzOTpcdCAqIHN0YV9pbmZvX2Rlc3Ryb3koKSBjYWxscyB0aGlzKSBzbyBhbnkgcmVhZGVyIGluIGEgcmN1IHJlYWQgYmxvY2sgd2lsbCBiZVxuIDg0MDpcdCAqIHByb3RlY3RlZCBhZ2FpbnN0IHRoZSBwbGluayBkaXNhcHBlYXJpbmcuXG4gODQxOlx0ICovXG4gODQyOlx0dm9pZCBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbiA4NDM6XHR7XG4gODQ0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODMyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSBmb3IgbWVzaF9wYXRodGJsLmMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgYG1lc2hfcGF0aHRibC5jYCBpcyBiZWluZyBjb21waWxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkcml2aW5nIHRoYXQgcHJvY2Vzcy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdGFjaywgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgY2VudHJhbCBidWlsZCBjb25maWd1cmF0aW9uIGZpbGVzIHdpdGhpbiB0aGF0IGFyZWEuIFRoZXJlZm9yZSwgSSB3aWxsIGltbWVkaWF0ZWx5IGhlYWQgb3ZlciB0byBgbmV0L21hYzgwMjExL0tjb25maWdgIHRvIHN0YXJ0IHdpdGgsIGFzIHRoYXQmIzM5O3Mgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBmdW5jdGlvbmFsaXR5LiBBZnRlciB0aGF0LCBJIHdpbGwgYWxzbyBleGFtaW5lIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIHNlZSBob3cgdGhvc2Ugb3B0aW9ucyB0cmFuc2xhdGUgaW50byBidWlsZCBjb21tYW5kcyBhbmQgb2JqZWN0IGZpbGUgaW5jbHVzaW9uLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHJlcXVpcmVkIGluIHRoZSBicm9hZGVyIHN5c3RlbSB0byBlbmFibGUgdGhlIGNvbXBpbGF0aW9uIG9mIGBtZXNoX3BhdGh0YmwuY2AuIEZyb20gdGhlcmUgSSB3aWxsIGludmVzdGlnYXRlIHJlbGV2YW50IGtlcm5lbCBzeW1ib2xzIHRvIGVzdGFibGlzaCB0aGUgcmVxdWlyZW1lbnRzIGZvciB0aGUgbWVzaCBwYXRoIHRhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lc2hfcGF0aHRibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvTWFrZWZpbGU9NDc9bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTUVTSCkgJiM0Mzs9IFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNDgtXHRtZXNoLm8gXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZTo0OTpcdG1lc2hfcGF0aHRibC5vIFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNTAtXHRtZXNoX3BsaW5rLm8gXFxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE3NTc9dm9pZCBpZWVlODAyMTFfbWVzaF9pbml0X3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc3NS1cbm5ldC9tYWM4MDIxMS9tZXNoLmM6MTc3NjpcdG1lc2hfcGF0aHRibF9pbml0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc3Ny1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE3OTA9dm9pZCBpZWVlODAyMTFfbWVzaF90ZWFyZG93bl9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE3OTItXHRtZXNoX3JtY19mcmVlKHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmM6MTc5MzpcdG1lc2hfcGF0aHRibF91bnJlZ2lzdGVyKHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc5NC19XG4tLVxubmV0L21hYzgwMjExL21lc2guaD0zNTQ9dm9pZCBtZXNoX3BhdGhfdHhfcGVuZGluZyhzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aCk7XG5uZXQvbWFjODAyMTEvbWVzaC5oOjM1NTp2b2lkIG1lc2hfcGF0aHRibF9pbml0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmg6MzU2OnZvaWQgbWVzaF9wYXRodGJsX3VucmVnaXN0ZXIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xubmV0L21hYzgwMjExL21lc2guaC0zNTctaW50IG1lc2hfcGF0aF9kZWwoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGNvbnN0IHU4ICphZGRyKTtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9MTA1Nj12b2lkIG1lc2hfcGF0aF9maXhfbmV4dGhvcChzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aCwgc3RydWN0IHN0YV9pbmZvICpuZXh0X2hvcClcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTA3My1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzoxMDc0OnZvaWQgbWVzaF9wYXRodGJsX2luaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTA3NS17XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwOTg9dm9pZCBtZXNoX3BhdGhfZXhwaXJlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMTAzLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjExMDQ6dm9pZCBtZXNoX3BhdGh0YmxfdW5yZWdpc3RlcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMTA1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTkwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNQUM4MDIxMSBNZXNoIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciA4MDIuMTEgbWVzaCBuZXR3b3JraW5nIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgbmV0L21hYzgwMjExL0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgYWxtb3N0IGFsd2F5cyBsb2NhdGVkIHdpdGhpbiB0aGUgcmVsZXZhbnQgc3Vic3lzdGVtJiMzOTtzIGRpcmVjdG9yeS4gSSYjMzk7bSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYE1BQzgwMjExX01FU0hgLCBzbyBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBgY29uZmlnYCBvcHRpb24gaW4gdGhlcmUuIEl0IHNob3VsZCBiZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBlaXRoZXIgZGlyZWN0bHkgZGVmaW5lZCBvciBwZXJoYXBzIGluY2x1ZGVkIGZyb20gYW5vdGhlciBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkIHdpdGggZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IHNldHRpbmdzLCB3aGljaCB3b3VsZCBtYWtlIG15IGxpZmUgZWFzaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNQUM4MDIxMV9NRVNIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnPTYwPWNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIwOT1jb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjExLVx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTI6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMy1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0yMjI9Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjI0LVx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjU6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyNi1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0yMzU9Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM3LVx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzg6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzOS1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWctMjUwLVx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTE6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1Mi1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MS1cdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjYyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjMtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzItXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MzpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjc0LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9NYWtlZmlsZT00MT1tYWM4MDIxMS0kKENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTKSAmIzQzOz0gXFxcbi0tXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNDYtXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6NDc6bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTUVTSCkgJiM0Mzs9IFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNDgtXHRtZXNoLm8gXFxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NjEzPXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNzEwLVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOlxubmV0L21hYzgwMjExL2NmZy5jOjcxMTojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9jZmcuYy03MTItXHRcdGlmIChzZGF0YS1cdTAwM2V1Lm1lc2guc2VjdXJpdHkgIT0gSUVFRTgwMjExX01FU0hfU0VDX05PTkUpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTIxOTA9c3RhdGljIHZvaWQgc3RhX2FwcGx5X21lc2hfcGFyYW1zKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTkzLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTk0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2NmZy5jLTIxOTUtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mjc4Nz1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yODkzLVxubmV0L21hYzgwMjExL2NmZy5jOjI4OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjg5NS1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfbXBhdGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDQyOD1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfYWZ0ZXJfY3NhX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00NDUxLVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NDUyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2NmZy5jLTQ0NTMtXHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ1NjM9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2NzYV9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDY1NC1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDY1NTojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9jZmcuYy00NjU2LVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOiB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU5NzY9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01OTk2LVx0LmR1bXBfc3VydmV5ID0gaWVlZTgwMjExX2R1bXBfc3VydmV5LFxubmV0L21hYzgwMjExL2NmZy5jOjU5OTc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk5OC1cdC5hZGRfbXBhdGggPSBpZWVlODAyMTFfYWRkX21wYXRoLFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTUyLVxubmV0L21hYzgwMjExL2RlYnVnLmg6NTM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjU0OiNkZWZpbmUgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHIDFcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU1LSNlbHNlXG5uZXQvbWFjODAyMTEvZGVidWcuaDo1NjojZGVmaW5lIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVRyAwXG5uZXQvbWFjODAyMTEvZGVidWcuaC01Ny0jZW5kaWZcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU4LVxubmV0L21hYzgwMjExL2RlYnVnLmg6NTk6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL2RlYnVnLmg6NjA6I2RlZmluZSBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVRyAxXG5uZXQvbWFjODAyMTEvZGVidWcuaC02MS0jZWxzZVxubmV0L21hYzgwMjExL2RlYnVnLmg6NjI6I2RlZmluZSBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVRyAwXG5uZXQvbWFjODAyMTEvZGVidWcuaC02My0jZW5kaWZcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTY0LVxubmV0L21hYzgwMjExL2RlYnVnLmg6NjU6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvZGVidWcuaDo2NjojZGVmaW5lIE1BQzgwMjExX01FU0hfUFNfREVCVUcgMVxubmV0L21hYzgwMjExL2RlYnVnLmgtNjctI2Vsc2Vcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjY4OiNkZWZpbmUgTUFDODAyMTFfTUVTSF9QU19ERUJVRyAwXG5uZXQvbWFjODAyMTEvZGVidWcuaC02OS0jZW5kaWZcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaD0xMjU9ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMjE4LSNkZWZpbmUgbXN5bmNfZGJnKHNkYXRhLCBmbXQsIC4uLilcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjIxOTpcdF9zZGF0YV9kYmcoTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHLFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTIyMC1cdFx0ICAgc2RhdGEsIGZtdCwgIyNfX1ZBX0FSR1NfXylcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMjItI2RlZmluZSBtY3NhX2RiZyhzZGF0YSwgZm10LCAuLi4pXHRcdFx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoyMjM6XHRfc2RhdGFfZGJnKE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHLFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTIyNC1cdFx0ICAgc2RhdGEsIGZtdCwgIyNfX1ZBX0FSR1NfXylcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMjYtI2RlZmluZSBtcHNfZGJnKHNkYXRhLCBmbXQsIC4uLilcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjIyNzpcdF9zZGF0YV9kYmcoTUFDODAyMTFfTUVTSF9QU19ERUJVRyxcdFx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMjgtXHRcdCAgIHNkYXRhLCBmbXQsICMjX19WQV9BUkdTX18pXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9NzM2PUlFRUU4MDIxMV9JRl9MSU5LX0ZJTEUoYWRkciwgY29uZi1cdTAwM2VhZGRyLCBNQUMpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtNzM3LVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6NzM4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtNzM5LUlFRUU4MDIxMV9JRl9GSUxFKGVzdGFiX3BsaW5rcywgdS5tZXNoLmVzdGFiX3BsaW5rcywgQVRPTUlDKTtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz04Njg9c3RhdGljIHZvaWQgYWRkX2lic3NfZmlsZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtODcyLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6ODczOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtODc0LVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTkzNz1zdGF0aWMgdm9pZCBhZGRfZmlsZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTQ5LVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOlxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6OTUwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTUxLVx0XHRhZGRfbWVzaF9maWxlcyhzZGF0YSk7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9Nzc5PXN0cnVjdCBpZWVlODAyMTFfaWZfbWVzaCB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtODU5LVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6ODYwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtODYxLSNkZWZpbmUgSUVFRTgwMjExX0lGU1RBX01FU0hfQ1RSX0lOQyhtc2gsIG5hbWUpXHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmM9MTEzNz1pbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM5Mi1cbm5ldC9tYWM4MDIxMS9tYWluLmM6MTM5MzojaWZuZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvbWFpbi5jLTEzOTQtXHQvKiBtZXNoIGRlcGVuZHMgb24gS2NvbmZpZywgYnV0IGRyaXZlcnMgc2hvdWxkIHNldCBpdCBpZiB0aGV5IHdhbnQgKi9cbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM3OD12b2lkIG1lc2hfcGF0aF9yZWZyZXNoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzgwLVxubmV0L21hYzgwMjExL21lc2guaDozODE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM4Mi1zdGF0aWMgaW5saW5lXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYz04MTA9aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04MzktXHRcdFx0bmVlZF9vZmZjaGFuID0gdHJ1ZTtcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6ODQwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04NDEtXHRcdGZhbGx0aHJvdWdoO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTI3OTI9aWVlZTgwMjExX2RlbGl2ZXJfc2tiKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjg5MS1cbm5ldC9tYWM4MDIxMS9yeC5jOjI4OTI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvcnguYy0yODkzLXN0YXRpYyBib29sXG4tLVxubmV0L21hYzgwMjExL3J4LmM9Mjk1OT1pZWVlODAyMTFfcnhfbWVzaF9kYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yOTYxLXtcbm5ldC9tYWM4MDIxMS9yeC5jOjI5NjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvcnguYy0yOTYzLVx0c3RydWN0IGllZWU4MDIxMV9pZl9tZXNoICppZm1zaCA9IFx1MDAyNnNkYXRhLVx1MDAzZXUubWVzaDtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz00Njg9dm9pZCBzdGFfaW5mb19mcmVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy01MDYtXHRrZnJlZShyY3VfZGVyZWZlcmVuY2VfcmF3KHN0YS1cdTAwM2VzdGEucmF0ZXMpKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjUwNzojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTUwOC1cdGtmcmVlKHN0YS1cdTAwM2VtZXNoKTtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MzM9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy02NjctXHR3aXBoeV93b3JrX2luaXQoXHUwMDI2c3RhLVx1MDAzZWFtcGR1X21sbWUud29yaywgaWVlZTgwMjExX2JhX3Nlc3Npb25fd29yayk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo2Njg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy02NjktXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tZXNoKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03OTUtXHRzdGFfaW5mb19mcmVlX2xpbmsoXHUwMDI2c3RhLVx1MDAzZWRlZmxpbmspO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Nzk2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNzk3LVx0a2ZyZWUoc3RhLVx1MDAzZW1lc2gpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTExMDc9c3RhdGljIHZvaWQgX19zdGFfaW5mb19yZWNhbGNfdGltKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBib29sIGlnbm9yZV9wZW5kaW5nKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTExMjEtXHRcdHBzID0gXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZWJzcy1cdTAwM2Vwcztcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjExMjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMTIzLVx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21lc2goXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikpIHtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0yNzQzPXN0YXRpYyBpbmxpbmUgdTY0IHN0YV9nZXRfc3RhdHNfYnl0ZXMoc3RydWN0IGllZWU4MDIxMV9zdGFfcnhfc3RhdHMgKnJ4c3RhdHMpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMjc1NS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjI3NTY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0yNzU3LXN0YXRpYyB2b2lkIHN0YV9zZXRfbWVzaF9zaW5mbyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zMDc5PXZvaWQgc3RhX3NldF9zaW5mbyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgc3RydWN0IHN0YXRpb25faW5mbyAqc2luZm8sXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzI2NC1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjMyNjU6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMjY2LVx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWVzaChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTcxNT1zdHJ1Y3Qgc3RhX2luZm8ge1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTczMi1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjczMzojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTczNC1cdHN0cnVjdCBtZXNoX3N0YSAqbWVzaDtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD04MDA9c3RhdGljIGlubGluZSBlbnVtIG5sODAyMTFfcGxpbmtfc3RhdGUgc3RhX3BsaW5rX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODAxLXtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjgwMjojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTgwMy1cdHJldHVybiBzdGEtXHUwMDNlbWVzaC1cdTAwM2VwbGlua19zdGF0ZTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0yNTQ5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjU3My1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvdHguYzoyNTc0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL3R4LmMtMjU3NS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVDpcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0yNjc2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNzc0LVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS90eC5jOjI3NzU6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvdHguYy0yNzc2LVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOlxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTMwMTktXG5uZXQvbWFjODAyMTEvdHguYzozMDIwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL3R4LmMtMzAyMS1cdGlmIChtZXNoaGRybGVuIFx1MDAzZSAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY0NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBNZXNoIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IEtjb25maWcsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBob3cgdGhlIGBNQUM4MDIxMV9NRVNIYCBhbmQgYE1BQzgwMjExYCBvcHRpb25zIGFyZSBzdHJ1Y3R1cmVkLiBNeSBnb2FsLCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXNlIGZlYXR1cmVzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB3aGF0IGtpbmQgb2Ygc3VwcG9ydCB1c2VycyB3aWxsIGJlIGFibGUgdG8gZW5hYmxlIG9yIGRpc2FibGUgcmVsYXRlZCB0byBtZXNoIG5ldHdvcmtpbmcuIEFyZSB0aGUgbWVzaCBvcHRpb25zIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBNQUM4MDIxMSBjb3JlIGZ1bmN0aW9uYWxpdGllcz8gQXJlIHRoZXJlIGFueSBoaWRkZW4gaW1wbGljYXRpb25zIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHdpcmVsZXNzIGZlYXR1cmVzPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29uZGl0aW9uYWxzIGNhcmVmdWxseSB0byBmdWxseSBncmFzcCB0aGUgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxvZ2ljYWwgYW5kIHN1cHBvcnQgdGhlIGRlc2lyZWQgdXNlIGNhc2VzIGZvciBvdXIgbWVzaCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIGEgY2xlYW4gYW5kIGVmZmljaWVudCBrZXJuZWwgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1BQzgwMjExXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0c2VsZWN0IENSWVBUT1xuICAgNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXG4gICA3Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XG4gICA4Olx0XHRzZWxlY3QgQ1JZUFRPX0FFU1xuICAgOTpcdFx0c2VsZWN0IENSWVBUT19DQ01cbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcbiAgMTQ6XHRcdCAgbmV0d29ya2luZyBzdGFjay5cbiAgMTU6XHRcbiAgMTY6XHRjb21tZW50IFwmIzM0O0NGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXCYjMzQ7XG4gIDE3Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExPW5cbiAgMTg6XHRcbiAgMTk6XHRpZiBNQUM4MDIxMSAhPSBuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xuICAyMjpcdFx0Ym9vbFxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxuICAyNTpcdFx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbiAgMjY6XHRcdHNlbGVjdCBNQUM4MDIxMV9IQVNfUkNcbiAgMjc6XHRcdGRlZmF1bHQgeVxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSAmIzM5O21pbnN0cmVsJiMzOTsgVFggcmF0ZSBjb250cm9sIGFsZ29yaXRobVxuICAzMDpcdFxuICAzMTpcdGNob2ljZVxuICAzMjpcdFx0cHJvbXB0IFwmIzM0O0RlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuICAzMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9IQVNfUkNcbiAgMzQ6XHRcdGRlZmF1bHQgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBUaGlzIG9wdGlvbiBzZWxlY3RzIHRoZSBkZWZhdWx0IHJhdGUgY29udHJvbCBhbGdvcml0aG1cbiAgMzc6XHRcdCAgbWFjODAyMTEgd2lsbCB1c2UuIE5vdGUgdGhhdCB0aGlzIGRlZmF1bHQgY2FuIHN0aWxsIGJlXG4gIDM4Olx0XHQgIG92ZXJyaWRkZW4gdGhyb3VnaCB0aGUgaWVlZTgwMjExX2RlZmF1bHRfcmNfYWxnbyBtb2R1bGVcbiAgMzk6XHRcdCAgcGFyYW1ldGVyIGlmIGRpZmZlcmVudCBhbGdvcml0aG1zIGFyZSBhdmFpbGFibGUuXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbiAgNDI6XHRcdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbiAgNDM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFfUkNfTUlOU1RSRUxcbiAgNDQ6XHRcdGhlbHBcbiAgNDU6XHRcdCAgU2VsZWN0IE1pbnN0cmVsIGFzIHRoZSBkZWZhdWx0IHJhdGUgY29udHJvbCBhbGdvcml0aG0uXG4gIDQ2Olx0XG4gIDQ3Olx0XG4gIDQ4Olx0ZW5kY2hvaWNlXG4gIDQ5Olx0XG4gIDUwOlx0Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbiAgNTE6XHRcdHN0cmluZ1xuICA1MjpcdFx0ZGVmYXVsdCBcJiMzNDttaW5zdHJlbF9odFwmIzM0OyBpZiBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG4gIDUzOlx0XHRkZWZhdWx0IFwmIzM0O1wmIzM0O1xuICA1NDpcdFxuICA1NTpcdGVuZGlmXG4gIDU2Olx0XG4gIDU3Olx0Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbiAgNTg6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0hBU19SQz1uXG4gIDU5Olx0XG4gIDYwOlx0Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDYyOlx0XHRkZXBlbmRzIG9uIEtVTklUXG4gIDYzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDY0Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICA2NTpcdFx0aGVscFxuICA2NjpcdFx0ICBFbmFibGUgdGhpcyBvcHRpb24gdG8gdGVzdCBtYWM4MDIxMSBpbnRlcm5hbHMgd2l0aCBrdW5pdC5cbiAgNjc6XHRcbiAgNjg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjk6XHRcbiAgNzA6XHRjb25maWcgTUFDODAyMTFfTUVTSFxuICA3MTpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbiAgNzI6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNzM6XHRcdGhlbHBcbiAgNzQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGVuYWJsZSA4MDIuMTEgbWVzaCBvcGVyYXRpb24gaW4gbWFjODAyMTFcbiAgNzU6XHRcdCAgZHJpdmVycyB0aGF0IHN1cHBvcnQgaXQuICA4MDIuMTEgbWVzaCBjb25uZWN0cyBtdWx0aXBsZSBzdGF0aW9uc1xuICA3NjpcdFx0ICBvdmVyIChwb3NzaWJseSBtdWx0aS1ob3ApIHdpcmVsZXNzIGxpbmtzIHRvIGZvcm0gYSBzaW5nbGUgbG9naWNhbFxuICA3NzpcdFx0ICBMQU4uXG4gIDc4Olx0XG4gIDc5Olx0Y29uZmlnIE1BQzgwMjExX0xFRFNcbiAgODA6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDAwMgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIE1BQzgwMjExX0hXU0lNKioKClJpZ2h0LCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgYW5kIG1ha2Ugc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgd2l0aCBgTUFDODAyMTFfSFdTSU1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hhdGV2ZXIgaXMgaGFwcGVuaW5nIGluIHRoZSBjdXJyZW50IHNjZW5hcmlvIGRvZXNuJiMzOTt0IGJ5cGFzcyB0aGlzLiBDcnVjaWFsbHksIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgc3ltYm9sIGlzIGFjdHVhbGx5IGRlZmluZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGRlZmluaXRpb24gaXMgZ29pbmcgdG8gYmUgdGhlIGtleSB0byBpbnRlcnByZXRpbmcgaXRzIGltcGFjdC4gSeKAmWxsIG5lZWQgdG8gdHJhY2UgaXQgdG8gaXRzIG9yaWdpbiB0byBzZWUgd2hhdCBpdCBjb250cm9scyBhbmQgd2hldGhlciBpdCYjMzk7cyByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGlzc3VlLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgdHVybiB1cCB0aGUgc291cmNlIGZpbGUuIEZyb20gdGhlcmUsIEkgY2FuIGFuYWx5emUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9yIGluY2x1c2lvbiBsb2dpYyBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzA3CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWVzaCBQYXRoIFRhYmxlIEZpeCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGNvZGUgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGZhc3QgVFggY2FjaGUgYW5kIG1lc2ggcGF0aCBkZWxldGlvbiBtZWNoYW5pc21zIGluIHRoZSBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCBmaWxlLiBTcGVjaWZpY2FsbHk6CgoxLiAgSW4gYG1lc2hfZmFzdF90eF9jYWNoZWAsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgdG8gc2VlIGlmIGEgbWVzaCBwYXRoIGVudHJ5IHNob3VsZCBiZSBhZGRlZC4gVGhlIGNoZWNrIHZlcmlmaWVzIGlmIHRoZSBwYXRoIGlzIGRlbGV0ZWQgYnkgbG9va2luZyBhdCB0aGUgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFnIG9uIGBtcGF0aGAgb3IgYG1wcGF0aGAuIElmIGl0JiMzOTtzIHNldCwgdGhlIGluc2VydGlvbiBpcyBhYm9ydGVkLCBhbmQgdGhlIGVudHJ5IGlzIGZyZWVkLgoyLiAgYF9fbWVzaF9wYXRoX2RlbGAgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIGBNRVNIX1BBVEhfREVMRVRFRGAgZmxhZyBvbiB0aGUgYG1wYXRoYCB1bmRlciB0aGUgYG1wYXRoLSZndDtzdGF0ZV9sb2NrYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBzeW5jaHJvbml6YXRpb24gcHJhY3RpY2UuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgZnV6emFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBzeXprYWxsZXI/IEFic29sdXRlbHksIGl0IGlzISBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgYG1hYzgwMjExX2h3c2ltYCBhbmQgdGhlIGNmZzgwMjExL25sODAyMTEgaW50ZXJmYWNlcyBjYW4gYmUgbGV2ZXJhZ2VkIHRvIGNyZWF0ZSBtZXNoIHBvaW50cyAoYE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlRgKSwgZXN0YWJsaXNoIGxpbmtzLCBhZGQvZGVsZXRlIHBhdGhzIChgTkw4MDIxMV9DTURfTkVXX01QQVRIYCwgYE5MODAyMTFfQ01EX0RFTF9NUEFUSGAsIGBOTDgwMjExX0NNRF9TRVRfTVBBVEhgKSwgYW5kIHNlbmQgZnJhbWVzLiBTeXprYWxsZXImIzM5O3MgZXhpc3RpbmcgY292ZXJhZ2Ugb2YgYG1hYzgwMjExYCBhbmQgYG5sODAyMTFgIGlzIGFsc28gYSBodWdlIGFkdmFudGFnZS4KCkdpdmVuIHRoZSBtb2RpZmljYXRpb25zIHRvIHN5bmNocm9uaXphdGlvbiwgbGlmZXRpbWUgbWFuYWdlbWVudCwgYW5kIHN0YXRlIGhhbmRsaW5nIGluIHRoZSBwYXRoIHJvdXRpbmcgYW5kIGNhY2hpbmcsIHNwZWNpZmljYWxseSBpbXBhY3RpbmcgYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBoaWdoLXZhbHVlIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIHBhdGNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgYG1hYzgwMjExX2h3c2ltYCwgb3IgdmlydHVhbCBXaS1GaSBpbnRlcmZhY2VzLCBleHBhbmRpbmcgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBmb2N1cyBzeW1ib2xzLiBJIHNlZSB3ZSBoYXZlIHR3byBrZXkgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZDogYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLgoKSSYjMzk7bGwgbm93IGludmVzdGlnYXRlIHBvdGVudGlhbCBjYWxsZXIgZnVuY3Rpb25zIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMgd2l0aGluIHRoZSBzYW1lIGZpbGUsIGBuZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNgLiBJdCYjMzk7cyBjcnVjaWFsIHRvIG1hcCB0aGUgY2FsbCBncmFwaCB0byBpZGVudGlmeSBhbnkgY3JpdGljYWwgZW50cnkgcG9pbnRzIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lc2hfZmFzdF90eF9jYWNoZXxfX21lc2hfcGF0aF9kZWx8bWVzaF9wYXRoX2RlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9MjkyMz1zdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfbXBhdGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjkyOC1cdGlmIChkc3QpXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjkyOTpcdFx0cmV0dXJuIG1lc2hfcGF0aF9kZWwoc2RhdGEsIGRzdCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjkzMC1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM1Nj12b2lkIG1lc2hfcGF0aHRibF91bnJlZ2lzdGVyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmg6MzU3OmludCBtZXNoX3BhdGhfZGVsKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBjb25zdCB1OCAqYWRkcik7XG5uZXQvbWFjODAyMTEvbWVzaC5oLTM1OC12b2lkIG1lc2hfcGF0aF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4tLVxubmV0L21hYzgwMjExL21lc2guaD0zNjg9Ym9vbCBpZWVlODAyMTFfbWVzaF94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM2OS1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgY3RybF9mbGFncyk7XG5uZXQvbWFjODAyMTEvbWVzaC5oOjM3MDp2b2lkIG1lc2hfZmFzdF90eF9jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzcxLVx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKTtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9od21wLmM9MTI1OD1pbnQgbWVzaF9uZXh0aG9wX2xvb2t1cChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9od21wLmMtMTI4Mi1cdFx0aWYgKGllZWU4MDIxMV9od19jaGVjayhcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VodywgU1VQUE9SVF9GQVNUX1hNSVQpKVxubmV0L21hYzgwMjExL21lc2hfaHdtcC5jOjEyODM6XHRcdFx0bWVzaF9mYXN0X3R4X2NhY2hlKHNkYXRhLCBza2IsIG1wYXRoKTtcbm5ldC9tYWM4MDIxMS9tZXNoX2h3bXAuYy0xMjg0LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9NDM0PW1lc2hfZmFzdF90eF9nZXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTQ2Mi1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo0NjM6dm9pZCBtZXNoX2Zhc3RfdHhfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtNDY0LVx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz04MDE9c3RhdGljIHZvaWQgbWVzaF9wYXRoX2ZyZWVfcmN1KHN0cnVjdCBtZXNoX3RhYmxlICp0YmwsXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTgxNi1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo4MTc6c3RhdGljIHZvaWQgX19tZXNoX3BhdGhfZGVsKHN0cnVjdCBtZXNoX3RhYmxlICp0YmwsIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTgxOC17XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTg0Mj12b2lkIG1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy04NTEtXHRcdGlmIChyY3VfYWNjZXNzX3BvaW50ZXIobXBhdGgtXHUwMDNlbmV4dF9ob3ApID09IHN0YSlcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo4NTI6XHRcdFx0X19tZXNoX3BhdGhfZGVsKHRibCwgbXBhdGgpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg1My1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9ODU3PXN0YXRpYyB2b2lkIG1wcF9mbHVzaF9ieV9wcm94eShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtODY2LVx0XHRpZiAoZXRoZXJfYWRkcl9lcXVhbChtcGF0aC1cdTAwM2VtcHAsIHByb3h5KSlcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo4Njc6XHRcdFx0X19tZXNoX3BhdGhfZGVsKHRibCwgbXBhdGgpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg2OC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9ODcyPXN0YXRpYyB2b2lkIHRhYmxlX2ZsdXNoX2J5X2lmYWNlKHN0cnVjdCBtZXNoX3RhYmxlICp0YmwpXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg3OC1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobXBhdGgsIG4sIFx1MDAyNnRibC1cdTAwM2V3YWxrX2hlYWQsIHdhbGtfbGlzdCkge1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjg3OTpcdFx0X19tZXNoX3BhdGhfZGVsKHRibCwgbXBhdGgpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg4MC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9OTA2PXN0YXRpYyBpbnQgdGFibGVfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTE4LVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjkxOTpcdF9fbWVzaF9wYXRoX2RlbCh0YmwsIG1wYXRoKTtcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy05MjAtXHRzcGluX3VubG9ja19iaChcdTAwMjZ0YmwtXHUwMDNld2Fsa19sb2NrKTtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTI1LS8qKlxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjkyNjogKiBtZXNoX3BhdGhfZGVsIC0gZGVsZXRlIGEgbWVzaCBwYXRoIGZyb20gdGhlIHRhYmxlXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTI3LSAqXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTkzMi0gKi9cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo5MzM6aW50IG1lc2hfcGF0aF9kZWwoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGNvbnN0IHU4ICphZGRyKVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTkzNC17XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwODI9dm9pZCBtZXNoX3BhdGhfdGJsX2V4cGlyZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTA5Mi1cdFx0ICAgICB0aW1lX2FmdGVyKGppZmZpZXMsIG1wYXRoLVx1MDAzZWV4cF90aW1lICYjNDM7IE1FU0hfUEFUSF9FWFBJUkUpKVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjEwOTM6XHRcdFx0X19tZXNoX3BhdGhfZGVsKHRibCwgbXBhdGgpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTEwOTQtXHR9XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MjY3Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjc5Ny1cdFx0XHRpZiAobXBwYXRoIFx1MDAyNlx1MDAyNiBtcGF0aClcbm5ldC9tYWM4MDIxMS90eC5jOjI3OTg6XHRcdFx0XHRtZXNoX3BhdGhfZGVsKHNkYXRhLCBtcGF0aC1cdTAwM2Vkc3QpO1xubmV0L21hYzgwMjExL3R4LmMtMjc5OS1cdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzM3MQoJCQkJCQkJb3V0cHV0OiAxOTYKCQkJCQkJCXRob3VnaHRzOiA1NjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgTWVzaCBQYXRoIFRhYmxlIGFuZCBGYXN0IFRYIENhY2hpbmcgaW4gbWFjODAyMTEqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgd2FudGVkIHRvIGNvbmZpcm0gd2hldGhlciBjZXJ0YWluIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGdsb2JhbC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgZnVuY3Rpb25zLiBJIHNlZSB0aGF0IGBtZXNoX2Zhc3RfdHhfY2FjaGVgIGlzIGEgZ2xvYmFsIHN5bWJvbCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQsIGdpdmVuIGl0cyB1c2Ugd2l0aGluIHRoZSBzeXN0ZW0uICBgX19tZXNoX3BhdGhfZGVsYCwgaG93ZXZlciwgaXMgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKTm93LCBsZXQmIzM5O3MgdHJhY2sgd2hlcmUgYF9fbWVzaF9wYXRoX2RlbGAgaXMgYWN0dWFsbHkgKmNhbGxlZCogZnJvbS4gSSYjMzk7dmUgaWRlbnRpZmllZCBzZXZlcmFsIGVudHJ5IHBvaW50cyBpbiBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYDogYG1lc2hfcGF0aF9kZWxgLCBgbWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3BgLCBhbmQgYG1lc2hfcGF0aF90YmxfZXhwaXJlYC4gIEkgYWxzbyBzZWUgaXQmIzM5O3MgY2FsbGVkIGZyb20gYGllZWU4MDIxMV9kZWxfbXBhdGhgIGluIGBuZXQvbWFjODAyMTEvY2ZnLmNgLiAgQWxzbyBgbWVzaF9uZXh0aG9wX2xvb2t1cGAgaW4gYG5ldC9tYWM4MDIxMS9tZXNoX2h3bXAuY2AgY2FsbHMgYG1lc2hfZmFzdF90eF9jYWNoZWAuCgpJJiMzOTttIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiBgbWVzaF9wYXRoX2RlbGAgYW5kIGBtZXNoX2Zhc3RfdHhfY2FjaGVgIG5vdywgYW5kIGhvdyB0aGV5IGludGVyYWN0LgoKTmV4dCwgSSBuZWVkIHRvIGRlZmluZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgd29yay4gVGhpcyByZXF1aXJlcyBgTUFDODAyMTFgLCBgTUFDODAyMTFfTUVTSGAsIGFuZCBgQ0ZHODAyMTFgIGVuYWJsZWQuIEZvciB0ZXN0aW5nLCBgTUFDODAyMTFfSFdTSU1gIGNvdWxkIGJlIGEgaGVscGZ1bCBvcHRpb25hbCBkcml2ZXIuCgpOb3cgdG8gdmVyaWZ5IHRoZSBwcm9wb3NlZCBgc2V0LXJlc3VsdHNgIGNvbmZpZ3VyYXRpb24uICBXZSBuZWVkIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoZSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGNvcnJlY3RseSBpbmNsdWRlIGBNQUM4MDIxMWAsIGBNQUM4MDIxMV9NRVNIYCwgYW5kIGBDRkc4MDIxMWAuIFRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0IHNob3VsZCBjb250YWluICBgbWVzaF9mYXN0X3R4X2NhY2hlYCwgYG1lc2hfcGF0aF9kZWxgLCBgbWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3BgLCBhbmQgYG1lc2hfcGF0aF90YmxfZXhwaXJlYCwgYXMgdGhlIGtleSBzeW1ib2xzIGZvciBleHBsb3JhdGlvbi4gKGFsdGVybmF0aXZlbHkgdXNpbmcgYG1lc2hfbmV4dGhvcF9sb29rdXBgIGlzIGFjY2VwdGFibGUpLiAgRmluYWxseSwgdGhlIGBSZWFzb25pbmdgIHNob3VsZCBjb25jaXNlbHkgZXhwbGFpbiAqd2h5KiB0aGlzIGlzIHdvcnRoIGZ1enppbmc6IGluIGJyaWVmLCBpdCBjb25jZXJucyBhIGZpeCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB0aGUgdXNlIG9mIGEgZGVsZXRlZCBtZXNoIHBhdGggaW4gdGhlIGZhc3QgVFggY2FjaGUgYnkgY2hlY2tpbmcgYW5kIHNldHRpbmcgdGhlIGBNRVNIX1BBVEhfREVMRVRFRGAgZmxhZy4gIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcuCgpPa2F5LCBldmVyeXRoaW5nIGNoZWNrcyBvdXQuICBJJiMzOTttIHNhdGlzZmllZCB3aXRoIHRoZSBhbmFseXNpcywgYW5kIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX01FU0gmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZXNoX2Zhc3RfdHhfY2FjaGUmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX2RlbCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfdGJsX2V4cGlyZSYjMzQ7LAogICAgJiMzNDttZXNoX25leHRob3BfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN5bmNocm9uaXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1lc2ggcGF0aHMgaW4gbWFjODAyMTEsIHNldHRpbmcgdGhlIE1FU0hfUEFUSF9ERUxFVEVEIGZsYWcgaW4gX19tZXNoX3BhdGhfZGVsKCkgYW5kIGNoZWNraW5nIGZvciBpdCB1bmRlciBsb2NrIGluIG1lc2hfZmFzdF90eF9jYWNoZSgpIHRvIHByZXZlbnQgY2FjaGluZyBkZWxldGVkIHBhdGhzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBtZXNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX01FU0gmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZXNoX2Zhc3RfdHhfY2FjaGUmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX2RlbCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfdGJsX2V4cGlyZSYjMzQ7LAogICAgJiMzNDttZXNoX25leHRob3BfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN5bmNocm9uaXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1lc2ggcGF0aHMgaW4gbWFjODAyMTEsIHNldHRpbmcgdGhlIE1FU0hfUEFUSF9ERUxFVEVEIGZsYWcgaW4gX19tZXNoX3BhdGhfZGVsKCkgYW5kIGNoZWNraW5nIGZvciBpdCB1bmRlciBsb2NrIGluIG1lc2hfZmFzdF90eF9jYWNoZSgpIHRvIHByZXZlbnQgY2FjaGluZyBkZWxldGVkIHBhdGhzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBtZXNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXNvbHZlcyBhIHJhY2UgY29uZGl0aW9uIGluIG1hYzgwMjExIG1lc2ggcGF0aCBtYW5hZ2VtZW50IHdoZXJlIGEgbWVzaCBwYXRoIG1hcmtlZCBmb3IgZGVsZXRpb24gY291bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBhZnRlciB0aGUgY2FjaGUgZmx1c2gsIGxlYWRpbmcgdG8gYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKS4gVGhlIGZpeCBzZXRzIGBNRVNIX1BBVEhfREVMRVRFRGAgdW5kZXIgbG9jayBpbiBgX19tZXNoX3BhdGhfZGVsKClgIGFuZCBjaGVja3MgZm9yIHRoaXMgZmxhZyBiZWZvcmUgaW5zZXJ0aW5nIGludG8gdGhlIGZhc3QgVFggY2FjaGUgaW4gYG1lc2hfZmFzdF90eF9jYWNoZSgpYC4gXG5cblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBvYmplY3QgbGlmZXRpbWUgYW5kIGNvbmN1cnJlbmN5IChVQUYpIGlzc3VlcyB3aGljaCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vciBkb2VzIGl0IGFmZmVjdCB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3Igc3RydWN0IHBhZGRpbmcuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNThhN2YyY2RmYTRkOTRjODFmZDEyYmM1OTc0ZTlhMDc3MWNiZWVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMDc6NDA6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMKaW5kZXggMDMxNzFjZjAwODU1Ny4uZGZjYzRmM2E3MDg4ZSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYwpAQCAtNTc3LDYgJiM0Mzs1NzcsMTIgQEAgdm9pZCBtZXNoX2Zhc3RfdHhfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCWdvdG8gdW5sb2NrX3N0YTsKIAogCXNwaW5fbG9jaygmYW1wO2NhY2hlLSZndDt3YWxrX2xvY2spOwomIzQzOwlpZiAoKFJFQURfT05DRShtcGF0aC0mZ3Q7ZmxhZ3MpICZhbXA7IE1FU0hfUEFUSF9ERUxFVEVEKSB8fAomIzQzOwkgICAgKG1wcGF0aCAmYW1wOyZhbXA7IChSRUFEX09OQ0UobXBwYXRoLSZndDtmbGFncykgJmFtcDsgTUVTSF9QQVRIX0RFTEVURUQpKSkgewomIzQzOwkJa2ZyZWUoZW50cnkpOwomIzQzOwkJZ290byB1bmxvY2tfY2FjaGU7CiYjNDM7CX0KJiM0MzsKIAlwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KCZhbXA7Y2FjaGUtJmd0O3JodCwKIAkJCQkJCSAmYW1wO2VudHJ5LSZndDtyaGFzaCwKIAkJCQkJCSBmYXN0X3R4X3JodF9wYXJhbXMpOwpAQCAtODEyLDYgJiM0Mzs4MTgsOSBAQCBzdGF0aWMgdm9pZCBfX21lc2hfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpCiB7CiAJaGxpc3RfZGVsX3JjdSgmYW1wO21wYXRoLSZndDt3YWxrX2xpc3QpOwogCXJoYXNodGFibGVfcmVtb3ZlX2Zhc3QoJmFtcDt0YmwtJmd0O3JoZWFkLCAmYW1wO21wYXRoLSZndDtyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7bXBhdGgtJmd0O3N0YXRlX2xvY2spOwomIzQzOwltcGF0aC0mZ3Q7ZmxhZ3MgfD0gTUVTSF9QQVRIX0RFTEVURUQ7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bXBhdGgtJmd0O3N0YXRlX2xvY2spOwogCWlmICh0YmwgPT0gJmFtcDttcGF0aC0mZ3Q7c2RhdGEtJmd0O3UubWVzaC5tcHBfcGF0aHMpCiAJCW1lc2hfZmFzdF90eF9mbHVzaF9hZGRyKG1wYXRoLSZndDtzZGF0YSwgbXBhdGgtJmd0O2RzdCk7CiAJZWxzZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2MAoJCQkJCQkJb3V0cHV0OiA4OAoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBNZXNoIFBhdGggVGFibGUqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQmIzM5O3MgYmVpbmcgY2hhbmdlZCBhbmQgd2h5LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgc28gSSYjMzk7bSBsZXZlcmFnaW5nIHRoZSBjb2RlIHNlYXJjaCB0b29scyB0byBleHBsb3JlIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBzZWUgd2hhdCBpbnRlcmFjdHMgd2l0aCB0aGUgYXJlYXMgYmVpbmcgbW9kaWZpZWQuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gZGVsdmUgaW50byBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCDigJMgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lcyA1NzcgYW5kIDgxMi4gVGhvc2UgbGlrZWx5IHJlcHJlc2VudCB0aGUgY29yZSBsb2NhdGlvbnMgb2YgdGhlIGNoYW5nZXMsIG9yIGF0IGxlYXN0IHRoZSBhcmVhcyBtb3N0IGRpcmVjdGx5IGltcGFjdGVkIGJ5IHRoZW0uIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIG1lc2ggcGF0aCB0YWJsZSBpcyBkb2luZyBhbmQgaG93IHRoZSBtb2RpZmljYXRpb25zIGFmZmVjdCBpdHMgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbG9naWMgb2YgdGhlIHJvdXRpbmcgZGVjaXNpb25zIGluIHRoZSBtZXNoIG5ldHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjA6XHRcdGJ1aWxkLmZhc3RfdHguZGFfb2ZmcyA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfaGRyLCBhZGRyMyk7XG4gNTYxOlx0XHRidWlsZC5mYXN0X3R4LnNhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjQpO1xuIDU2MjpcdFx0YnVpbGQubXBhdGggPSBtcGF0aDtcbiA1NjM6XHRcdG1lbWNweShidWlsZC5oZHIsIG1lc2hoZHIsIGJ1aWxkLmhkcmxlbik7XG4gNTY0Olx0XHRtZW1jcHkoYnVpbGQuaGRyICYjNDM7IGJ1aWxkLmhkcmxlbiwgcmZjMTA0Ml9oZWFkZXIsIHNpemVvZihyZmMxMDQyX2hlYWRlcikpO1xuIDU2NTpcdFx0YnVpbGQuaGRybGVuICYjNDM7PSBzaXplb2YocmZjMTA0Ml9oZWFkZXIpO1xuIDU2NjpcdFx0bWVtY3B5KGJ1aWxkLmZhc3RfdHguaGRyLCBoZHIsIGJ1aWxkLmZhc3RfdHguaGRyX2xlbik7XG4gNTY3Olx0XG4gNTY4Olx0XHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilidWlsZC5mYXN0X3R4LmhkcjtcbiA1Njk6XHRcdGlmIChidWlsZC5mYXN0X3R4LmtleSlcbiA1NzA6XHRcdFx0aGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wgfD0gY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTtcbiA1NzE6XHRcbiA1NzI6XHRcdHFjID0gaWVlZTgwMjExX2dldF9xb3NfY3RsKGhkcik7XG4gNTczOlx0XHRxY1sxXSB8PSBJRUVFODAyMTFfUU9TX0NUTF9NRVNIX0NPTlRST0xfUFJFU0VOVCBcdTAwM2VcdTAwM2UgODtcbiA1NzQ6XHRcbiA1NzU6XHRcdGVudHJ5ID0ga21lbWR1cChcdTAwMjZidWlsZCwgc2l6ZW9mKGJ1aWxkKSwgR0ZQX0FUT01JQyk7XG4gNTc2Olx0XHRpZiAoIWVudHJ5KVxuIDU3NzpcdFx0XHRnb3RvIHVubG9ja19zdGE7XG4gNTc4Olx0XG4gNTc5Olx0XHRzcGluX2xvY2soXHUwMDI2Y2FjaGUtXHUwMDNld2Fsa19sb2NrKTtcbiA1ODA6XHRcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4gNTgxOlx0XHQgICAgKG1wcGF0aCBcdTAwMjZcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XG4gNTgyOlx0XHRcdGtmcmVlKGVudHJ5KTtcbiA1ODM6XHRcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4gNTg0Olx0XHR9XG4gNTg1Olx0XG4gNTg2Olx0XHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFx1MDAyNmNhY2hlLVx1MDAzZXJodCxcbiA1ODc6XHRcdFx0XHRcdFx0XHQgXHUwMDI2ZW50cnktXHUwMDNlcmhhc2gsXG4gNTg4Olx0XHRcdFx0XHRcdFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XG4gNTg5Olx0XHRpZiAoSVNfRVJSKHByZXYpKSB7XG4gNTkwOlx0XHRcdGtmcmVlKGVudHJ5KTtcbiA1OTE6XHRcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4gNTkyOlx0XHR9XG4gNTkzOlx0XG4gNTk0Olx0XHQvKlxuIDU5NTpcdFx0ICogcmVwbGFjZSBhbnkgcHJldmlvdXMgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUsIGluIGNhc2Ugd2UmIzM5O3JlXG4gNTk2Olx0XHQgKiByZXBsYWNpbmcgaXQgd2l0aCBhIGRpZmZlcmVudCB0eXBlIChlLmcuIG1wYXRoIC1cdTAwM2UgbXBwKVxuIDU5NzpcdFx0ICovXG4gNTk4Olx0XHRpZiAodW5saWtlbHkocHJldikpIHtcbiA1OTk6XHRcdFx0cmhhc2h0YWJsZV9yZXBsYWNlX2Zhc3QoXHUwMDI2Y2FjaGUtXHUwMDNlcmh0LCBcdTAwMjZwcmV2LVx1MDAzZXJoYXNoLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODAwOlx0XG4gODAxOlx0c3RhdGljIHZvaWQgbWVzaF9wYXRoX2ZyZWVfcmN1KHN0cnVjdCBtZXNoX3RhYmxlICp0YmwsXG4gODAyOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxuIDgwMzpcdHtcbiA4MDQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbXBhdGgtXHUwMDNlc2RhdGE7XG4gODA1Olx0XG4gODA2Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4gODA3Olx0XHRtcGF0aC1cdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfUkVTT0xWSU5HIHwgTUVTSF9QQVRIX0RFTEVURUQ7XG4gODA4Olx0XHRtZXNoX2dhdGVfZGVsKHRibCwgbXBhdGgpO1xuIDgwOTpcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4gODEwOlx0XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNm1wYXRoLVx1MDAzZXRpbWVyKTtcbiA4MTE6XHRcdGF0b21pY19kZWMoXHUwMDI2c2RhdGEtXHUwMDNldS5tZXNoLm1wYXRocyk7XG4gODEyOlx0XHRhdG9taWNfZGVjKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKTtcbiA4MTM6XHRcdG1lc2hfcGF0aF9mbHVzaF9wZW5kaW5nKG1wYXRoKTtcbiA4MTQ6XHRcdGtmcmVlX3JjdShtcGF0aCwgcmN1KTtcbiA4MTU6XHR9XG4gODE2Olx0XG4gODE3Olx0c3RhdGljIHZvaWQgX19tZXNoX3BhdGhfZGVsKHN0cnVjdCBtZXNoX3RhYmxlICp0YmwsIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxuIDgxODpcdHtcbiA4MTk6XHRcdGhsaXN0X2RlbF9yY3UoXHUwMDI2bXBhdGgtXHUwMDNld2Fsa19saXN0KTtcbiA4MjA6XHRcdHJoYXNodGFibGVfcmVtb3ZlX2Zhc3QoXHUwMDI2dGJsLVx1MDAzZXJoZWFkLCBcdTAwMjZtcGF0aC1cdTAwM2VyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTtcbiA4MjE6XHRcdHNwaW5fbG9ja19iaChcdTAwMjZtcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA4MjI6XHRcdG1wYXRoLVx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9ERUxFVEVEO1xuIDgyMzpcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4gODI0Olx0XHRpZiAodGJsID09IFx1MDAyNm1wYXRoLVx1MDAzZXNkYXRhLVx1MDAzZXUubWVzaC5tcHBfcGF0aHMpXG4gODI1Olx0XHRcdG1lc2hfZmFzdF90eF9mbHVzaF9hZGRyKG1wYXRoLVx1MDAzZXNkYXRhLCBtcGF0aC1cdTAwM2Vkc3QpO1xuIDgyNjpcdFx0ZWxzZVxuIDgyNzpcdFx0XHRtZXNoX2Zhc3RfdHhfZmx1c2hfbXBhdGgobXBhdGgpO1xuIDgyODpcdFx0bWVzaF9wYXRoX2ZyZWVfcmN1KHRibCwgbXBhdGgpO1xuIDgyOTpcdH1cbiA4MzA6XHRcbiA4MzE6XHQvKipcbiA4MzI6XHQgKiBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCAtIERlbGV0ZXMgbWVzaCBwYXRocyBpZiB0aGVpciBuZXh0IGhvcCBtYXRjaGVzXG4gODMzOlx0ICpcbiA4MzQ6XHQgKiBAc3RhOiBtZXNoIHBlZXIgdG8gbWF0Y2hcbiA4MzU6XHQgKlxuIDgzNjpcdCAqIFJDVSBub3RlczogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIG1lc2ggcGxpbmsgdHJhbnNpdGlvbnMgZnJvbVxuIDgzNzpcdCAqIFBMSU5LX0VTVEFCIHRvIGFueSBvdGhlciBzdGF0ZSwgc2luY2UgUExJTktfRVNUQUIgc3RhdGUgaXMgdGhlIG9ubHkgb25lIHRoYXRcbiA4Mzg6XHQgKiBhbGxvd3MgcGF0aCBjcmVhdGlvbi4gVGhpcyB3aWxsIGhhcHBlbiBiZWZvcmUgdGhlIHN0YSBjYW4gYmUgZnJlZWQgKGJlY2F1c2VcbiA4Mzk6XHQgKiBzdGFfaW5mb19kZXN0cm95KCkgY2FsbHMgdGhpcykgc28gYW55IHJlYWRlciBpbiBhIHJjdSByZWFkIGJsb2NrIHdpbGwgYmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwMwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVc2UtQWZ0ZXItRnJlZSBDb25jdXJyZW5jeSBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgbG9naWMuIEl0IGxvb2tzIGxpa2UgaW4gYF9fbWVzaF9wYXRoX2RlbGAsIHdlJiMzOTtyZSBzZXR0aW5nIGBtcGF0aC0mZ3Q7ZmxhZ3MgfD0gTUVTSF9QQVRIX0RFTEVURURgICpiZWZvcmUqIGZsdXNoaW5nIHRoZSBmYXN0IFRYIGNhY2hlIGFuZCBmcmVlaW5nIHRoZSBtZW1vcnkuIFRoZSBjcnVjaWFsIHBhcnQgaXMgaW4gYG1lc2hfZmFzdF90eF9jYWNoZWAuIEl0JiMzOTtzIGNoZWNraW5nIGBSRUFEX09OQ0UobXBhdGgtJmd0O2ZsYWdzKSAmYW1wOyBNRVNIX1BBVEhfREVMRVRFRGAgKGFuZCBhIHNpbWlsYXIgY2hlY2sgZm9yIGBtcHBhdGhgKSB1bmRlciBhIHNwaW5sb2NrLiBJZiB0aGUgcGF0aCBpcyBtYXJrZWQgZGVsZXRlZCwgaXQgYmFpbHMgb3V0LCBhdm9pZGluZyBhZGRpbmcgYSBzdGFsZSBlbnRyeSB0byB0aGUgY2FjaGUuCgpBaCwgSSBzZWUuIFRoaXMgaXMgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZyBmaXg6IGEgdXNlLWFmdGVyLWZyZWUgcmFjZSBjb25kaXRpb24uIFRoZSBzY2VuYXJpbyB3YXMgdGhhdCBgbWVzaF9mYXN0X3R4X2NhY2hlYCBjb3VsZCBhZGQgYW4gZW50cnkgcG9pbnRpbmcgdG8gYSBgbXBhdGhgIChvciBgbXBwYXRoYCkgKmFmdGVyKiBgX19tZXNoX3BhdGhfZGVsYCBmbHVzaGVkIHRoZSBjYWNoZSBhbmQgZnJlZWQgdGhlIG1lbW9yeSwgcmVzdWx0aW5nIGluIGEgVUFGIHdoZW4gYG1lc2hfcGF0aF9mcmVlX3JjdWAgd2FzIGNhbGxlZC4gU2V0dGluZyB0aGUgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFnIGJlZm9yZSBmcmVlaW5nIGFuZCBjaGVja2luZyBpdCBpbiB0aGUgY2FjaGUgZW5zdXJlcyB0aGF0IG5vIHN0YWxlIGVudHJpZXMgYXJlIGFkZGVkIHRvIHRoZSBjYWNoZSwgdGh1cyBwcmV2ZW50aW5nIHRoZSBVQUYuIENsZXZlci4KCk5vdywgbGV0JiMzOTtzIGRvIGEgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiBhbnl0aGluZyBlbHNlIGlzIGdvaW5nIG9uLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLgoKRmlyc3QsIGlzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2s/IEdvb2QsIHRoZSBwYXRjaCBpbnZvbHZlcyBgbXBhdGgtJmd0O2ZsYWdzYCBpbiBgc3RydWN0IG1lc2hfcGF0aGAuIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGBmbGFnc2AgZmllbGQgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIGFuZCBpdCBpcy4gVGhpcyBpcyBhbGxvY2F0ZWQgdmlhIGBtZXNoX3BhdGhfYWxsb2NgIG9yIHNpbWlsYXIsIHdoaWNoIEkga25vdyBpbml0aWFsaXplcyB0aGUgc3RydWN0LiBUaGUgY2hlY2sgdXNlcyBgUkVBRF9PTkNFYCBzbyBpdCYjMzk7cyBzYWZlLgoKU2Vjb25kLCBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSB1c2VyLXNwYWNlIGNvcGllcywgaW9jdGxzLCBuZXRsaW5rIGludGVyYWN0aW9ucywgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgb3IgcGFkZGluZyBpc3N1ZXM/IE5vLiBJdCBzZWVtcyBmb2N1c2VkIHNvbGVseSBvbiBpbi1rZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb250cm9sIGZsb3cuCgpUaGlyZCwgYXJlIHRoZXJlIGFueSBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RocyB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGJ1ZmZlciByZWFkcz8gTm8uIFRoYXQgc2VlbXMgdW5saWtlbHkgZ2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBmaXguCgpGb3VydGgsIGlzIEtBU0FOIGFibGUgdG8gY2F0Y2ggdGhpcyBzb3J0IG9mIGJ1Zz8gWWVzLCBLQVNBTiB3b3VsZCBkZXRlY3QgdGhpcyB1c2UtYWZ0ZXItZnJlZSByYWNlLiBJdCB3b3VsZCBhbHNvIGRldGVjdCB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLiBLTVNBTiBpc24mIzM5O3QgcmVsZXZhbnQgaGVyZSwgYmVjYXVzZSB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3IgaW5mbyBsZWFrcyBpbnZvbHZlZC4KCkFscmlnaHQsIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBvdmVyIHRoZSBhbGxvY2F0aW9uIHJvdXRpbmVzLCBgbWVzaF9wYXRoX25ld2AsIGBtZXNoX3BhdGhfYXNzaWduYCwgb3Igd2hlcmV2ZXIgdGhlIGBzdHJ1Y3QgbWVzaF9wYXRoYCBpcyBhbGxvY2F0ZWQsIGp1c3QgdG8gYmUgMTAwJSBzdXJlLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHdlbGwtdGFyZ2V0ZWQgYW5kIGNvcnJlY3QgZml4IGZvciBhIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZXNoX3BhdGhfYWxsb2N8bWVzaF9wYXRoX25ldyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTQwMj1zdGF0aWNcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo0MDM6c3RydWN0IG1lc2hfcGF0aCAqbWVzaF9wYXRoX25ldyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy00MDQtXHRcdFx0XHRjb25zdCB1OCAqZHN0LCBnZnBfdCBnZnBfZmxhZ3MpXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTY4Nj1zdHJ1Y3QgbWVzaF9wYXRoICptZXNoX3BhdGhfYWRkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy03MDEtXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NzAyOlx0bmV3X21wYXRoID0gbWVzaF9wYXRoX25ldyhzZGF0YSwgZHN0LCBHRlBfQVRPTUlDKTtcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy03MDMtXHRpZiAoIW5ld19tcGF0aClcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9NzI4PWludCBtcHBfcGF0aF9hZGQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTc0MS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo3NDI6XHRuZXdfbXBhdGggPSBtZXNoX3BhdGhfbmV3KHNkYXRhLCBkc3QsIEdGUF9BVE9NSUMpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTc0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc1OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBtZXNoX3BhdGhfbmV3YCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBtZXNoX3BhdGhfbmV3YC4gSSB3YW50IHRvIGdldCBhIHF1aWNrIGZlZWwgZm9yIGl0cyBpbXBsZW1lbnRhdGlvbiDigJMgcHJvYmFibHkgbm90IGEgZGVlcCBkaXZlIGF0IHRoaXMgc3RhZ2UsIGp1c3QgYSBwcmVsaW1pbmFyeSBhc3Nlc3NtZW50LiBJJiMzOTttIGxvb2tpbmcgZm9yIGl0cyBvdmVyYWxsIHN0cnVjdHVyZSwgYW55IG9idmlvdXMgcmVkIGZsYWdzLCBvciBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gTXkgaW1tZWRpYXRlIGdvYWxzIGFyZSB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0sIGlkZW50aWZ5IGl0cyBrZXkgZGF0YSBzdHJ1Y3R1cmVzIG9yIGFsZ29yaXRobXMsIGFuZCBwaW5wb2ludCBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIEl04oCZcyBsaWtlbHkgYSBjb25zdHJ1Y3RvciwgcGF0aC1nZW5lcmF0aW9uLCBvciBtZXNoLW1hbmlwdWxhdGlvbiBmdW5jdGlvbiwgZGVwZW5kaW5nIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiB1c2VkLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgb25lIGZpdHMgbXkgaW50dWl0aW9uIG9mIHRoZSBzeXN0ZW0mIzM5O3MgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0fVxuIDQwMTpcdFxuIDQwMjpcdHN0YXRpY1xuIDQwMzpcdHN0cnVjdCBtZXNoX3BhdGggKm1lc2hfcGF0aF9uZXcoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gNDA0Olx0XHRcdFx0XHRjb25zdCB1OCAqZHN0LCBnZnBfdCBnZnBfZmxhZ3MpXG4gNDA1Olx0e1xuIDQwNjpcdFx0c3RydWN0IG1lc2hfcGF0aCAqbmV3X21wYXRoO1xuIDQwNzpcdFxuIDQwODpcdFx0bmV3X21wYXRoID0ga3phbGxvY19vYmooc3RydWN0IG1lc2hfcGF0aCwgZ2ZwX2ZsYWdzKTtcbiA0MDk6XHRcdGlmICghbmV3X21wYXRoKVxuIDQxMDpcdFx0XHRyZXR1cm4gTlVMTDtcbiA0MTE6XHRcbiA0MTI6XHRcdG1lbWNweShuZXdfbXBhdGgtXHUwMDNlZHN0LCBkc3QsIEVUSF9BTEVOKTtcbiA0MTM6XHRcdGV0aF9icm9hZGNhc3RfYWRkcihuZXdfbXBhdGgtXHUwMDNlcmFubl9zbmRfYWRkcik7XG4gNDE0Olx0XHRuZXdfbXBhdGgtXHUwMDNlaXNfcm9vdCA9IGZhbHNlO1xuIDQxNTpcdFx0bmV3X21wYXRoLVx1MDAzZXNkYXRhID0gc2RhdGE7XG4gNDE2Olx0XHRuZXdfbXBhdGgtXHUwMDNlZmxhZ3MgPSAwO1xuIDQxNzpcdFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZuZXdfbXBhdGgtXHUwMDNlZnJhbWVfcXVldWUpO1xuIDQxODpcdFx0bmV3X21wYXRoLVx1MDAzZWV4cF90aW1lID0gamlmZmllcztcbiA0MTk6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNm5ld19tcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA0MjA6XHRcdHRpbWVyX3NldHVwKFx1MDAyNm5ld19tcGF0aC1cdTAwM2V0aW1lciwgbWVzaF9wYXRoX3RpbWVyLCAwKTtcbiA0MjE6XHRcbiA0MjI6XHRcdHJldHVybiBuZXdfbXBhdGg7XG4gNDIzOlx0fVxuIDQyNDpcdFxuIDQyNTpcdHN0YXRpYyB2b2lkIG1lc2hfZmFzdF90eF9lbnRyeV9mcmVlKHN0cnVjdCBtZXNoX3R4X2NhY2hlICpjYWNoZSxcbiA0MjY6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX21lc2hfZmFzdF90eCAqZW50cnkpXG4gNDI3Olx0e1xuIDQyODpcdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZlbnRyeS1cdTAwM2V3YWxrX2xpc3QpO1xuIDQyOTpcdFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcdTAwMjZjYWNoZS1cdTAwM2VyaHQsIFx1MDAyNmVudHJ5LVx1MDAzZXJoYXNoLCBmYXN0X3R4X3JodF9wYXJhbXMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTEyCgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtBU0FOIEltcGFjdCBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRocm91Z2ggdGhlIGxvZ2ljLiBFdmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyBgbmV3X21wYXRoYCBpcyBiZWluZyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY2AsIG1lYW5pbmcgaXQmIzM5O3MgemVyby1pbml0aWFsaXplZCBmcm9tIHRoZSBzdGFydCwgYW5kIHRoZSBgbmV3X21wYXRoLSZndDtmbGFnc2Agc3RhcnRzIGF0IHplcm8gYXMgd2VsbC4gR29vZCwgdGhhdCBoZWxwcy4KClRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBoZXJlIGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBBIGRlbGV0ZWQgYG1wYXRoYCBtaWdodCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIGBmYXN0X3R4YCBjYWNoZSAqYWZ0ZXIqIHRoZSBjYWNoZSBoYXMgYmVlbiBmbHVzaGVkIGJ5IGBfX21lc2hfcGF0aF9kZWxgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgYSB2ZXJ5IG5hc3R5IGJ1Zy4KCkhvd2V2ZXIsIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMsIHRoaXMgaXMgc3F1YXJlbHkgaW4gdGhlIHJlYWxtIG9mIGNvbmN1cnJlbmN5IGVycm9ycy4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gY2F0Y2ggdGhlc2UgdHlwZXMgb2YgYnVncyDigJMgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeS4gVGhpcyBwYXRjaCBkb2VzbuKAmXQgaW50cm9kdWNlIGFueSBuZXcgaW5zdGFuY2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBub3IgZG9lcyBpdCBhcHBlYXIgdG8gY3JlYXRlIGFueSBpbmZvcm1hdGlvbiBsZWFrcy4gSXQmIzM5O3Mgc29sZWx5IGEgY29uY3VycmVuY3kgcHJvdGVjdGlvbiBtZWFzdXJlLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUsIGFuZCBvbmx5IGFmZmVjdHMgbWVtb3J5IHdoaWNoIGlzIHByb3Blcmx5IGBremFsbG9jYCYjMzk7ZCwgSSYjMzk7bSBjb25maWRlbnQgd2UgY2FuIHNldCBgTmVlZHNLTVNBTiA9IGZhbHNlYCBiZWNhdXNlIGl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhlIHJlYXNvbmluZyBJIGp1c3QgbGFpZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc29sdmVzIGEgcmFjZSBjb25kaXRpb24gaW4gbWFjODAyMTEgbWVzaCBwYXRoIG1hbmFnZW1lbnQgd2hlcmUgYSBtZXNoIHBhdGggbWFya2VkIGZvciBkZWxldGlvbiBjb3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGFmdGVyIHRoZSBjYWNoZSBmbHVzaCwgbGVhZGluZyB0byBhIHVzZS1hZnRlci1mcmVlIChVQUYpLiBUaGUgZml4IHNldHMgYE1FU0hfUEFUSF9ERUxFVEVEYCB1bmRlciBsb2NrIGluIGBfX21lc2hfcGF0aF9kZWwoKWAgYW5kIGNoZWNrcyBmb3IgdGhpcyBmbGFnIGJlZm9yZSBpbnNlcnRpbmcgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBpbiBgbWVzaF9mYXN0X3R4X2NhY2hlKClgLiBcblxuVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIG9iamVjdCBsaWZldGltZSBhbmQgY29uY3VycmVuY3kgKFVBRikgaXNzdWVzIHdoaWNoIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IEtBU0FOLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm9yIGRvZXMgaXQgYWZmZWN0IHVzZXItc3BhY2UgY29weSBwYXRocyBvciBzdHJ1Y3QgcGFkZGluZy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXNvbHZlcyBhIHJhY2UgY29uZGl0aW9uIGluIG1hYzgwMjExIG1lc2ggcGF0aCBtYW5hZ2VtZW50IHdoZXJlIGEgbWVzaCBwYXRoIG1hcmtlZCBmb3IgZGVsZXRpb24gY291bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBhZnRlciB0aGUgY2FjaGUgZmx1c2gsIGxlYWRpbmcgdG8gYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKS4gVGhlIGZpeCBzZXRzIGBNRVNIX1BBVEhfREVMRVRFRGAgdW5kZXIgbG9jayBpbiBgX19tZXNoX3BhdGhfZGVsKClgIGFuZCBjaGVja3MgZm9yIHRoaXMgZmxhZyBiZWZvcmUgaW5zZXJ0aW5nIGludG8gdGhlIGZhc3QgVFggY2FjaGUgaW4gYG1lc2hfZmFzdF90eF9jYWNoZSgpYC4gXG5cblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBvYmplY3QgbGlmZXRpbWUgYW5kIGNvbmN1cnJlbmN5IChVQUYpIGlzc3VlcyB3aGljaCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vciBkb2VzIGl0IGFmZmVjdCB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3Igc3RydWN0IHBhZGRpbmcuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MDo0NC43NzM1NTk4NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjM2MDg3MDgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfTUVTSFwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZXNoX2Zhc3RfdHhfY2FjaGVcIixcbiAgICBcIm1lc2hfcGF0aF9kZWxcIixcbiAgICBcIm1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wXCIsXG4gICAgXCJtZXNoX3BhdGhfdGJsX2V4cGlyZVwiLFxuICAgIFwibWVzaF9uZXh0aG9wX2xvb2t1cFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVzb2x2ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBtYWM4MDIxMSBtZXNoIHBhdGggbWFuYWdlbWVudCB3aGVyZSBhIG1lc2ggcGF0aCBtYXJrZWQgZm9yIGRlbGV0aW9uIGNvdWxkIGJlIGluc2VydGVkIGludG8gdGhlIGZhc3QgVFggY2FjaGUgYWZ0ZXIgdGhlIGNhY2hlIGZsdXNoLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikuIFRoZSBmaXggc2V0cyBgTUVTSF9QQVRIX0RFTEVURURgIHVuZGVyIGxvY2sgaW4gYF9fbWVzaF9wYXRoX2RlbCgpYCBhbmQgY2hlY2tzIGZvciB0aGlzIGZsYWcgYmVmb3JlIGluc2VydGluZyBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGluIGBtZXNoX2Zhc3RfdHhfY2FjaGUoKWAuIFxcblxcblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBvYmplY3QgbGlmZXRpbWUgYW5kIGNvbmN1cnJlbmN5IChVQUYpIGlzc3VlcyB3aGljaCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vciBkb2VzIGl0IGFmZmVjdCB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3Igc3RydWN0IHBhZGRpbmcuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN5bmNocm9uaXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1lc2ggcGF0aHMgaW4gbWFjODAyMTEsIHNldHRpbmcgdGhlIE1FU0hfUEFUSF9ERUxFVEVEIGZsYWcgaW4gX19tZXNoX3BhdGhfZGVsKCkgYW5kIGNoZWNraW5nIGZvciBpdCB1bmRlciBsb2NrIGluIG1lc2hfZmFzdF90eF9jYWNoZSgpIHRvIHByZXZlbnQgY2FjaGluZyBkZWxldGVkIHBhdGhzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBtZXNoIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjQ0Ljc3MzU2NTU1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNTA0MDk0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU4YTdmMmNkZmE0ZDk0YzgxZmQxMmJjNTk3NGU5YTA3NzFjYmVlZDBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwNzo0MDo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNcXG5pbmRleCAwMzE3MWNmMDA4NTU3Li5kZmNjNGYzYTcwODhlIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1xcbkBAIC01NzcsNiArNTc3LDEyIEBAIHZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRnb3RvIHVubG9ja19zdGE7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNmNhY2hlLVxcdTAwM2V3YWxrX2xvY2spO1xcbitcXHRpZiAoKFJFQURfT05DRShtcGF0aC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XFxuK1xcdCAgICAobXBwYXRoIFxcdTAwMjZcXHUwMDI2IChSRUFEX09OQ0UobXBwYXRoLVxcdTAwM2VmbGFncykgXFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XFxuK1xcdFxcdGtmcmVlKGVudHJ5KTtcXG4rXFx0XFx0Z290byB1bmxvY2tfY2FjaGU7XFxuK1xcdH1cXG4rXFxuIFxcdHByZXYgPSByaGFzaHRhYmxlX2xvb2t1cF9nZXRfaW5zZXJ0X2Zhc3QoXFx1MDAyNmNhY2hlLVxcdTAwM2VyaHQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2ZW50cnktXFx1MDAzZXJoYXNoLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgZmFzdF90eF9yaHRfcGFyYW1zKTtcXG5AQCAtODEyLDYgKzgxOCw5IEBAIHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcXG4ge1xcbiBcXHRobGlzdF9kZWxfcmN1KFxcdTAwMjZtcGF0aC1cXHUwMDNld2Fsa19saXN0KTtcXG4gXFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcXHUwMDI2dGJsLVxcdTAwM2VyaGVhZCwgXFx1MDAyNm1wYXRoLVxcdTAwM2VyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTtcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZtcGF0aC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdG1wYXRoLVxcdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfREVMRVRFRDtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0aWYgKHRibCA9PSBcXHUwMDI2bXBhdGgtXFx1MDAzZXNkYXRhLVxcdTAwM2V1Lm1lc2gubXBwX3BhdGhzKVxcbiBcXHRcXHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cXHUwMDNlc2RhdGEsIG1wYXRoLVxcdTAwM2Vkc3QpO1xcbiBcXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjQ2LjIwOTIzODkxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzMwODU2NjkwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX01FU0hcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWVzaF9mYXN0X3R4X2NhY2hlXCIsXG4gICAgXCJtZXNoX3BhdGhfZGVsXCIsXG4gICAgXCJtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcFwiLFxuICAgIFwibWVzaF9wYXRoX3RibF9leHBpcmVcIixcbiAgICBcIm1lc2hfbmV4dGhvcF9sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzeW5jaHJvbml6YXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtZXNoIHBhdGhzIGluIG1hYzgwMjExLCBzZXR0aW5nIHRoZSBNRVNIX1BBVEhfREVMRVRFRCBmbGFnIGluIF9fbWVzaF9wYXRoX2RlbCgpIGFuZCBjaGVja2luZyBmb3IgaXQgdW5kZXIgbG9jayBpbiBtZXNoX2Zhc3RfdHhfY2FjaGUoKSB0byBwcmV2ZW50IGNhY2hpbmcgZGVsZXRlZCBwYXRocy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgbWVzaCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU4YTdmMmNkZmE0ZDk0YzgxZmQxMmJjNTk3NGU5YTA3NzFjYmVlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA3OjQwOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jIGIvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG5pbmRleCAwMzE3MWNmMDA4NTU3Li5kZmNjNGYzYTcwODhlIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG4rKysgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNcbkBAIC01NzcsNiArNTc3LDEyIEBAIHZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRnb3RvIHVubG9ja19zdGE7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2Y2FjaGUtXHUwMDNld2Fsa19sb2NrKTtcbitcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4rXHQgICAgKG1wcGF0aCBcdTAwMjZcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XG4rXHRcdGtmcmVlKGVudHJ5KTtcbitcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4rXHR9XG4rXG4gXHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFx1MDAyNmNhY2hlLVx1MDAzZXJodCxcbiBcdFx0XHRcdFx0XHQgXHUwMDI2ZW50cnktXHUwMDNlcmhhc2gsXG4gXHRcdFx0XHRcdFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XG5AQCAtODEyLDYgKzgxOCw5IEBAIHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcbiB7XG4gXHRobGlzdF9kZWxfcmN1KFx1MDAyNm1wYXRoLVx1MDAzZXdhbGtfbGlzdCk7XG4gXHRyaGFzaHRhYmxlX3JlbW92ZV9mYXN0KFx1MDAyNnRibC1cdTAwM2VyaGVhZCwgXHUwMDI2bXBhdGgtXHUwMDNlcmhhc2gsIG1lc2hfcmh0X3BhcmFtcyk7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4rXHRtcGF0aC1cdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfREVMRVRFRDtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0aWYgKHRibCA9PSBcdTAwMjZtcGF0aC1cdTAwM2VzZGF0YS1cdTAwM2V1Lm1lc2gubXBwX3BhdGhzKVxuIFx0XHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cdTAwM2VzZGF0YSwgbXBhdGgtXHUwMDNlZHN0KTtcbiBcdGVsc2VcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjQ2LjIwOTI0MDE2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg2NDIwOTAyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IG1hYzgwMjExIE1lc2ggUGF0aCBUYWJsZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiBiZWNhdXNlIG9mIGl0cyBwb3RlbnRpYWwgbmV0d29yayBpbnRlcmFjdGlvbnMuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgYG1lc2hfZmFzdF90eF9jYWNoZWAgZnVuY3Rpb24uIFRoZXkndmUgYWRkZWQgYSBjaGVjayBmb3IgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFncyBvbiBlaXRoZXIgYG1wYXRoYCBvciBgbXBwYXRoYCBiZWZvcmUgZG9pbmcgYW4gaW5zZXJ0aW9uL2xvb2t1cCBpbiB0aGUgcmhhc2h0YWJsZS4gQWRkaXRpb25hbGx5LCBpbiBgX19tZXNoX3BhdGhfZGVsYCwgaXQncyBzZXR0aW5nIHRoZSBgTUVTSF9QQVRIX0RFTEVURURgIGZsYWcgdW5kZXIgYSBsb2NrLiBUaGlzIGluZGljYXRlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBiZWluZyBhZGRyZXNzZWQgb3IgYSBjaGFuZ2UgaW4gaG93IGVudHJpZXMgYXJlIGJlaW5nIG1hbmFnZWQgaW4gdGhlIG1lc2ggcGF0aCB0YWJsZS4gTG9va3MgbGlrZSB0aGV5IGFkZGVkIHRoZSBgc3Bpbl9sb2NrX2JoYCBhbmQgYHNwaW5fdW5sb2NrX2JoYCBhcm91bmQgdGhlIGZsYWcgc2V0dGluZy5cblxuTm93LCBmb3IgYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBsZXQncyBjb25zaWRlciB0aGUgYnJvYWRlciBjb250ZXh0LiBgbmV0L21hYzgwMjExYCBpcyB0aGUgTGludXggd2lyZWxlc3MgODAyLjExIHN1YnN5c3RlbS4gQW5kLCBpbXBvcnRhbnRseSwgd2UgY2FuIGVtdWxhdGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nICg4MDIuMTFzKSBpbiBRRU1VIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHN5emthbGxlciBoYXMgcHJldHR5IGdvb2Qgc3VwcG9ydCBmb3IuIFRoYXQncyBhIGh1Z2UgZ3JlZW4gbGlnaHQhXG5cblRvIGZpcm0gdXAgbXkgYXNzZXNzbWVudCwgSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gc2VlIGlmIG1lc2ggc3VwcG9ydCBpcyBlbmFibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYWNlLiBBIHF1aWNrIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB3aWxsIGxldCBtZSBxdWlja2x5IHB1bGwgdXAgYG5ldC9tYWM4MDIxMS9LY29uZmlnYCBhbmQgYG5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGlzIHdpbGwgZ3VpZGUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IgYW5kIGRldGVybWluZSBpZiB0aGUgZnV6emluZyBlZmZvcnQgd2lsbCBiZSB3b3J0aHdoaWxlLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBhbnkgbmV3LCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBzdGF0ZXMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGluY3JlYXNlZCB1c2Ugb2YgbG9ja3MgYW5kIGZsYWdzLCB3aGljaCBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgcmFjZSBjb25kaXRpb24gdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTQ4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDA6NTQuODUxMzMyMTc2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU2NTpcXHRcXHRidWlsZC5oZHJsZW4gKz0gc2l6ZW9mKHJmYzEwNDJfaGVhZGVyKTtcXG4gNTY2OlxcdFxcdG1lbWNweShidWlsZC5mYXN0X3R4LmhkciwgaGRyLCBidWlsZC5mYXN0X3R4Lmhkcl9sZW4pO1xcbiA1Njc6XFx0XFxuIDU2ODpcXHRcXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilidWlsZC5mYXN0X3R4LmhkcjtcXG4gNTY5OlxcdFxcdGlmIChidWlsZC5mYXN0X3R4LmtleSlcXG4gNTcwOlxcdFxcdFxcdGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCB8PSBjcHVfdG9fbGUxNihJRUVFODAyMTFfRkNUTF9QUk9URUNURUQpO1xcbiA1NzE6XFx0XFxuIDU3MjpcXHRcXHRxYyA9IGllZWU4MDIxMV9nZXRfcW9zX2N0bChoZHIpO1xcbiA1NzM6XFx0XFx0cWNbMV0gfD0gSUVFRTgwMjExX1FPU19DVExfTUVTSF9DT05UUk9MX1BSRVNFTlQgXFx1MDAzZVxcdTAwM2UgODtcXG4gNTc0OlxcdFxcbiA1NzU6XFx0XFx0ZW50cnkgPSBrbWVtZHVwKFxcdTAwMjZidWlsZCwgc2l6ZW9mKGJ1aWxkKSwgR0ZQX0FUT01JQyk7XFxuIDU3NjpcXHRcXHRpZiAoIWVudHJ5KVxcbiA1Nzc6XFx0XFx0XFx0Z290byB1bmxvY2tfc3RhO1xcbiA1Nzg6XFx0XFxuIDU3OTpcXHRcXHRzcGluX2xvY2soXFx1MDAyNmNhY2hlLVxcdTAwM2V3YWxrX2xvY2spO1xcbiA1ODA6XFx0XFx0aWYgKChSRUFEX09OQ0UobXBhdGgtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IE1FU0hfUEFUSF9ERUxFVEVEKSB8fFxcbiA1ODE6XFx0XFx0ICAgIChtcHBhdGggXFx1MDAyNlxcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IE1FU0hfUEFUSF9ERUxFVEVEKSkpIHtcXG4gNTgyOlxcdFxcdFxcdGtmcmVlKGVudHJ5KTtcXG4gNTgzOlxcdFxcdFxcdGdvdG8gdW5sb2NrX2NhY2hlO1xcbiA1ODQ6XFx0XFx0fVxcbiA1ODU6XFx0XFxuIDU4NjpcXHRcXHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFxcdTAwMjZjYWNoZS1cXHUwMDNlcmh0LFxcbiA1ODc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZlbnRyeS1cXHUwMDNlcmhhc2gsXFxuIDU4ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgZmFzdF90eF9yaHRfcGFyYW1zKTtcXG4gNTg5OlxcdFxcdGlmIChJU19FUlIocHJldikpIHtcXG4gNTkwOlxcdFxcdFxcdGtmcmVlKGVudHJ5KTtcXG4gNTkxOlxcdFxcdFxcdGdvdG8gdW5sb2NrX2NhY2hlO1xcbiA1OTI6XFx0XFx0fVxcbiA1OTM6XFx0XFxuIDU5NDpcXHRcXHQvKlxcbiA1OTU6XFx0XFx0ICogcmVwbGFjZSBhbnkgcHJldmlvdXMgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUsIGluIGNhc2Ugd2UncmVcXG4gNTk2OlxcdFxcdCAqIHJlcGxhY2luZyBpdCB3aXRoIGEgZGlmZmVyZW50IHR5cGUgKGUuZy4gbXBhdGggLVxcdTAwM2UgbXBwKVxcbiA1OTc6XFx0XFx0ICovXFxuIDU5ODpcXHRcXHRpZiAodW5saWtlbHkocHJldikpIHtcXG4gNTk5OlxcdFxcdFxcdHJoYXNodGFibGVfcmVwbGFjZV9mYXN0KFxcdTAwMjZjYWNoZS1cXHUwMDNlcmh0LCBcXHUwMDI2cHJldi1cXHUwMDNlcmhhc2gsXFxuIDYwMDpcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2ZW50cnktXFx1MDAzZXJoYXNoLCBmYXN0X3R4X3JodF9wYXJhbXMpO1xcbiA2MDE6XFx0XFx0XFx0aGxpc3RfZGVsX3JjdShcXHUwMDI2cHJldi1cXHUwMDNld2Fsa19saXN0KTtcXG4gNjAyOlxcdFxcdFxcdGtmcmVlX3JjdShwcmV2LCBmYXN0X3R4LnJjdV9oZWFkKTtcXG4gNjAzOlxcdFxcdH1cXG4gNjA0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MDo1NC44NTE0MjE4NjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjAyODI1MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1lc2ggUGF0aCBUYWJsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0aCBkZWxldGlvbiBwcm9jZXNzLiBMZXQncyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBNeSBpbnN0aW5jdHMgYXJlIHRlbGxpbmcgbWUgdG8gbG9vayBhdCBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYF9fbWVzaF9wYXRoX2RlbGAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgaG93IHBhdGhzIGFyZSByZW1vdmVkIGZyb20gdGhlIG1lc2ggcGF0aCB0YWJsZSwgc28gaXQgc2hvdWxkIGJlIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGtleSBsb2dpYyBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byBwYXRoIG1hbmFnZW1lbnQgaGVyZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NzAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjU3LjQ1NDI0ODgwNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MDUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MDU6XFx0XFxuIDgwNjpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gODA3OlxcdFxcdG1wYXRoLVxcdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfUkVTT0xWSU5HIHwgTUVTSF9QQVRIX0RFTEVURUQ7XFxuIDgwODpcXHRcXHRtZXNoX2dhdGVfZGVsKHRibCwgbXBhdGgpO1xcbiA4MDk6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gODEwOlxcdFxcdHRpbWVyX3NodXRkb3duX3N5bmMoXFx1MDAyNm1wYXRoLVxcdTAwM2V0aW1lcik7XFxuIDgxMTpcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZzZGF0YS1cXHUwMDNldS5tZXNoLm1wYXRocyk7XFxuIDgxMjpcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZ0YmwtXFx1MDAzZWVudHJpZXMpO1xcbiA4MTM6XFx0XFx0bWVzaF9wYXRoX2ZsdXNoX3BlbmRpbmcobXBhdGgpO1xcbiA4MTQ6XFx0XFx0a2ZyZWVfcmN1KG1wYXRoLCByY3UpO1xcbiA4MTU6XFx0fVxcbiA4MTY6XFx0XFxuIDgxNzpcXHRzdGF0aWMgdm9pZCBfX21lc2hfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpXFxuIDgxODpcXHR7XFxuIDgxOTpcXHRcXHRobGlzdF9kZWxfcmN1KFxcdTAwMjZtcGF0aC1cXHUwMDNld2Fsa19saXN0KTtcXG4gODIwOlxcdFxcdHJoYXNodGFibGVfcmVtb3ZlX2Zhc3QoXFx1MDAyNnRibC1cXHUwMDNlcmhlYWQsIFxcdTAwMjZtcGF0aC1cXHUwMDNlcmhhc2gsIG1lc2hfcmh0X3BhcmFtcyk7XFxuIDgyMTpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gODIyOlxcdFxcdG1wYXRoLVxcdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfREVMRVRFRDtcXG4gODIzOlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZtcGF0aC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuIDgyNDpcXHRcXHRpZiAodGJsID09IFxcdTAwMjZtcGF0aC1cXHUwMDNlc2RhdGEtXFx1MDAzZXUubWVzaC5tcHBfcGF0aHMpXFxuIDgyNTpcXHRcXHRcXHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cXHUwMDNlc2RhdGEsIG1wYXRoLVxcdTAwM2Vkc3QpO1xcbiA4MjY6XFx0XFx0ZWxzZVxcbiA4Mjc6XFx0XFx0XFx0bWVzaF9mYXN0X3R4X2ZsdXNoX21wYXRoKG1wYXRoKTtcXG4gODI4OlxcdFxcdG1lc2hfcGF0aF9mcmVlX3JjdSh0YmwsIG1wYXRoKTtcXG4gODI5OlxcdH1cXG4gODMwOlxcdFxcbiA4MzE6XFx0LyoqXFxuIDgzMjpcXHQgKiBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCAtIERlbGV0ZXMgbWVzaCBwYXRocyBpZiB0aGVpciBuZXh0IGhvcCBtYXRjaGVzXFxuIDgzMzpcXHQgKlxcbiA4MzQ6XFx0ICogQHN0YTogbWVzaCBwZWVyIHRvIG1hdGNoXFxuIDgzNTpcXHQgKlxcbiA4MzY6XFx0ICogUkNVIG5vdGVzOiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgbWVzaCBwbGluayB0cmFuc2l0aW9ucyBmcm9tXFxuIDgzNzpcXHQgKiBQTElOS19FU1RBQiB0byBhbnkgb3RoZXIgc3RhdGUsIHNpbmNlIFBMSU5LX0VTVEFCIHN0YXRlIGlzIHRoZSBvbmx5IG9uZSB0aGF0XFxuIDgzODpcXHQgKiBhbGxvd3MgcGF0aCBjcmVhdGlvbi4gVGhpcyB3aWxsIGhhcHBlbiBiZWZvcmUgdGhlIHN0YSBjYW4gYmUgZnJlZWQgKGJlY2F1c2VcXG4gODM5OlxcdCAqIHN0YV9pbmZvX2Rlc3Ryb3koKSBjYWxscyB0aGlzKSBzbyBhbnkgcmVhZGVyIGluIGEgcmN1IHJlYWQgYmxvY2sgd2lsbCBiZVxcbiA4NDA6XFx0ICogcHJvdGVjdGVkIGFnYWluc3QgdGhlIHBsaW5rIGRpc2FwcGVhcmluZy5cXG4gODQxOlxcdCAqL1xcbiA4NDI6XFx0dm9pZCBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4gODQzOlxcdHtcXG4gODQ0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVxcdTAwM2VzZGF0YTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDA6NTcuNDU0MzMyMTY2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjExODc0MTc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSBmb3IgbWVzaF9wYXRodGJsLmMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgbWVzaF9wYXRodGJsLmNgIGlzIGJlaW5nIGNvbXBpbGVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRyaXZpbmcgdGhhdCBwcm9jZXNzLiBHaXZlbiB0aGF0IGl0J3MgcGFydCBvZiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3RhY2ssIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGNlbnRyYWwgYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlcyB3aXRoaW4gdGhhdCBhcmVhLiBUaGVyZWZvcmUsIEkgd2lsbCBpbW1lZGlhdGVseSBoZWFkIG92ZXIgdG8gYG5ldC9tYWM4MDIxMS9LY29uZmlnYCB0byBzdGFydCB3aXRoLCBhcyB0aGF0J3Mgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBmdW5jdGlvbmFsaXR5LiBBZnRlciB0aGF0LCBJIHdpbGwgYWxzbyBleGFtaW5lIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIHNlZSBob3cgdGhvc2Ugb3B0aW9ucyB0cmFuc2xhdGUgaW50byBidWlsZCBjb21tYW5kcyBhbmQgb2JqZWN0IGZpbGUgaW5jbHVzaW9uLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0J3MgcmVxdWlyZWQgaW4gdGhlIGJyb2FkZXIgc3lzdGVtIHRvIGVuYWJsZSB0aGUgY29tcGlsYXRpb24gb2YgYG1lc2hfcGF0aHRibC5jYC4gRnJvbSB0aGVyZSBJIHdpbGwgaW52ZXN0aWdhdGUgcmVsZXZhbnQga2VybmVsIHN5bWJvbHMgdG8gZXN0YWJsaXNoIHRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBtZXNoIHBhdGggdGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjU5LjU3MzA3NjA4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ1NjY3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZXNoX3BhdGh0YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9NYWtlZmlsZT00Nz1tYWM4MDIxMS0kKENPTkZJR19NQUM4MDIxMV9NRVNIKSArPSBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTQ4LVxcdG1lc2gubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjQ5OlxcdG1lc2hfcGF0aHRibC5vIFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNTAtXFx0bWVzaF9wbGluay5vIFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmM9MTc1Nz12b2lkIGllZWU4MDIxMV9tZXNoX2luaXRfc2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE3NzUtXFxubmV0L21hYzgwMjExL21lc2guYzoxNzc2OlxcdG1lc2hfcGF0aHRibF9pbml0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE3NzctXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE3OTA9dm9pZCBpZWVlODAyMTFfbWVzaF90ZWFyZG93bl9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc5Mi1cXHRtZXNoX3JtY19mcmVlKHNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5jOjE3OTM6XFx0bWVzaF9wYXRodGJsX3VucmVnaXN0ZXIoc2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc5NC19XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM1ND12b2lkIG1lc2hfcGF0aF90eF9wZW5kaW5nKHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oOjM1NTp2b2lkIG1lc2hfcGF0aHRibF9pbml0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oOjM1Njp2b2lkIG1lc2hfcGF0aHRibF91bnJlZ2lzdGVyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM1Ny1pbnQgbWVzaF9wYXRoX2RlbChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgY29uc3QgdTggKmFkZHIpO1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwNTY9dm9pZCBtZXNoX3BhdGhfZml4X25leHRob3Aoc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgsIHN0cnVjdCBzdGFfaW5mbyAqbmV4dF9ob3ApXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTA3My1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6MTA3NDp2b2lkIG1lc2hfcGF0aHRibF9pbml0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMDc1LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz0xMDk4PXZvaWQgbWVzaF9wYXRoX2V4cGlyZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMTAzLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzoxMTA0OnZvaWQgbWVzaF9wYXRodGJsX3VucmVnaXN0ZXIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTExMDUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MDo1OS42MjA1MzY2ODZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTMwODIwNDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1BQzgwMjExIE1lc2ggQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgODAyLjExIG1lc2ggbmV0d29ya2luZyB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgYWxtb3N0IGFsd2F5cyBsb2NhdGVkIHdpdGhpbiB0aGUgcmVsZXZhbnQgc3Vic3lzdGVtJ3MgZGlyZWN0b3J5LiBJJ20gbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGBNQUM4MDIxMV9NRVNIYCwgc28gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgYGNvbmZpZ2Agb3B0aW9uIGluIHRoZXJlLiBJdCBzaG91bGQgYmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgZWl0aGVyIGRpcmVjdGx5IGRlZmluZWQgb3IgcGVyaGFwcyBpbmNsdWRlZCBmcm9tIGFub3RoZXIgS2NvbmZpZyBmaWxlLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0J3Mgd2hhdC4gSG9wZWZ1bGx5LCBpdCdzIHdlbGwtZG9jdW1lbnRlZCB3aXRoIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBzZXR0aW5ncywgd2hpY2ggd291bGQgbWFrZSBteSBsaWZlIGVhc2llci5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk5MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjAyLjE1MTM1OTk2N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxNjEyNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUFDODAyMTFfTUVTSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWc9NjA9Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MjA5PWNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMS1cXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjEzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIyMj1jb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyNC1cXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIzNT1jb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNy1cXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzg6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjM5LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTAtXFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWc6MjUxOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1Mi1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MS1cXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjYzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWctMjcyLVxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzQtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlPTQxPW1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS00Ni1cXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6NDc6bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTUVTSCkgKz0gXFxcXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS00OC1cXHRtZXNoLm8gXFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTYxMz1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNzEwLVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVDpcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NzExOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9jZmcuYy03MTItXFx0XFx0aWYgKHNkYXRhLVxcdTAwM2V1Lm1lc2guc2VjdXJpdHkgIT0gSUVFRTgwMjExX01FU0hfU0VDX05PTkUpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjE5MD1zdGF0aWMgdm9pZCBzdGFfYXBwbHlfbWVzaF9wYXJhbXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE5My17XFxubmV0L21hYzgwMjExL2NmZy5jOjIxOTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL2NmZy5jLTIxOTUtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI3ODc9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODkzLVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyODk0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODk1LXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9tcGF0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ0Mjg9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2FmdGVyX2NzYV9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDUxLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NDUyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDUzLVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVDpcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00NTYzPXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9jc2FfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDY1NC1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDY1NTojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDY1Ni1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01OTc2PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTk2LVxcdC5kdW1wX3N1cnZleSA9IGllZWU4MDIxMV9kdW1wX3N1cnZleSxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTk5NzojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk5OC1cXHQuYWRkX21wYXRoID0gaWVlZTgwMjExX2FkZF9tcGF0aCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTUyLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjUzOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL2RlYnVnLmg6NTQ6I2RlZmluZSBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUcgMVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU1LSNlbHNlXFxubmV0L21hYzgwMjExL2RlYnVnLmg6NTY6I2RlZmluZSBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUcgMFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU3LSNlbmRpZlxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU4LVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjU5OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvZGVidWcuaDo2MDojZGVmaW5lIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHIDFcXG5uZXQvbWFjODAyMTEvZGVidWcuaC02MS0jZWxzZVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjYyOiNkZWZpbmUgTUFDODAyMTFfTUVTSF9DU0FfREVCVUcgMFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTYzLSNlbmRpZlxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTY0LVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjY1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjY2OiNkZWZpbmUgTUFDODAyMTFfTUVTSF9QU19ERUJVRyAxXFxubmV0L21hYzgwMjExL2RlYnVnLmgtNjctI2Vsc2VcXG5uZXQvbWFjODAyMTEvZGVidWcuaDo2ODojZGVmaW5lIE1BQzgwMjExX01FU0hfUFNfREVCVUcgMFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTY5LSNlbmRpZlxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmg9MTI1PWRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMTgtI2RlZmluZSBtc3luY19kYmcoc2RhdGEsIGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoyMTk6XFx0X3NkYXRhX2RiZyhNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUcsXFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTIyMC1cXHRcXHQgICBzZGF0YSwgZm10LCAjI19fVkFfQVJHU19fKVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMjIyLSNkZWZpbmUgbWNzYV9kYmcoc2RhdGEsIGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoyMjM6XFx0X3NkYXRhX2RiZyhNQUM4MDIxMV9NRVNIX0NTQV9ERUJVRyxcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMjI0LVxcdFxcdCAgIHNkYXRhLCBmbXQsICMjX19WQV9BUkdTX18pXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMjYtI2RlZmluZSBtcHNfZGJnKHNkYXRhLCBmbXQsIC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MjI3OlxcdF9zZGF0YV9kYmcoTUFDODAyMTFfTUVTSF9QU19ERUJVRyxcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMjI4LVxcdFxcdCAgIHNkYXRhLCBmbXQsICMjX19WQV9BUkdTX18pXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz03MzY9SUVFRTgwMjExX0lGX0xJTktfRklMRShhZGRyLCBjb25mLVxcdTAwM2VhZGRyLCBNQUMpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTczNy1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzo3Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtNzM5LUlFRUU4MDIxMV9JRl9GSUxFKGVzdGFiX3BsaW5rcywgdS5tZXNoLmVzdGFiX3BsaW5rcywgQVRPTUlDKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTg2OD1zdGF0aWMgdm9pZCBhZGRfaWJzc19maWxlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTg3Mi1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzo4NzM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtODc0LVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTM3PXN0YXRpYyB2b2lkIGFkZF9maWxlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTk0OS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6OTUwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTk1MS1cXHRcXHRhZGRfbWVzaF9maWxlcyhzZGF0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD03Nzk9c3RydWN0IGllZWU4MDIxMV9pZl9tZXNoIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTg1OS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo4NjA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtODYxLSNkZWZpbmUgSUVFRTgwMjExX0lGU1RBX01FU0hfQ1RSX0lOQyhtc2gsIG5hbWUpXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYz0xMTM3PWludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTEzOTItXFxubmV0L21hYzgwMjExL21haW4uYzoxMzkzOiNpZm5kZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTEzOTQtXFx0LyogbWVzaCBkZXBlbmRzIG9uIEtjb25maWcsIGJ1dCBkcml2ZXJzIHNob3VsZCBzZXQgaXQgaWYgdGhleSB3YW50ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM3OD12b2lkIG1lc2hfcGF0aF9yZWZyZXNoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2guaC0zODAtXFxubmV0L21hYzgwMjExL21lc2guaDozODE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL21lc2guaC0zODItc3RhdGljIGlubGluZVxcbi0tXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYz04MTA9aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTgzOS1cXHRcXHRcXHRuZWVkX29mZmNoYW4gPSB0cnVlO1xcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6ODQwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtODQxLVxcdFxcdGZhbGx0aHJvdWdoO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9Mjc5Mj1pZWVlODAyMTFfZGVsaXZlcl9za2Ioc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI4OTEtXFxubmV0L21hYzgwMjExL3J4LmM6Mjg5MjojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvcnguYy0yODkzLXN0YXRpYyBib29sXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0yOTU5PWllZWU4MDIxMV9yeF9tZXNoX2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjk2MS17XFxubmV0L21hYzgwMjExL3J4LmM6Mjk2MjojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvcnguYy0yOTYzLVxcdHN0cnVjdCBpZWVlODAyMTFfaWZfbWVzaCAqaWZtc2ggPSBcXHUwMDI2c2RhdGEtXFx1MDAzZXUubWVzaDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTQ2OD12b2lkIHN0YV9pbmZvX2ZyZWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNTA2LVxcdGtmcmVlKHJjdV9kZXJlZmVyZW5jZV9yYXcoc3RhLVxcdTAwM2VzdGEucmF0ZXMpKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo1MDc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNTA4LVxcdGtmcmVlKHN0YS1cXHUwMDNlbWVzaCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MzM9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTY2Ny1cXHR3aXBoeV93b3JrX2luaXQoXFx1MDAyNnN0YS1cXHUwMDNlYW1wZHVfbWxtZS53b3JrLCBpZWVlODAyMTFfYmFfc2Vzc2lvbl93b3JrKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo2Njg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNjY5LVxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21lc2goXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03OTUtXFx0c3RhX2luZm9fZnJlZV9saW5rKFxcdTAwMjZzdGEtXFx1MDAzZWRlZmxpbmspO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjc5NjojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03OTctXFx0a2ZyZWUoc3RhLVxcdTAwM2VtZXNoKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTExMDc9c3RhdGljIHZvaWQgX19zdGFfaW5mb19yZWNhbGNfdGltKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBib29sIGlnbm9yZV9wZW5kaW5nKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTEyMS1cXHRcXHRwcyA9IFxcdTAwMjZzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2Vic3MtXFx1MDAzZXBzO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjExMjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTEyMy1cXHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWVzaChcXHUwMDI2c3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSkge1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9Mjc0Mz1zdGF0aWMgaW5saW5lIHU2NCBzdGFfZ2V0X3N0YXRzX2J5dGVzKHN0cnVjdCBpZWVlODAyMTFfc3RhX3J4X3N0YXRzICpyeHN0YXRzKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMjc1NS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoyNzU2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTI3NTctc3RhdGljIHZvaWQgc3RhX3NldF9tZXNoX3NpbmZvKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzA3OT12b2lkIHN0YV9zZXRfc2luZm8oc3RydWN0IHN0YV9pbmZvICpzdGEsIHN0cnVjdCBzdGF0aW9uX2luZm8gKnNpbmZvLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzI2NC1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozMjY1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMyNjYtXFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWVzaChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD03MTU9c3RydWN0IHN0YV9pbmZvIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTczMi1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo3MzM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzM0LVxcdHN0cnVjdCBtZXNoX3N0YSAqbWVzaDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTgwMD1zdGF0aWMgaW5saW5lIGVudW0gbmw4MDIxMV9wbGlua19zdGF0ZSBzdGFfcGxpbmtfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODAxLXtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4MDI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODAzLVxcdHJldHVybiBzdGEtXFx1MDAzZW1lc2gtXFx1MDAzZXBsaW5rX3N0YXRlO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MjU0OT1zdGF0aWMgaW50IGllZWU4MDIxMV9sb29rdXBfcmFfc3RhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjU3My1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvdHguYzoyNTc0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS90eC5jLTI1NzUtXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOlxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MjY3Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNzc0LVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS90eC5jOjI3NzU6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3R4LmMtMjc3Ni1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zMDE5LVxcbm5ldC9tYWM4MDIxMS90eC5jOjMwMjA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3R4LmMtMzAyMS1cXHRpZiAobWVzaGhkcmxlbiBcXHUwMDNlIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjAyLjE5ODUyNTg2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMDg0NDU4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBNZXNoIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBLY29uZmlnLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZSBgTUFDODAyMTFfTUVTSGAgYW5kIGBNQUM4MDIxMWAgb3B0aW9ucyBhcmUgc3RydWN0dXJlZC4gTXkgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlci4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB3aGF0IGtpbmQgb2Ygc3VwcG9ydCB1c2VycyB3aWxsIGJlIGFibGUgdG8gZW5hYmxlIG9yIGRpc2FibGUgcmVsYXRlZCB0byBtZXNoIG5ldHdvcmtpbmcuIEFyZSB0aGUgbWVzaCBvcHRpb25zIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBNQUM4MDIxMSBjb3JlIGZ1bmN0aW9uYWxpdGllcz8gQXJlIHRoZXJlIGFueSBoaWRkZW4gaW1wbGljYXRpb25zIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHdpcmVsZXNzIGZlYXR1cmVzPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29uZGl0aW9uYWxzIGNhcmVmdWxseSB0byBmdWxseSBncmFzcCB0aGUgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxvZ2ljYWwgYW5kIHN1cHBvcnQgdGhlIGRlc2lyZWQgdXNlIGNhc2VzIGZvciBvdXIgbWVzaCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIGEgY2xlYW4gYW5kIGVmZmljaWVudCBrZXJuZWwgY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjA0LjQwNjk3NDg2M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1BQzgwMjExXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcXG4gICA4OlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0NDTVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxcbiAgMTQ6XFx0XFx0ICBuZXR3b3JraW5nIHN0YWNrLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb21tZW50IFxcXCJDRkc4MDIxMSBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBNQUM4MDIxMVxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBNQUM4MDIxMSAhPSBuXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG4gIDIyOlxcdFxcdGJvb2xcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxuICAyNTpcXHRcXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuICAyNjpcXHRcXHRzZWxlY3QgTUFDODAyMTFfSEFTX1JDXFxuICAyNzpcXHRcXHRkZWZhdWx0IHlcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgJ21pbnN0cmVsJyBUWCByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNob2ljZVxcbiAgMzI6XFx0XFx0cHJvbXB0IFxcXCJEZWZhdWx0IHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0hBU19SQ1xcbiAgMzQ6XFx0XFx0ZGVmYXVsdCBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFRoaXMgb3B0aW9uIHNlbGVjdHMgdGhlIGRlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcbiAgMzc6XFx0XFx0ICBtYWM4MDIxMSB3aWxsIHVzZS4gTm90ZSB0aGF0IHRoaXMgZGVmYXVsdCBjYW4gc3RpbGwgYmVcXG4gIDM4OlxcdFxcdCAgb3ZlcnJpZGRlbiB0aHJvdWdoIHRoZSBpZWVlODAyMTFfZGVmYXVsdF9yY19hbGdvIG1vZHVsZVxcbiAgMzk6XFx0XFx0ICBwYXJhbWV0ZXIgaWYgZGlmZmVyZW50IGFsZ29yaXRobXMgYXJlIGF2YWlsYWJsZS5cXG4gIDQwOlxcdFxcbiAgNDE6XFx0Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG4gIDQyOlxcdFxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbiAgNDM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbiAgNDQ6XFx0XFx0aGVscFxcbiAgNDU6XFx0XFx0ICBTZWxlY3QgTWluc3RyZWwgYXMgdGhlIGRlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFxuICA0ODpcXHRlbmRjaG9pY2VcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG4gIDUxOlxcdFxcdHN0cmluZ1xcbiAgNTI6XFx0XFx0ZGVmYXVsdCBcXFwibWluc3RyZWxfaHRcXFwiIGlmIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG4gIDUzOlxcdFxcdGRlZmF1bHQgXFxcIlxcXCJcXG4gIDU0OlxcdFxcbiAgNTU6XFx0ZW5kaWZcXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9IQVNfUkM9blxcbiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbiAgNjE6XFx0XFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgNjI6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgNjQ6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDY1OlxcdFxcdGhlbHBcXG4gIDY2OlxcdFxcdCAgRW5hYmxlIHRoaXMgb3B0aW9uIHRvIHRlc3QgbWFjODAyMTEgaW50ZXJuYWxzIHdpdGgga3VuaXQuXFxuICA2NzpcXHRcXG4gIDY4OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDY5OlxcdFxcbiAgNzA6XFx0Y29uZmlnIE1BQzgwMjExX01FU0hcXG4gIDcxOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4gIDcyOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDczOlxcdFxcdGhlbHBcXG4gIDc0OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGVuYWJsZSA4MDIuMTEgbWVzaCBvcGVyYXRpb24gaW4gbWFjODAyMTFcXG4gIDc1OlxcdFxcdCAgZHJpdmVycyB0aGF0IHN1cHBvcnQgaXQuICA4MDIuMTEgbWVzaCBjb25uZWN0cyBtdWx0aXBsZSBzdGF0aW9uc1xcbiAgNzY6XFx0XFx0ICBvdmVyIChwb3NzaWJseSBtdWx0aS1ob3ApIHdpcmVsZXNzIGxpbmtzIHRvIGZvcm0gYSBzaW5nbGUgbG9naWNhbFxcbiAgNzc6XFx0XFx0ICBMQU4uXFxuICA3ODpcXHRcXG4gIDc5OlxcdGNvbmZpZyBNQUM4MDIxMV9MRURTXFxuICA4MDpcXHRcXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MTowNC40MDcwNTIzMDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAxNTA2NzU1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBNQUM4MDIxMV9IV1NJTSoqXG5cblJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayBhbmQgbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIHdpdGggYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdoYXRldmVyIGlzIGhhcHBlbmluZyBpbiB0aGUgY3VycmVudCBzY2VuYXJpbyBkb2Vzbid0IGJ5cGFzcyB0aGlzLiBDcnVjaWFsbHksIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgc3ltYm9sIGlzIGFjdHVhbGx5IGRlZmluZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGRlZmluaXRpb24gaXMgZ29pbmcgdG8gYmUgdGhlIGtleSB0byBpbnRlcnByZXRpbmcgaXRzIGltcGFjdC4gSeKAmWxsIG5lZWQgdG8gdHJhY2UgaXQgdG8gaXRzIG9yaWdpbiB0byBzZWUgd2hhdCBpdCBjb250cm9scyBhbmQgd2hldGhlciBpdCdzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgaXNzdWUuIEEgcXVpY2sgc2VhcmNoIHNob3VsZCB0dXJuIHVwIHRoZSBzb3VyY2UgZmlsZS4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3IgaW5jbHVzaW9uIGxvZ2ljIGFuZCBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwMDIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjA2LjQyMjEyMzEwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNDU2NjQ5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFfSFdTSU1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MTowNy45NDY2OTQ3MTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDg3MDg2Mjk1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lc2ggUGF0aCBUYWJsZSBGaXgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgY29kZSBjaGFuZ2UuIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBmYXN0IFRYIGNhY2hlIGFuZCBtZXNoIHBhdGggZGVsZXRpb24gbWVjaGFuaXNtcyBpbiB0aGUgYG5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY2AgZmlsZS4gU3BlY2lmaWNhbGx5OlxuXG4xLiAgSW4gYG1lc2hfZmFzdF90eF9jYWNoZWAsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgdG8gc2VlIGlmIGEgbWVzaCBwYXRoIGVudHJ5IHNob3VsZCBiZSBhZGRlZC4gVGhlIGNoZWNrIHZlcmlmaWVzIGlmIHRoZSBwYXRoIGlzIGRlbGV0ZWQgYnkgbG9va2luZyBhdCB0aGUgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFnIG9uIGBtcGF0aGAgb3IgYG1wcGF0aGAuIElmIGl0J3Mgc2V0LCB0aGUgaW5zZXJ0aW9uIGlzIGFib3J0ZWQsIGFuZCB0aGUgZW50cnkgaXMgZnJlZWQuXG4yLiAgYF9fbWVzaF9wYXRoX2RlbGAgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIGBNRVNIX1BBVEhfREVMRVRFRGAgZmxhZyBvbiB0aGUgYG1wYXRoYCB1bmRlciB0aGUgYG1wYXRoLVx1MDAzZXN0YXRlX2xvY2tgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHN5bmNocm9uaXphdGlvbiBwcmFjdGljZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIGZ1enphYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3Igc3l6a2FsbGVyPyBBYnNvbHV0ZWx5LCBpdCBpcyEgR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IGBtYWM4MDIxMV9od3NpbWAgYW5kIHRoZSBjZmc4MDIxMS9ubDgwMjExIGludGVyZmFjZXMgY2FuIGJlIGxldmVyYWdlZCB0byBjcmVhdGUgbWVzaCBwb2ludHMgKGBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UYCksIGVzdGFibGlzaCBsaW5rcywgYWRkL2RlbGV0ZSBwYXRocyAoYE5MODAyMTFfQ01EX05FV19NUEFUSGAsIGBOTDgwMjExX0NNRF9ERUxfTVBBVEhgLCBgTkw4MDIxMV9DTURfU0VUX01QQVRIYCksIGFuZCBzZW5kIGZyYW1lcy4gU3l6a2FsbGVyJ3MgZXhpc3RpbmcgY292ZXJhZ2Ugb2YgYG1hYzgwMjExYCBhbmQgYG5sODAyMTFgIGlzIGFsc28gYSBodWdlIGFkdmFudGFnZS5cblxuR2l2ZW4gdGhlIG1vZGlmaWNhdGlvbnMgdG8gc3luY2hyb25pemF0aW9uLCBsaWZldGltZSBtYW5hZ2VtZW50LCBhbmQgc3RhdGUgaGFuZGxpbmcgaW4gdGhlIHBhdGggcm91dGluZyBhbmQgY2FjaGluZywgc3BlY2lmaWNhbGx5IGltcGFjdGluZyBgbWVzaF9mYXN0X3R4X2NhY2hlYCBhbmQgYF9fbWVzaF9wYXRoX2RlbGAsIHRoaXMgaXMgZGVmaW5pdGVseSBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBgbWFjODAyMTFfaHdzaW1gLCBvciB2aXJ0dWFsIFdpLUZpIGludGVyZmFjZXMsIGV4cGFuZGluZyB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBmb2N1cyBzeW1ib2xzLiBJIHNlZSB3ZSBoYXZlIHR3byBrZXkgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZDogYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLlxuXG5JJ2xsIG5vdyBpbnZlc3RpZ2F0ZSBwb3RlbnRpYWwgY2FsbGVyIGZ1bmN0aW9ucyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2FtZSBmaWxlLCBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYC4gSXQncyBjcnVjaWFsIHRvIG1hcCB0aGUgY2FsbCBncmFwaCB0byBpZGVudGlmeSBhbnkgY3JpdGljYWwgZW50cnkgcG9pbnRzIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzA3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjEyLjgxNzU1OTU3NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkyNDYyMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVzaF9mYXN0X3R4X2NhY2hlfF9fbWVzaF9wYXRoX2RlbHxtZXNoX3BhdGhfZGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9MjkyMz1zdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfbXBhdGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yOTI4LVxcdGlmIChkc3QpXFxubmV0L21hYzgwMjExL2NmZy5jOjI5Mjk6XFx0XFx0cmV0dXJuIG1lc2hfcGF0aF9kZWwoc2RhdGEsIGRzdCk7XFxubmV0L21hYzgwMjExL2NmZy5jLTI5MzAtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM1Nj12b2lkIG1lc2hfcGF0aHRibF91bnJlZ2lzdGVyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oOjM1NzppbnQgbWVzaF9wYXRoX2RlbChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgY29uc3QgdTggKmFkZHIpO1xcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzU4LXZvaWQgbWVzaF9wYXRoX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmg9MzY4PWJvb2wgaWVlZTgwMjExX21lc2hfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzY5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBjdHJsX2ZsYWdzKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oOjM3MDp2b2lkIG1lc2hfZmFzdF90eF9jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM3MS1cXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9od21wLmM9MTI1OD1pbnQgbWVzaF9uZXh0aG9wX2xvb2t1cChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX2h3bXAuYy0xMjgyLVxcdFxcdGlmIChpZWVlODAyMTFfaHdfY2hlY2soXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlaHcsIFNVUFBPUlRfRkFTVF9YTUlUKSlcXG5uZXQvbWFjODAyMTEvbWVzaF9od21wLmM6MTI4MzpcXHRcXHRcXHRtZXNoX2Zhc3RfdHhfY2FjaGUoc2RhdGEsIHNrYiwgbXBhdGgpO1xcbm5ldC9tYWM4MDIxMS9tZXNoX2h3bXAuYy0xMjg0LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTQzND1tZXNoX2Zhc3RfdHhfZ2V0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTQ2Mi1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NDYzOnZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy00NjQtXFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9ODAxPXN0YXRpYyB2b2lkIG1lc2hfcGF0aF9mcmVlX3JjdShzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTgxNi1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6ODE3OnN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtODE4LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz04NDI9dm9pZCBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy04NTEtXFx0XFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihtcGF0aC1cXHUwMDNlbmV4dF9ob3ApID09IHN0YSlcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6ODUyOlxcdFxcdFxcdF9fbWVzaF9wYXRoX2RlbCh0YmwsIG1wYXRoKTtcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtODUzLVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz04NTc9c3RhdGljIHZvaWQgbXBwX2ZsdXNoX2J5X3Byb3h5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg2Ni1cXHRcXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChtcGF0aC1cXHUwMDNlbXBwLCBwcm94eSkpXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjg2NzpcXHRcXHRcXHRfX21lc2hfcGF0aF9kZWwodGJsLCBtcGF0aCk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg2OC1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9ODcyPXN0YXRpYyB2b2lkIHRhYmxlX2ZsdXNoX2J5X2lmYWNlKHN0cnVjdCBtZXNoX3RhYmxlICp0YmwpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtODc4LVxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobXBhdGgsIG4sIFxcdTAwMjZ0YmwtXFx1MDAzZXdhbGtfaGVhZCwgd2Fsa19saXN0KSB7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjg3OTpcXHRcXHRfX21lc2hfcGF0aF9kZWwodGJsLCBtcGF0aCk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg4MC1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9OTA2PXN0YXRpYyBpbnQgdGFibGVfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy05MTgtXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjkxOTpcXHRfX21lc2hfcGF0aF9kZWwodGJsLCBtcGF0aCk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTkyMC1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2dGJsLVxcdTAwM2V3YWxrX2xvY2spO1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTkyNS0vKipcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6OTI2OiAqIG1lc2hfcGF0aF9kZWwgLSBkZWxldGUgYSBtZXNoIHBhdGggZnJvbSB0aGUgdGFibGVcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTI3LSAqXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTMyLSAqL1xcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo5MzM6aW50IG1lc2hfcGF0aF9kZWwoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGNvbnN0IHU4ICphZGRyKVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy05MzQte1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwODI9dm9pZCBtZXNoX3BhdGhfdGJsX2V4cGlyZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMDkyLVxcdFxcdCAgICAgdGltZV9hZnRlcihqaWZmaWVzLCBtcGF0aC1cXHUwMDNlZXhwX3RpbWUgKyBNRVNIX1BBVEhfRVhQSVJFKSlcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6MTA5MzpcXHRcXHRcXHRfX21lc2hfcGF0aF9kZWwodGJsLCBtcGF0aCk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTEwOTQtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MjY3Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNzk3LVxcdFxcdFxcdGlmIChtcHBhdGggXFx1MDAyNlxcdTAwMjYgbXBhdGgpXFxubmV0L21hYzgwMjExL3R4LmM6Mjc5ODpcXHRcXHRcXHRcXHRtZXNoX3BhdGhfZGVsKHNkYXRhLCBtcGF0aC1cXHUwMDNlZHN0KTtcXG5uZXQvbWFjODAyMTEvdHguYy0yNzk5LVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDE6MTIuODY2ODEwMDA3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzNTAxNTg0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTWVzaCBQYXRoIFRhYmxlIGFuZCBGYXN0IFRYIENhY2hpbmcgaW4gbWFjODAyMTEqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIHdhbnRlZCB0byBjb25maXJtIHdoZXRoZXIgY2VydGFpbiBmdW5jdGlvbnMgYXJlIHN0YXRpYyBvciBnbG9iYWwuIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgZnVuY3Rpb25zLiBJIHNlZSB0aGF0IGBtZXNoX2Zhc3RfdHhfY2FjaGVgIGlzIGEgZ2xvYmFsIHN5bWJvbCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQsIGdpdmVuIGl0cyB1c2Ugd2l0aGluIHRoZSBzeXN0ZW0uICBgX19tZXNoX3BhdGhfZGVsYCwgaG93ZXZlciwgaXMgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5Ob3csIGxldCdzIHRyYWNrIHdoZXJlIGBfX21lc2hfcGF0aF9kZWxgIGlzIGFjdHVhbGx5ICpjYWxsZWQqIGZyb20uIEkndmUgaWRlbnRpZmllZCBzZXZlcmFsIGVudHJ5IHBvaW50cyBpbiBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYDogYG1lc2hfcGF0aF9kZWxgLCBgbWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3BgLCBhbmQgYG1lc2hfcGF0aF90YmxfZXhwaXJlYC4gIEkgYWxzbyBzZWUgaXQncyBjYWxsZWQgZnJvbSBgaWVlZTgwMjExX2RlbF9tcGF0aGAgaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AuICBBbHNvIGBtZXNoX25leHRob3BfbG9va3VwYCBpbiBgbmV0L21hYzgwMjExL21lc2hfaHdtcC5jYCBjYWxscyBgbWVzaF9mYXN0X3R4X2NhY2hlYC5cblxuSSdtIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiBgbWVzaF9wYXRoX2RlbGAgYW5kIGBtZXNoX2Zhc3RfdHhfY2FjaGVgIG5vdywgYW5kIGhvdyB0aGV5IGludGVyYWN0LlxuXG5OZXh0LCBJIG5lZWQgdG8gZGVmaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyB3b3JrLiBUaGlzIHJlcXVpcmVzIGBNQUM4MDIxMWAsIGBNQUM4MDIxMV9NRVNIYCwgYW5kIGBDRkc4MDIxMWAgZW5hYmxlZC4gRm9yIHRlc3RpbmcsIGBNQUM4MDIxMV9IV1NJTWAgY291bGQgYmUgYSBoZWxwZnVsIG9wdGlvbmFsIGRyaXZlci5cblxuTm93IHRvIHZlcmlmeSB0aGUgcHJvcG9zZWQgYHNldC1yZXN1bHRzYCBjb25maWd1cmF0aW9uLiAgV2UgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIHNob3VsZCBjb3JyZWN0bHkgaW5jbHVkZSBgTUFDODAyMTFgLCBgTUFDODAyMTFfTUVTSGAsIGFuZCBgQ0ZHODAyMTFgLiBUaGUgYEZvY3VzU3ltYm9sc2AgbGlzdCBzaG91bGQgY29udGFpbiAgYG1lc2hfZmFzdF90eF9jYWNoZWAsIGBtZXNoX3BhdGhfZGVsYCwgYG1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wYCwgYW5kIGBtZXNoX3BhdGhfdGJsX2V4cGlyZWAsIGFzIHRoZSBrZXkgc3ltYm9scyBmb3IgZXhwbG9yYXRpb24uIChhbHRlcm5hdGl2ZWx5IHVzaW5nIGBtZXNoX25leHRob3BfbG9va3VwYCBpcyBhY2NlcHRhYmxlKS4gIEZpbmFsbHksIHRoZSBgUmVhc29uaW5nYCBzaG91bGQgY29uY2lzZWx5IGV4cGxhaW4gKndoeSogdGhpcyBpcyB3b3J0aCBmdXp6aW5nOiBpbiBicmllZiwgaXQgY29uY2VybnMgYSBmaXggdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgb3IgdGhlIHVzZSBvZiBhIGRlbGV0ZWQgbWVzaCBwYXRoIGluIHRoZSBmYXN0IFRYIGNhY2hlIGJ5IGNoZWNraW5nIGFuZCBzZXR0aW5nIHRoZSBgTUVTSF9QQVRIX0RFTEVURURgIGZsYWcuICBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nLlxuXG5Pa2F5LCBldmVyeXRoaW5nIGNoZWNrcyBvdXQuICBJJ20gc2F0aXNmaWVkIHdpdGggdGhlIGFuYWx5c2lzLCBhbmQgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzM3MSwiT3V0cHV0VG9rZW5zIjoxOTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDE6MTkuMjE2OTcxMzkyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5MzQzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9NRVNIXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1lc2hfZmFzdF90eF9jYWNoZVwiLFxuICAgIFwibWVzaF9wYXRoX2RlbFwiLFxuICAgIFwibWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3BcIixcbiAgICBcIm1lc2hfcGF0aF90YmxfZXhwaXJlXCIsXG4gICAgXCJtZXNoX25leHRob3BfbG9va3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3luY2hyb25pemF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWVzaCBwYXRocyBpbiBtYWM4MDIxMSwgc2V0dGluZyB0aGUgTUVTSF9QQVRIX0RFTEVURUQgZmxhZyBpbiBfX21lc2hfcGF0aF9kZWwoKSBhbmQgY2hlY2tpbmcgZm9yIGl0IHVuZGVyIGxvY2sgaW4gbWVzaF9mYXN0X3R4X2NhY2hlKCkgdG8gcHJldmVudCBjYWNoaW5nIGRlbGV0ZWQgcGF0aHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG1lc2ggaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfTUVTSFwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZXNoX2Zhc3RfdHhfY2FjaGVcIixcbiAgICBcIm1lc2hfcGF0aF9kZWxcIixcbiAgICBcIm1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wXCIsXG4gICAgXCJtZXNoX3BhdGhfdGJsX2V4cGlyZVwiLFxuICAgIFwibWVzaF9uZXh0aG9wX2xvb2t1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN5bmNocm9uaXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1lc2ggcGF0aHMgaW4gbWFjODAyMTEsIHNldHRpbmcgdGhlIE1FU0hfUEFUSF9ERUxFVEVEIGZsYWcgaW4gX19tZXNoX3BhdGhfZGVsKCkgYW5kIGNoZWNraW5nIGZvciBpdCB1bmRlciBsb2NrIGluIG1lc2hfZmFzdF90eF9jYWNoZSgpIHRvIHByZXZlbnQgY2FjaGluZyBkZWxldGVkIHBhdGhzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBtZXNoIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjE5LjI5NDkxMDc3OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4Mzk1MTA5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MToxOS4yOTU0Mjg3NDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxNzgzODk4ODgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVzb2x2ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBtYWM4MDIxMSBtZXNoIHBhdGggbWFuYWdlbWVudCB3aGVyZSBhIG1lc2ggcGF0aCBtYXJrZWQgZm9yIGRlbGV0aW9uIGNvdWxkIGJlIGluc2VydGVkIGludG8gdGhlIGZhc3QgVFggY2FjaGUgYWZ0ZXIgdGhlIGNhY2hlIGZsdXNoLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikuIFRoZSBmaXggc2V0cyBgTUVTSF9QQVRIX0RFTEVURURgIHVuZGVyIGxvY2sgaW4gYF9fbWVzaF9wYXRoX2RlbCgpYCBhbmQgY2hlY2tzIGZvciB0aGlzIGZsYWcgYmVmb3JlIGluc2VydGluZyBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGluIGBtZXNoX2Zhc3RfdHhfY2FjaGUoKWAuIFxcblxcblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBvYmplY3QgbGlmZXRpbWUgYW5kIGNvbmN1cnJlbmN5IChVQUYpIGlzc3VlcyB3aGljaCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vciBkb2VzIGl0IGFmZmVjdCB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3Igc3RydWN0IHBhZGRpbmcuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU4YTdmMmNkZmE0ZDk0YzgxZmQxMmJjNTk3NGU5YTA3NzFjYmVlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA3OjQwOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jIGIvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG5pbmRleCAwMzE3MWNmMDA4NTU3Li5kZmNjNGYzYTcwODhlIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG4rKysgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNcbkBAIC01NzcsNiArNTc3LDEyIEBAIHZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRnb3RvIHVubG9ja19zdGE7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2Y2FjaGUtXHUwMDNld2Fsa19sb2NrKTtcbitcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4rXHQgICAgKG1wcGF0aCBcdTAwMjZcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XG4rXHRcdGtmcmVlKGVudHJ5KTtcbitcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4rXHR9XG4rXG4gXHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFx1MDAyNmNhY2hlLVx1MDAzZXJodCxcbiBcdFx0XHRcdFx0XHQgXHUwMDI2ZW50cnktXHUwMDNlcmhhc2gsXG4gXHRcdFx0XHRcdFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XG5AQCAtODEyLDYgKzgxOCw5IEBAIHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcbiB7XG4gXHRobGlzdF9kZWxfcmN1KFx1MDAyNm1wYXRoLVx1MDAzZXdhbGtfbGlzdCk7XG4gXHRyaGFzaHRhYmxlX3JlbW92ZV9mYXN0KFx1MDAyNnRibC1cdTAwM2VyaGVhZCwgXHUwMDI2bXBhdGgtXHUwMDNlcmhhc2gsIG1lc2hfcmh0X3BhcmFtcyk7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4rXHRtcGF0aC1cdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfREVMRVRFRDtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0aWYgKHRibCA9PSBcdTAwMjZtcGF0aC1cdTAwM2VzZGF0YS1cdTAwM2V1Lm1lc2gubXBwX3BhdGhzKVxuIFx0XHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cdTAwM2VzZGF0YSwgbXBhdGgtXHUwMDNlZHN0KTtcbiBcdGVsc2VcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjE5LjI5NTQyOTU2OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NDM3MDI5NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgTWVzaCBQYXRoIFRhYmxlKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGJlaW5nIGNoYW5nZWQgYW5kIHdoeS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgc28gSSdtIGxldmVyYWdpbmcgdGhlIGNvZGUgc2VhcmNoIHRvb2xzIHRvIGV4cGxvcmUgdGhlIGNvbnRleHQgb2YgdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHNlZSB3aGF0IGludGVyYWN0cyB3aXRoIHRoZSBhcmVhcyBiZWluZyBtb2RpZmllZC5cblxuTm93LCBJJ20gZ29pbmcgdG8gZGVsdmUgaW50byBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCDigJMgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lcyA1NzcgYW5kIDgxMi4gVGhvc2UgbGlrZWx5IHJlcHJlc2VudCB0aGUgY29yZSBsb2NhdGlvbnMgb2YgdGhlIGNoYW5nZXMsIG9yIGF0IGxlYXN0IHRoZSBhcmVhcyBtb3N0IGRpcmVjdGx5IGltcGFjdGVkIGJ5IHRoZW0uIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIExldCdzIHNlZSB3aGF0IHRoZSBtZXNoIHBhdGggdGFibGUgaXMgZG9pbmcgYW5kIGhvdyB0aGUgbW9kaWZpY2F0aW9ucyBhZmZlY3QgaXRzIGZ1bmN0aW9uYWxpdHkuIEknbSBsb29raW5nIGZvciB0aGUgbG9naWMgb2YgdGhlIHJvdXRpbmcgZGVjaXNpb25zIGluIHRoZSBtZXNoIG5ldHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjAsIk91dHB1dFRva2VucyI6ODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjI0LjczMjQ2MjE2MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU2MDpcXHRcXHRidWlsZC5mYXN0X3R4LmRhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjMpO1xcbiA1NjE6XFx0XFx0YnVpbGQuZmFzdF90eC5zYV9vZmZzID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9oZHIsIGFkZHI0KTtcXG4gNTYyOlxcdFxcdGJ1aWxkLm1wYXRoID0gbXBhdGg7XFxuIDU2MzpcXHRcXHRtZW1jcHkoYnVpbGQuaGRyLCBtZXNoaGRyLCBidWlsZC5oZHJsZW4pO1xcbiA1NjQ6XFx0XFx0bWVtY3B5KGJ1aWxkLmhkciArIGJ1aWxkLmhkcmxlbiwgcmZjMTA0Ml9oZWFkZXIsIHNpemVvZihyZmMxMDQyX2hlYWRlcikpO1xcbiA1NjU6XFx0XFx0YnVpbGQuaGRybGVuICs9IHNpemVvZihyZmMxMDQyX2hlYWRlcik7XFxuIDU2NjpcXHRcXHRtZW1jcHkoYnVpbGQuZmFzdF90eC5oZHIsIGhkciwgYnVpbGQuZmFzdF90eC5oZHJfbGVuKTtcXG4gNTY3OlxcdFxcbiA1Njg6XFx0XFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopYnVpbGQuZmFzdF90eC5oZHI7XFxuIDU2OTpcXHRcXHRpZiAoYnVpbGQuZmFzdF90eC5rZXkpXFxuIDU3MDpcXHRcXHRcXHRoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wgfD0gY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTtcXG4gNTcxOlxcdFxcbiA1NzI6XFx0XFx0cWMgPSBpZWVlODAyMTFfZ2V0X3Fvc19jdGwoaGRyKTtcXG4gNTczOlxcdFxcdHFjWzFdIHw9IElFRUU4MDIxMV9RT1NfQ1RMX01FU0hfQ09OVFJPTF9QUkVTRU5UIFxcdTAwM2VcXHUwMDNlIDg7XFxuIDU3NDpcXHRcXG4gNTc1OlxcdFxcdGVudHJ5ID0ga21lbWR1cChcXHUwMDI2YnVpbGQsIHNpemVvZihidWlsZCksIEdGUF9BVE9NSUMpO1xcbiA1NzY6XFx0XFx0aWYgKCFlbnRyeSlcXG4gNTc3OlxcdFxcdFxcdGdvdG8gdW5sb2NrX3N0YTtcXG4gNTc4OlxcdFxcbiA1Nzk6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZjYWNoZS1cXHUwMDNld2Fsa19sb2NrKTtcXG4gNTgwOlxcdFxcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVxcdTAwM2VmbGFncykgXFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkgfHxcXG4gNTgxOlxcdFxcdCAgICAobXBwYXRoIFxcdTAwMjZcXHUwMDI2IChSRUFEX09OQ0UobXBwYXRoLVxcdTAwM2VmbGFncykgXFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XFxuIDU4MjpcXHRcXHRcXHRrZnJlZShlbnRyeSk7XFxuIDU4MzpcXHRcXHRcXHRnb3RvIHVubG9ja19jYWNoZTtcXG4gNTg0OlxcdFxcdH1cXG4gNTg1OlxcdFxcbiA1ODY6XFx0XFx0cHJldiA9IHJoYXNodGFibGVfbG9va3VwX2dldF9pbnNlcnRfZmFzdChcXHUwMDI2Y2FjaGUtXFx1MDAzZXJodCxcXG4gNTg3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2ZW50cnktXFx1MDAzZXJoYXNoLFxcbiA1ODg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XFxuIDU4OTpcXHRcXHRpZiAoSVNfRVJSKHByZXYpKSB7XFxuIDU5MDpcXHRcXHRcXHRrZnJlZShlbnRyeSk7XFxuIDU5MTpcXHRcXHRcXHRnb3RvIHVubG9ja19jYWNoZTtcXG4gNTkyOlxcdFxcdH1cXG4gNTkzOlxcdFxcbiA1OTQ6XFx0XFx0LypcXG4gNTk1OlxcdFxcdCAqIHJlcGxhY2UgYW55IHByZXZpb3VzIGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlLCBpbiBjYXNlIHdlJ3JlXFxuIDU5NjpcXHRcXHQgKiByZXBsYWNpbmcgaXQgd2l0aCBhIGRpZmZlcmVudCB0eXBlIChlLmcuIG1wYXRoIC1cXHUwMDNlIG1wcClcXG4gNTk3OlxcdFxcdCAqL1xcbiA1OTg6XFx0XFx0aWYgKHVubGlrZWx5KHByZXYpKSB7XFxuIDU5OTpcXHRcXHRcXHRyaGFzaHRhYmxlX3JlcGxhY2VfZmFzdChcXHUwMDI2Y2FjaGUtXFx1MDAzZXJodCwgXFx1MDAyNnByZXYtXFx1MDAzZXJoYXNoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MToyNC43MzI2MjU0NTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgwMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDgwMDpcXHRcXG4gODAxOlxcdHN0YXRpYyB2b2lkIG1lc2hfcGF0aF9mcmVlX3JjdShzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLFxcbiA4MDI6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxcbiA4MDM6XFx0e1xcbiA4MDQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBtcGF0aC1cXHUwMDNlc2RhdGE7XFxuIDgwNTpcXHRcXG4gODA2OlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bXBhdGgtXFx1MDAzZXN0YXRlX2xvY2spO1xcbiA4MDc6XFx0XFx0bXBhdGgtXFx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9SRVNPTFZJTkcgfCBNRVNIX1BBVEhfREVMRVRFRDtcXG4gODA4OlxcdFxcdG1lc2hfZ2F0ZV9kZWwodGJsLCBtcGF0aCk7XFxuIDgwOTpcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bXBhdGgtXFx1MDAzZXN0YXRlX2xvY2spO1xcbiA4MTA6XFx0XFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2bXBhdGgtXFx1MDAzZXRpbWVyKTtcXG4gODExOlxcdFxcdGF0b21pY19kZWMoXFx1MDAyNnNkYXRhLVxcdTAwM2V1Lm1lc2gubXBhdGhzKTtcXG4gODEyOlxcdFxcdGF0b21pY19kZWMoXFx1MDAyNnRibC1cXHUwMDNlZW50cmllcyk7XFxuIDgxMzpcXHRcXHRtZXNoX3BhdGhfZmx1c2hfcGVuZGluZyhtcGF0aCk7XFxuIDgxNDpcXHRcXHRrZnJlZV9yY3UobXBhdGgsIHJjdSk7XFxuIDgxNTpcXHR9XFxuIDgxNjpcXHRcXG4gODE3OlxcdHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcXG4gODE4OlxcdHtcXG4gODE5OlxcdFxcdGhsaXN0X2RlbF9yY3UoXFx1MDAyNm1wYXRoLVxcdTAwM2V3YWxrX2xpc3QpO1xcbiA4MjA6XFx0XFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcXHUwMDI2dGJsLVxcdTAwM2VyaGVhZCwgXFx1MDAyNm1wYXRoLVxcdTAwM2VyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTtcXG4gODIxOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bXBhdGgtXFx1MDAzZXN0YXRlX2xvY2spO1xcbiA4MjI6XFx0XFx0bXBhdGgtXFx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9ERUxFVEVEO1xcbiA4MjM6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gODI0OlxcdFxcdGlmICh0YmwgPT0gXFx1MDAyNm1wYXRoLVxcdTAwM2VzZGF0YS1cXHUwMDNldS5tZXNoLm1wcF9wYXRocylcXG4gODI1OlxcdFxcdFxcdG1lc2hfZmFzdF90eF9mbHVzaF9hZGRyKG1wYXRoLVxcdTAwM2VzZGF0YSwgbXBhdGgtXFx1MDAzZWRzdCk7XFxuIDgyNjpcXHRcXHRlbHNlXFxuIDgyNzpcXHRcXHRcXHRtZXNoX2Zhc3RfdHhfZmx1c2hfbXBhdGgobXBhdGgpO1xcbiA4Mjg6XFx0XFx0bWVzaF9wYXRoX2ZyZWVfcmN1KHRibCwgbXBhdGgpO1xcbiA4Mjk6XFx0fVxcbiA4MzA6XFx0XFxuIDgzMTpcXHQvKipcXG4gODMyOlxcdCAqIG1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wIC0gRGVsZXRlcyBtZXNoIHBhdGhzIGlmIHRoZWlyIG5leHQgaG9wIG1hdGNoZXNcXG4gODMzOlxcdCAqXFxuIDgzNDpcXHQgKiBAc3RhOiBtZXNoIHBlZXIgdG8gbWF0Y2hcXG4gODM1OlxcdCAqXFxuIDgzNjpcXHQgKiBSQ1Ugbm90ZXM6IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYSBtZXNoIHBsaW5rIHRyYW5zaXRpb25zIGZyb21cXG4gODM3OlxcdCAqIFBMSU5LX0VTVEFCIHRvIGFueSBvdGhlciBzdGF0ZSwgc2luY2UgUExJTktfRVNUQUIgc3RhdGUgaXMgdGhlIG9ubHkgb25lIHRoYXRcXG4gODM4OlxcdCAqIGFsbG93cyBwYXRoIGNyZWF0aW9uLiBUaGlzIHdpbGwgaGFwcGVuIGJlZm9yZSB0aGUgc3RhIGNhbiBiZSBmcmVlZCAoYmVjYXVzZVxcbiA4Mzk6XFx0ICogc3RhX2luZm9fZGVzdHJveSgpIGNhbGxzIHRoaXMpIHNvIGFueSByZWFkZXIgaW4gYSByY3UgcmVhZCBibG9jayB3aWxsIGJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjI0LjczMjcwMjUxMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzI3NTUxMzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVzZS1BZnRlci1GcmVlIENvbmN1cnJlbmN5IEZpeCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgbG9naWMuIEl0IGxvb2tzIGxpa2UgaW4gYF9fbWVzaF9wYXRoX2RlbGAsIHdlJ3JlIHNldHRpbmcgYG1wYXRoLVx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9ERUxFVEVEYCAqYmVmb3JlKiBmbHVzaGluZyB0aGUgZmFzdCBUWCBjYWNoZSBhbmQgZnJlZWluZyB0aGUgbWVtb3J5LiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIGluIGBtZXNoX2Zhc3RfdHhfY2FjaGVgLiBJdCdzIGNoZWNraW5nIGBSRUFEX09OQ0UobXBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRGAgKGFuZCBhIHNpbWlsYXIgY2hlY2sgZm9yIGBtcHBhdGhgKSB1bmRlciBhIHNwaW5sb2NrLiBJZiB0aGUgcGF0aCBpcyBtYXJrZWQgZGVsZXRlZCwgaXQgYmFpbHMgb3V0LCBhdm9pZGluZyBhZGRpbmcgYSBzdGFsZSBlbnRyeSB0byB0aGUgY2FjaGUuXG5cbkFoLCBJIHNlZS4gVGhpcyBpcyBhIGNsYXNzaWMgY29uY3VycmVuY3kgYnVnIGZpeDogYSB1c2UtYWZ0ZXItZnJlZSByYWNlIGNvbmRpdGlvbi4gVGhlIHNjZW5hcmlvIHdhcyB0aGF0IGBtZXNoX2Zhc3RfdHhfY2FjaGVgIGNvdWxkIGFkZCBhbiBlbnRyeSBwb2ludGluZyB0byBhIGBtcGF0aGAgKG9yIGBtcHBhdGhgKSAqYWZ0ZXIqIGBfX21lc2hfcGF0aF9kZWxgIGZsdXNoZWQgdGhlIGNhY2hlIGFuZCBmcmVlZCB0aGUgbWVtb3J5LCByZXN1bHRpbmcgaW4gYSBVQUYgd2hlbiBgbWVzaF9wYXRoX2ZyZWVfcmN1YCB3YXMgY2FsbGVkLiBTZXR0aW5nIHRoZSBgTUVTSF9QQVRIX0RFTEVURURgIGZsYWcgYmVmb3JlIGZyZWVpbmcgYW5kIGNoZWNraW5nIGl0IGluIHRoZSBjYWNoZSBlbnN1cmVzIHRoYXQgbm8gc3RhbGUgZW50cmllcyBhcmUgYWRkZWQgdG8gdGhlIGNhY2hlLCB0aHVzIHByZXZlbnRpbmcgdGhlIFVBRi4gQ2xldmVyLlxuXG5Ob3csIGxldCdzIGRvIGEgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiBhbnl0aGluZyBlbHNlIGlzIGdvaW5nIG9uLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLlxuXG5GaXJzdCwgaXMgdGhlcmUgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzaz8gR29vZCwgdGhlIHBhdGNoIGludm9sdmVzIGBtcGF0aC1cdTAwM2VmbGFnc2AgaW4gYHN0cnVjdCBtZXNoX3BhdGhgLiBJIHNob3VsZCBjb25maXJtIHRoZSBgZmxhZ3NgIGZpZWxkIGlzIHByb3Blcmx5IGluaXRpYWxpemVkLCBhbmQgaXQgaXMuIFRoaXMgaXMgYWxsb2NhdGVkIHZpYSBgbWVzaF9wYXRoX2FsbG9jYCBvciBzaW1pbGFyLCB3aGljaCBJIGtub3cgaW5pdGlhbGl6ZXMgdGhlIHN0cnVjdC4gVGhlIGNoZWNrIHVzZXMgYFJFQURfT05DRWAgc28gaXQncyBzYWZlLlxuXG5TZWNvbmQsIGRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVzZXItc3BhY2UgY29waWVzLCBpb2N0bHMsIG5ldGxpbmsgaW50ZXJhY3Rpb25zLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBwYWRkaW5nIGlzc3Vlcz8gTm8uIEl0IHNlZW1zIGZvY3VzZWQgc29sZWx5IG9uIGluLWtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZmxvdy5cblxuVGhpcmQsIGFyZSB0aGVyZSBhbnkgY2hhbmdlcyB0byBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgdGhhdCBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBidWZmZXIgcmVhZHM/IE5vLiBUaGF0IHNlZW1zIHVubGlrZWx5IGdpdmVuIHRoZSBzY29wZSBvZiB0aGUgZml4LlxuXG5Gb3VydGgsIGlzIEtBU0FOIGFibGUgdG8gY2F0Y2ggdGhpcyBzb3J0IG9mIGJ1Zz8gWWVzLCBLQVNBTiB3b3VsZCBkZXRlY3QgdGhpcyB1c2UtYWZ0ZXItZnJlZSByYWNlLiBJdCB3b3VsZCBhbHNvIGRldGVjdCB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLiBLTVNBTiBpc24ndCByZWxldmFudCBoZXJlLCBiZWNhdXNlIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBpbmZvIGxlYWtzIGludm9sdmVkLlxuXG5BbHJpZ2h0LCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBvdmVyIHRoZSBhbGxvY2F0aW9uIHJvdXRpbmVzLCBgbWVzaF9wYXRoX25ld2AsIGBtZXNoX3BhdGhfYXNzaWduYCwgb3Igd2hlcmV2ZXIgdGhlIGBzdHJ1Y3QgbWVzaF9wYXRoYCBpcyBhbGxvY2F0ZWQsIGp1c3QgdG8gYmUgMTAwJSBzdXJlLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHdlbGwtdGFyZ2V0ZWQgYW5kIGNvcnJlY3QgZml4IGZvciBhIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDE6MzAuMDYwMjU2MjMxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzIyMTk1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZXNoX3BhdGhfYWxsb2N8bWVzaF9wYXRoX25ld1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz00MDI9c3RhdGljXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjQwMzpzdHJ1Y3QgbWVzaF9wYXRoICptZXNoX3BhdGhfbmV3KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy00MDQtXFx0XFx0XFx0XFx0Y29uc3QgdTggKmRzdCwgZ2ZwX3QgZ2ZwX2ZsYWdzKVxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTY4Nj1zdHJ1Y3QgbWVzaF9wYXRoICptZXNoX3BhdGhfYWRkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTcwMS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NzAyOlxcdG5ld19tcGF0aCA9IG1lc2hfcGF0aF9uZXcoc2RhdGEsIGRzdCwgR0ZQX0FUT01JQyk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTcwMy1cXHRpZiAoIW5ld19tcGF0aClcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz03Mjg9aW50IG1wcF9wYXRoX2FkZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy03NDEtXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjc0MjpcXHRuZXdfbXBhdGggPSBtZXNoX3BhdGhfbmV3KHNkYXRhLCBkc3QsIEdGUF9BVE9NSUMpO1xcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy03NDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjMwLjExMzQ4NTM1MloiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzI0MTQ4MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbWVzaF9wYXRoX25ld2AqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gYG1lc2hfcGF0aF9uZXdgLiBJIHdhbnQgdG8gZ2V0IGEgcXVpY2sgZmVlbCBmb3IgaXRzIGltcGxlbWVudGF0aW9uIOKAkyBwcm9iYWJseSBub3QgYSBkZWVwIGRpdmUgYXQgdGhpcyBzdGFnZSwganVzdCBhIHByZWxpbWluYXJ5IGFzc2Vzc21lbnQuIEknbSBsb29raW5nIGZvciBpdHMgb3ZlcmFsbCBzdHJ1Y3R1cmUsIGFueSBvYnZpb3VzIHJlZCBmbGFncywgb3IgcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIE15IGltbWVkaWF0ZSBnb2FscyBhcmUgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLCBpZGVudGlmeSBpdHMga2V5IGRhdGEgc3RydWN0dXJlcyBvciBhbGdvcml0aG1zLCBhbmQgcGlucG9pbnQgYW55IGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdOKAmXMgbGlrZWx5IGEgY29uc3RydWN0b3IsIHBhdGgtZ2VuZXJhdGlvbiwgb3IgbWVzaC1tYW5pcHVsYXRpb24gZnVuY3Rpb24sIGRlcGVuZGluZyBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24gdXNlZC4gTGV0J3Mgc2VlIGlmIHRoaXMgb25lIGZpdHMgbXkgaW50dWl0aW9uIG9mIHRoZSBzeXN0ZW0ncyBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MTozMy40Mzc2MzYyNTVaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHR9XFxuIDQwMTpcXHRcXG4gNDAyOlxcdHN0YXRpY1xcbiA0MDM6XFx0c3RydWN0IG1lc2hfcGF0aCAqbWVzaF9wYXRoX25ldyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gNDA0OlxcdFxcdFxcdFxcdFxcdGNvbnN0IHU4ICpkc3QsIGdmcF90IGdmcF9mbGFncylcXG4gNDA1OlxcdHtcXG4gNDA2OlxcdFxcdHN0cnVjdCBtZXNoX3BhdGggKm5ld19tcGF0aDtcXG4gNDA3OlxcdFxcbiA0MDg6XFx0XFx0bmV3X21wYXRoID0ga3phbGxvY19vYmooc3RydWN0IG1lc2hfcGF0aCwgZ2ZwX2ZsYWdzKTtcXG4gNDA5OlxcdFxcdGlmICghbmV3X21wYXRoKVxcbiA0MTA6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDQxMTpcXHRcXG4gNDEyOlxcdFxcdG1lbWNweShuZXdfbXBhdGgtXFx1MDAzZWRzdCwgZHN0LCBFVEhfQUxFTik7XFxuIDQxMzpcXHRcXHRldGhfYnJvYWRjYXN0X2FkZHIobmV3X21wYXRoLVxcdTAwM2VyYW5uX3NuZF9hZGRyKTtcXG4gNDE0OlxcdFxcdG5ld19tcGF0aC1cXHUwMDNlaXNfcm9vdCA9IGZhbHNlO1xcbiA0MTU6XFx0XFx0bmV3X21wYXRoLVxcdTAwM2VzZGF0YSA9IHNkYXRhO1xcbiA0MTY6XFx0XFx0bmV3X21wYXRoLVxcdTAwM2VmbGFncyA9IDA7XFxuIDQxNzpcXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZuZXdfbXBhdGgtXFx1MDAzZWZyYW1lX3F1ZXVlKTtcXG4gNDE4OlxcdFxcdG5ld19tcGF0aC1cXHUwMDNlZXhwX3RpbWUgPSBqaWZmaWVzO1xcbiA0MTk6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNm5ld19tcGF0aC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuIDQyMDpcXHRcXHR0aW1lcl9zZXR1cChcXHUwMDI2bmV3X21wYXRoLVxcdTAwM2V0aW1lciwgbWVzaF9wYXRoX3RpbWVyLCAwKTtcXG4gNDIxOlxcdFxcbiA0MjI6XFx0XFx0cmV0dXJuIG5ld19tcGF0aDtcXG4gNDIzOlxcdH1cXG4gNDI0OlxcdFxcbiA0MjU6XFx0c3RhdGljIHZvaWQgbWVzaF9mYXN0X3R4X2VudHJ5X2ZyZWUoc3RydWN0IG1lc2hfdHhfY2FjaGUgKmNhY2hlLFxcbiA0MjY6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfbWVzaF9mYXN0X3R4ICplbnRyeSlcXG4gNDI3OlxcdHtcXG4gNDI4OlxcdFxcdGhsaXN0X2RlbF9yY3UoXFx1MDAyNmVudHJ5LVxcdTAwM2V3YWxrX2xpc3QpO1xcbiA0Mjk6XFx0XFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcXHUwMDI2Y2FjaGUtXFx1MDAzZXJodCwgXFx1MDAyNmVudHJ5LVxcdTAwM2VyaGFzaCwgZmFzdF90eF9yaHRfcGFyYW1zKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDE6MzMuNDM3NzMxNzQ2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2OTY2NjU3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLQVNBTiBJbXBhY3Qgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhyb3VnaCB0aGUgbG9naWMuIEV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGlzIGBuZXdfbXBhdGhgIGlzIGJlaW5nIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgbWVhbmluZyBpdCdzIHplcm8taW5pdGlhbGl6ZWQgZnJvbSB0aGUgc3RhcnQsIGFuZCB0aGUgYG5ld19tcGF0aC1cdTAwM2VmbGFnc2Agc3RhcnRzIGF0IHplcm8gYXMgd2VsbC4gR29vZCwgdGhhdCBoZWxwcy5cblxuVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGhlcmUgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIEEgZGVsZXRlZCBgbXBhdGhgIG1pZ2h0IGJlIGFkZGVkIGJhY2sgaW50byB0aGUgYGZhc3RfdHhgIGNhY2hlICphZnRlciogdGhlIGNhY2hlIGhhcyBiZWVuIGZsdXNoZWQgYnkgYF9fbWVzaF9wYXRoX2RlbGAuIFRoYXQncyBhIGNsYXNzaWMgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8sIGEgdmVyeSBuYXN0eSBidWcuXG5cbkhvd2V2ZXIsIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMsIHRoaXMgaXMgc3F1YXJlbHkgaW4gdGhlIHJlYWxtIG9mIGNvbmN1cnJlbmN5IGVycm9ycy4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gY2F0Y2ggdGhlc2UgdHlwZXMgb2YgYnVncyDigJMgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeS4gVGhpcyBwYXRjaCBkb2VzbuKAmXQgaW50cm9kdWNlIGFueSBuZXcgaW5zdGFuY2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBub3IgZG9lcyBpdCBhcHBlYXIgdG8gY3JlYXRlIGFueSBpbmZvcm1hdGlvbiBsZWFrcy4gSXQncyBzb2xlbHkgYSBjb25jdXJyZW5jeSBwcm90ZWN0aW9uIG1lYXN1cmUuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhhdCBpdCdzIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUsIGFuZCBvbmx5IGFmZmVjdHMgbWVtb3J5IHdoaWNoIGlzIHByb3Blcmx5IGBremFsbG9jYCdkLCBJJ20gY29uZmlkZW50IHdlIGNhbiBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAgYmVjYXVzZSBpdCBkb2Vzbid0IGFwcGVhciB0byBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGUgcmVhc29uaW5nIEkganVzdCBsYWlkIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUxMiwiT3V0cHV0VG9rZW5zIjoxNzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MTozNy4xMzQzOTk1NThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc29sdmVzIGEgcmFjZSBjb25kaXRpb24gaW4gbWFjODAyMTEgbWVzaCBwYXRoIG1hbmFnZW1lbnQgd2hlcmUgYSBtZXNoIHBhdGggbWFya2VkIGZvciBkZWxldGlvbiBjb3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGFmdGVyIHRoZSBjYWNoZSBmbHVzaCwgbGVhZGluZyB0byBhIHVzZS1hZnRlci1mcmVlIChVQUYpLiBUaGUgZml4IHNldHMgYE1FU0hfUEFUSF9ERUxFVEVEYCB1bmRlciBsb2NrIGluIGBfX21lc2hfcGF0aF9kZWwoKWAgYW5kIGNoZWNrcyBmb3IgdGhpcyBmbGFnIGJlZm9yZSBpbnNlcnRpbmcgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBpbiBgbWVzaF9mYXN0X3R4X2NhY2hlKClgLiBcXG5cXG5UaGlzIGNoYW5nZSBhZGRyZXNzZXMgb2JqZWN0IGxpZmV0aW1lIGFuZCBjb25jdXJyZW5jeSAoVUFGKSBpc3N1ZXMgd2hpY2ggYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4uIEl0IGRvZXMgbm90IGludHJvZHVjZSwgcmVhZCwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBub3IgZG9lcyBpdCBhZmZlY3QgdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHN0cnVjdCBwYWRkaW5nLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXNvbHZlcyBhIHJhY2UgY29uZGl0aW9uIGluIG1hYzgwMjExIG1lc2ggcGF0aCBtYW5hZ2VtZW50IHdoZXJlIGEgbWVzaCBwYXRoIG1hcmtlZCBmb3IgZGVsZXRpb24gY291bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBhZnRlciB0aGUgY2FjaGUgZmx1c2gsIGxlYWRpbmcgdG8gYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKS4gVGhlIGZpeCBzZXRzIGBNRVNIX1BBVEhfREVMRVRFRGAgdW5kZXIgbG9jayBpbiBgX19tZXNoX3BhdGhfZGVsKClgIGFuZCBjaGVja3MgZm9yIHRoaXMgZmxhZyBiZWZvcmUgaW5zZXJ0aW5nIGludG8gdGhlIGZhc3QgVFggY2FjaGUgaW4gYG1lc2hfZmFzdF90eF9jYWNoZSgpYC4gXFxuXFxuVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIG9iamVjdCBsaWZldGltZSBhbmQgY29uY3VycmVuY3kgKFVBRikgaXNzdWVzIHdoaWNoIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IEtBU0FOLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm9yIGRvZXMgaXQgYWZmZWN0IHVzZXItc3BhY2UgY29weSBwYXRocyBvciBzdHJ1Y3QgcGFkZGluZy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 06:39:30 +0000 UTC FinishedAt: 2026-09-08 07:41:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_MESH", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_MESH", "CFG80211" ], "series_id": "cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mesh_fast_tx_cache", "mesh_path_del", "mesh_path_flush_by_nexthop", "mesh_path_tbl_expire", "mesh_nexthop_lookup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX01FU0gmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZXNoX2Zhc3RfdHhfY2FjaGUmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX2RlbCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfdGJsX2V4cGlyZSYjMzQ7LAogICAgJiMzNDttZXNoX25leHRob3BfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVzb2x2ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBtYWM4MDIxMSBtZXNoIHBhdGggbWFuYWdlbWVudCB3aGVyZSBhIG1lc2ggcGF0aCBtYXJrZWQgZm9yIGRlbGV0aW9uIGNvdWxkIGJlIGluc2VydGVkIGludG8gdGhlIGZhc3QgVFggY2FjaGUgYWZ0ZXIgdGhlIGNhY2hlIGZsdXNoLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikuIFRoZSBmaXggc2V0cyBgTUVTSF9QQVRIX0RFTEVURURgIHVuZGVyIGxvY2sgaW4gYF9fbWVzaF9wYXRoX2RlbCgpYCBhbmQgY2hlY2tzIGZvciB0aGlzIGZsYWcgYmVmb3JlIGluc2VydGluZyBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGluIGBtZXNoX2Zhc3RfdHhfY2FjaGUoKWAuIFxuXG5UaGlzIGNoYW5nZSBhZGRyZXNzZXMgb2JqZWN0IGxpZmV0aW1lIGFuZCBjb25jdXJyZW5jeSAoVUFGKSBpc3N1ZXMgd2hpY2ggYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4uIEl0IGRvZXMgbm90IGludHJvZHVjZSwgcmVhZCwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBub3IgZG9lcyBpdCBhZmZlY3QgdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHN0cnVjdCBwYWRkaW5nLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc3luY2hyb25pemF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWVzaCBwYXRocyBpbiBtYWM4MDIxMSwgc2V0dGluZyB0aGUgTUVTSF9QQVRIX0RFTEVURUQgZmxhZyBpbiBfX21lc2hfcGF0aF9kZWwoKSBhbmQgY2hlY2tpbmcgZm9yIGl0IHVuZGVyIGxvY2sgaW4gbWVzaF9mYXN0X3R4X2NhY2hlKCkgdG8gcHJldmVudCBjYWNoaW5nIGRlbGV0ZWQgcGF0aHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG1lc2ggaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU4YTdmMmNkZmE0ZDk0YzgxZmQxMmJjNTk3NGU5YTA3NzFjYmVlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA3OjQwOjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1xuaW5kZXggMDMxNzFjZjAwODU1Ny4uZGZjYzRmM2E3MDg4ZSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG5AQCAtNTc3LDYgJiM0Mzs1NzcsMTIgQEAgdm9pZCBtZXNoX2Zhc3RfdHhfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdGdvdG8gdW5sb2NrX3N0YTtcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZjYWNoZS1cdTAwM2V3YWxrX2xvY2spO1xuJiM0MztcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4mIzQzO1x0ICAgIChtcHBhdGggXHUwMDI2XHUwMDI2IChSRUFEX09OQ0UobXBwYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpKSkge1xuJiM0MztcdFx0a2ZyZWUoZW50cnkpO1xuJiM0MztcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHByZXYgPSByaGFzaHRhYmxlX2xvb2t1cF9nZXRfaW5zZXJ0X2Zhc3QoXHUwMDI2Y2FjaGUtXHUwMDNlcmh0LFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZlbnRyeS1cdTAwM2VyaGFzaCxcbiBcdFx0XHRcdFx0XHQgZmFzdF90eF9yaHRfcGFyYW1zKTtcbkBAIC04MTIsNiAmIzQzOzgxOCw5IEBAIHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcbiB7XG4gXHRobGlzdF9kZWxfcmN1KFx1MDAyNm1wYXRoLVx1MDAzZXdhbGtfbGlzdCk7XG4gXHRyaGFzaHRhYmxlX3JlbW92ZV9mYXN0KFx1MDAyNnRibC1cdTAwM2VyaGVhZCwgXHUwMDI2bXBhdGgtXHUwMDNlcmhhc2gsIG1lc2hfcmh0X3BhcmFtcyk7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdG1wYXRoLVx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9ERUxFVEVEO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0aWYgKHRibCA9PSBcdTAwMjZtcGF0aC1cdTAwM2VzZGF0YS1cdTAwM2V1Lm1lc2gubXBwX3BhdGhzKVxuIFx0XHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cdTAwM2VzZGF0YSwgbXBhdGgtXHUwMDNlZHN0KTtcbiBcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9NRVNIJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWVzaF9mYXN0X3R4X2NhY2hlJiMzNDssCiAgICAmIzM0O21lc2hfcGF0aF9kZWwmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3AmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX3RibF9leHBpcmUmIzM0OywKICAgICYjMzQ7bWVzaF9uZXh0aG9wX2xvb2t1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzeW5jaHJvbml6YXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtZXNoIHBhdGhzIGluIG1hYzgwMjExLCBzZXR0aW5nIHRoZSBNRVNIX1BBVEhfREVMRVRFRCBmbGFnIGluIF9fbWVzaF9wYXRoX2RlbCgpIGFuZCBjaGVja2luZyBmb3IgaXQgdW5kZXIgbG9jayBpbiBtZXNoX2Zhc3RfdHhfY2FjaGUoKSB0byBwcmV2ZW50IGNhY2hpbmcgZGVsZXRlZCBwYXRocy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgbWVzaCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNThhN2YyY2RmYTRkOTRjODFmZDEyYmM1OTc0ZTlhMDc3MWNiZWVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMDc6NDA6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMKaW5kZXggMDMxNzFjZjAwODU1Ny4uZGZjYzRmM2E3MDg4ZSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYwpAQCAtNTc3LDYgJiM0Mzs1NzcsMTIgQEAgdm9pZCBtZXNoX2Zhc3RfdHhfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCWdvdG8gdW5sb2NrX3N0YTsKIAogCXNwaW5fbG9jaygmYW1wO2NhY2hlLSZndDt3YWxrX2xvY2spOwomIzQzOwlpZiAoKFJFQURfT05DRShtcGF0aC0mZ3Q7ZmxhZ3MpICZhbXA7IE1FU0hfUEFUSF9ERUxFVEVEKSB8fAomIzQzOwkgICAgKG1wcGF0aCAmYW1wOyZhbXA7IChSRUFEX09OQ0UobXBwYXRoLSZndDtmbGFncykgJmFtcDsgTUVTSF9QQVRIX0RFTEVURUQpKSkgewomIzQzOwkJa2ZyZWUoZW50cnkpOwomIzQzOwkJZ290byB1bmxvY2tfY2FjaGU7CiYjNDM7CX0KJiM0MzsKIAlwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KCZhbXA7Y2FjaGUtJmd0O3JodCwKIAkJCQkJCSAmYW1wO2VudHJ5LSZndDtyaGFzaCwKIAkJCQkJCSBmYXN0X3R4X3JodF9wYXJhbXMpOwpAQCAtODEyLDYgJiM0Mzs4MTgsOSBAQCBzdGF0aWMgdm9pZCBfX21lc2hfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpCiB7CiAJaGxpc3RfZGVsX3JjdSgmYW1wO21wYXRoLSZndDt3YWxrX2xpc3QpOwogCXJoYXNodGFibGVfcmVtb3ZlX2Zhc3QoJmFtcDt0YmwtJmd0O3JoZWFkLCAmYW1wO21wYXRoLSZndDtyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7bXBhdGgtJmd0O3N0YXRlX2xvY2spOwomIzQzOwltcGF0aC0mZ3Q7ZmxhZ3MgfD0gTUVTSF9QQVRIX0RFTEVURUQ7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bXBhdGgtJmd0O3N0YXRlX2xvY2spOwogCWlmICh0YmwgPT0gJmFtcDttcGF0aC0mZ3Q7c2RhdGEtJmd0O3UubWVzaC5tcHBfcGF0aHMpCiAJCW1lc2hfZmFzdF90eF9mbHVzaF9hZGRyKG1wYXRoLSZndDtzZGF0YSwgbXBhdGgtJmd0O2RzdCk7CiAJZWxzZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTQ4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBtYWM4MDIxMSBNZXNoIFBhdGggVGFibGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiBiZWNhdXNlIG9mIGl0cyBwb3RlbnRpYWwgbmV0d29yayBpbnRlcmFjdGlvbnMuCgpTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhlcmUmIzM5O3MgYSBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBgbWVzaF9mYXN0X3R4X2NhY2hlYCBmdW5jdGlvbi4gVGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayBmb3IgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFncyBvbiBlaXRoZXIgYG1wYXRoYCBvciBgbXBwYXRoYCBiZWZvcmUgZG9pbmcgYW4gaW5zZXJ0aW9uL2xvb2t1cCBpbiB0aGUgcmhhc2h0YWJsZS4gQWRkaXRpb25hbGx5LCBpbiBgX19tZXNoX3BhdGhfZGVsYCwgaXQmIzM5O3Mgc2V0dGluZyB0aGUgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFnIHVuZGVyIGEgbG9jay4gVGhpcyBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gYmVpbmcgYWRkcmVzc2VkIG9yIGEgY2hhbmdlIGluIGhvdyBlbnRyaWVzIGFyZSBiZWluZyBtYW5hZ2VkIGluIHRoZSBtZXNoIHBhdGggdGFibGUuIExvb2tzIGxpa2UgdGhleSBhZGRlZCB0aGUgYHNwaW5fbG9ja19iaGAgYW5kIGBzcGluX3VubG9ja19iaGAgYXJvdW5kIHRoZSBmbGFnIHNldHRpbmcuCgpOb3csIGZvciBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGxldCYjMzk7cyBjb25zaWRlciB0aGUgYnJvYWRlciBjb250ZXh0LiBgbmV0L21hYzgwMjExYCBpcyB0aGUgTGludXggd2lyZWxlc3MgODAyLjExIHN1YnN5c3RlbS4gQW5kLCBpbXBvcnRhbnRseSwgd2UgY2FuIGVtdWxhdGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nICg4MDIuMTFzKSBpbiBRRU1VIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHN5emthbGxlciBoYXMgcHJldHR5IGdvb2Qgc3VwcG9ydCBmb3IuIFRoYXQmIzM5O3MgYSBodWdlIGdyZWVuIGxpZ2h0IQoKVG8gZmlybSB1cCBteSBhc3Nlc3NtZW50LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIHRvIHNlZSBpZiBtZXNoIHN1cHBvcnQgaXMgZW5hYmxlZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZS4gQSBxdWljayBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgd2lsbCBsZXQgbWUgcXVpY2tseSBwdWxsIHVwIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgYW5kIGBuZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIGFuZCByZWxldmFudCBjb25maWd1cmF0aW9ucy4gVGhpcyB3aWxsIGd1aWRlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSYjMzk7cyBiZWhhdmlvciBhbmQgZGV0ZXJtaW5lIGlmIHRoZSBmdXp6aW5nIGVmZm9ydCB3aWxsIGJlIHdvcnRod2hpbGUuIE15IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgaW50cm9kdWNlIGFueSBuZXcsIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIHN0YXRlcywgZXNwZWNpYWxseSBnaXZlbiB0aGUgaW5jcmVhc2VkIHVzZSBvZiBsb2NrcyBhbmQgZmxhZ3MsIHdoaWNoIGFyZSBwcmltZSB0YXJnZXRzIGZvciByYWNlIGNvbmRpdGlvbiB2dWxuZXJhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU2NTpcdFx0YnVpbGQuaGRybGVuICYjNDM7PSBzaXplb2YocmZjMTA0Ml9oZWFkZXIpO1xuIDU2NjpcdFx0bWVtY3B5KGJ1aWxkLmZhc3RfdHguaGRyLCBoZHIsIGJ1aWxkLmZhc3RfdHguaGRyX2xlbik7XG4gNTY3Olx0XG4gNTY4Olx0XHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilidWlsZC5mYXN0X3R4LmhkcjtcbiA1Njk6XHRcdGlmIChidWlsZC5mYXN0X3R4LmtleSlcbiA1NzA6XHRcdFx0aGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wgfD0gY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTtcbiA1NzE6XHRcbiA1NzI6XHRcdHFjID0gaWVlZTgwMjExX2dldF9xb3NfY3RsKGhkcik7XG4gNTczOlx0XHRxY1sxXSB8PSBJRUVFODAyMTFfUU9TX0NUTF9NRVNIX0NPTlRST0xfUFJFU0VOVCBcdTAwM2VcdTAwM2UgODtcbiA1NzQ6XHRcbiA1NzU6XHRcdGVudHJ5ID0ga21lbWR1cChcdTAwMjZidWlsZCwgc2l6ZW9mKGJ1aWxkKSwgR0ZQX0FUT01JQyk7XG4gNTc2Olx0XHRpZiAoIWVudHJ5KVxuIDU3NzpcdFx0XHRnb3RvIHVubG9ja19zdGE7XG4gNTc4Olx0XG4gNTc5Olx0XHRzcGluX2xvY2soXHUwMDI2Y2FjaGUtXHUwMDNld2Fsa19sb2NrKTtcbiA1ODA6XHRcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4gNTgxOlx0XHQgICAgKG1wcGF0aCBcdTAwMjZcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XG4gNTgyOlx0XHRcdGtmcmVlKGVudHJ5KTtcbiA1ODM6XHRcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4gNTg0Olx0XHR9XG4gNTg1Olx0XG4gNTg2Olx0XHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFx1MDAyNmNhY2hlLVx1MDAzZXJodCxcbiA1ODc6XHRcdFx0XHRcdFx0XHQgXHUwMDI2ZW50cnktXHUwMDNlcmhhc2gsXG4gNTg4Olx0XHRcdFx0XHRcdFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XG4gNTg5Olx0XHRpZiAoSVNfRVJSKHByZXYpKSB7XG4gNTkwOlx0XHRcdGtmcmVlKGVudHJ5KTtcbiA1OTE6XHRcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4gNTkyOlx0XHR9XG4gNTkzOlx0XG4gNTk0Olx0XHQvKlxuIDU5NTpcdFx0ICogcmVwbGFjZSBhbnkgcHJldmlvdXMgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUsIGluIGNhc2Ugd2UmIzM5O3JlXG4gNTk2Olx0XHQgKiByZXBsYWNpbmcgaXQgd2l0aCBhIGRpZmZlcmVudCB0eXBlIChlLmcuIG1wYXRoIC1cdTAwM2UgbXBwKVxuIDU5NzpcdFx0ICovXG4gNTk4Olx0XHRpZiAodW5saWtlbHkocHJldikpIHtcbiA1OTk6XHRcdFx0cmhhc2h0YWJsZV9yZXBsYWNlX2Zhc3QoXHUwMDI2Y2FjaGUtXHUwMDNlcmh0LCBcdTAwMjZwcmV2LVx1MDAzZXJoYXNoLFxuIDYwMDpcdFx0XHRcdFx0XHRcdTAwMjZlbnRyeS1cdTAwM2VyaGFzaCwgZmFzdF90eF9yaHRfcGFyYW1zKTtcbiA2MDE6XHRcdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZwcmV2LVx1MDAzZXdhbGtfbGlzdCk7XG4gNjAyOlx0XHRcdGtmcmVlX3JjdShwcmV2LCBmYXN0X3R4LnJjdV9oZWFkKTtcbiA2MDM6XHRcdH1cbiA2MDQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODcwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBNZXNoIFBhdGggVGFibGUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRoIGRlbGV0aW9uIHByb2Nlc3MuIExldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBNeSBpbnN0aW5jdHMgYXJlIHRlbGxpbmcgbWUgdG8gbG9vayBhdCBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYF9fbWVzaF9wYXRoX2RlbGAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgaG93IHBhdGhzIGFyZSByZW1vdmVkIGZyb20gdGhlIG1lc2ggcGF0aCB0YWJsZSwgc28gaXQgc2hvdWxkIGJlIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGdyYXNwIHRoZSBrZXkgbG9naWMgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gcGF0aCBtYW5hZ2VtZW50IGhlcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDU6XHRcbiA4MDY6XHRcdHNwaW5fbG9ja19iaChcdTAwMjZtcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA4MDc6XHRcdG1wYXRoLVx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9SRVNPTFZJTkcgfCBNRVNIX1BBVEhfREVMRVRFRDtcbiA4MDg6XHRcdG1lc2hfZ2F0ZV9kZWwodGJsLCBtcGF0aCk7XG4gODA5Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZtcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA4MTA6XHRcdHRpbWVyX3NodXRkb3duX3N5bmMoXHUwMDI2bXBhdGgtXHUwMDNldGltZXIpO1xuIDgxMTpcdFx0YXRvbWljX2RlYyhcdTAwMjZzZGF0YS1cdTAwM2V1Lm1lc2gubXBhdGhzKTtcbiA4MTI6XHRcdGF0b21pY19kZWMoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpO1xuIDgxMzpcdFx0bWVzaF9wYXRoX2ZsdXNoX3BlbmRpbmcobXBhdGgpO1xuIDgxNDpcdFx0a2ZyZWVfcmN1KG1wYXRoLCByY3UpO1xuIDgxNTpcdH1cbiA4MTY6XHRcbiA4MTc6XHRzdGF0aWMgdm9pZCBfX21lc2hfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpXG4gODE4Olx0e1xuIDgxOTpcdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZtcGF0aC1cdTAwM2V3YWxrX2xpc3QpO1xuIDgyMDpcdFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcdTAwMjZ0YmwtXHUwMDNlcmhlYWQsIFx1MDAyNm1wYXRoLVx1MDAzZXJoYXNoLCBtZXNoX3JodF9wYXJhbXMpO1xuIDgyMTpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuIDgyMjpcdFx0bXBhdGgtXHUwMDNlZmxhZ3MgfD0gTUVTSF9QQVRIX0RFTEVURUQ7XG4gODIzOlx0XHRzcGluX3VubG9ja19iaChcdTAwMjZtcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA4MjQ6XHRcdGlmICh0YmwgPT0gXHUwMDI2bXBhdGgtXHUwMDNlc2RhdGEtXHUwMDNldS5tZXNoLm1wcF9wYXRocylcbiA4MjU6XHRcdFx0bWVzaF9mYXN0X3R4X2ZsdXNoX2FkZHIobXBhdGgtXHUwMDNlc2RhdGEsIG1wYXRoLVx1MDAzZWRzdCk7XG4gODI2Olx0XHRlbHNlXG4gODI3Olx0XHRcdG1lc2hfZmFzdF90eF9mbHVzaF9tcGF0aChtcGF0aCk7XG4gODI4Olx0XHRtZXNoX3BhdGhfZnJlZV9yY3UodGJsLCBtcGF0aCk7XG4gODI5Olx0fVxuIDgzMDpcdFxuIDgzMTpcdC8qKlxuIDgzMjpcdCAqIG1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wIC0gRGVsZXRlcyBtZXNoIHBhdGhzIGlmIHRoZWlyIG5leHQgaG9wIG1hdGNoZXNcbiA4MzM6XHQgKlxuIDgzNDpcdCAqIEBzdGE6IG1lc2ggcGVlciB0byBtYXRjaFxuIDgzNTpcdCAqXG4gODM2Olx0ICogUkNVIG5vdGVzOiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgbWVzaCBwbGluayB0cmFuc2l0aW9ucyBmcm9tXG4gODM3Olx0ICogUExJTktfRVNUQUIgdG8gYW55IG90aGVyIHN0YXRlLCBzaW5jZSBQTElOS19FU1RBQiBzdGF0ZSBpcyB0aGUgb25seSBvbmUgdGhhdFxuIDgzODpcdCAqIGFsbG93cyBwYXRoIGNyZWF0aW9uLiBUaGlzIHdpbGwgaGFwcGVuIGJlZm9yZSB0aGUgc3RhIGNhbiBiZSBmcmVlZCAoYmVjYXVzZVxuIDgzOTpcdCAqIHN0YV9pbmZvX2Rlc3Ryb3koKSBjYWxscyB0aGlzKSBzbyBhbnkgcmVhZGVyIGluIGEgcmN1IHJlYWQgYmxvY2sgd2lsbCBiZVxuIDg0MDpcdCAqIHByb3RlY3RlZCBhZ2FpbnN0IHRoZSBwbGluayBkaXNhcHBlYXJpbmcuXG4gODQxOlx0ICovXG4gODQyOlx0dm9pZCBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbiA4NDM6XHR7XG4gODQ0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODMyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSBmb3IgbWVzaF9wYXRodGJsLmMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgYG1lc2hfcGF0aHRibC5jYCBpcyBiZWluZyBjb21waWxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkcml2aW5nIHRoYXQgcHJvY2Vzcy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdGFjaywgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgY2VudHJhbCBidWlsZCBjb25maWd1cmF0aW9uIGZpbGVzIHdpdGhpbiB0aGF0IGFyZWEuIFRoZXJlZm9yZSwgSSB3aWxsIGltbWVkaWF0ZWx5IGhlYWQgb3ZlciB0byBgbmV0L21hYzgwMjExL0tjb25maWdgIHRvIHN0YXJ0IHdpdGgsIGFzIHRoYXQmIzM5O3Mgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBmdW5jdGlvbmFsaXR5LiBBZnRlciB0aGF0LCBJIHdpbGwgYWxzbyBleGFtaW5lIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIHNlZSBob3cgdGhvc2Ugb3B0aW9ucyB0cmFuc2xhdGUgaW50byBidWlsZCBjb21tYW5kcyBhbmQgb2JqZWN0IGZpbGUgaW5jbHVzaW9uLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHJlcXVpcmVkIGluIHRoZSBicm9hZGVyIHN5c3RlbSB0byBlbmFibGUgdGhlIGNvbXBpbGF0aW9uIG9mIGBtZXNoX3BhdGh0YmwuY2AuIEZyb20gdGhlcmUgSSB3aWxsIGludmVzdGlnYXRlIHJlbGV2YW50IGtlcm5lbCBzeW1ib2xzIHRvIGVzdGFibGlzaCB0aGUgcmVxdWlyZW1lbnRzIGZvciB0aGUgbWVzaCBwYXRoIHRhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lc2hfcGF0aHRibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvTWFrZWZpbGU9NDc9bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTUVTSCkgJiM0Mzs9IFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNDgtXHRtZXNoLm8gXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZTo0OTpcdG1lc2hfcGF0aHRibC5vIFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNTAtXHRtZXNoX3BsaW5rLm8gXFxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE3NTc9dm9pZCBpZWVlODAyMTFfbWVzaF9pbml0X3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc3NS1cbm5ldC9tYWM4MDIxMS9tZXNoLmM6MTc3NjpcdG1lc2hfcGF0aHRibF9pbml0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc3Ny1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE3OTA9dm9pZCBpZWVlODAyMTFfbWVzaF90ZWFyZG93bl9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE3OTItXHRtZXNoX3JtY19mcmVlKHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmM6MTc5MzpcdG1lc2hfcGF0aHRibF91bnJlZ2lzdGVyKHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc5NC19XG4tLVxubmV0L21hYzgwMjExL21lc2guaD0zNTQ9dm9pZCBtZXNoX3BhdGhfdHhfcGVuZGluZyhzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aCk7XG5uZXQvbWFjODAyMTEvbWVzaC5oOjM1NTp2b2lkIG1lc2hfcGF0aHRibF9pbml0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmg6MzU2OnZvaWQgbWVzaF9wYXRodGJsX3VucmVnaXN0ZXIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xubmV0L21hYzgwMjExL21lc2guaC0zNTctaW50IG1lc2hfcGF0aF9kZWwoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGNvbnN0IHU4ICphZGRyKTtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9MTA1Nj12b2lkIG1lc2hfcGF0aF9maXhfbmV4dGhvcChzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aCwgc3RydWN0IHN0YV9pbmZvICpuZXh0X2hvcClcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTA3My1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzoxMDc0OnZvaWQgbWVzaF9wYXRodGJsX2luaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTA3NS17XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwOTg9dm9pZCBtZXNoX3BhdGhfZXhwaXJlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMTAzLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjExMDQ6dm9pZCBtZXNoX3BhdGh0YmxfdW5yZWdpc3RlcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMTA1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTkwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNQUM4MDIxMSBNZXNoIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciA4MDIuMTEgbWVzaCBuZXR3b3JraW5nIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgbmV0L21hYzgwMjExL0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgYWxtb3N0IGFsd2F5cyBsb2NhdGVkIHdpdGhpbiB0aGUgcmVsZXZhbnQgc3Vic3lzdGVtJiMzOTtzIGRpcmVjdG9yeS4gSSYjMzk7bSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYE1BQzgwMjExX01FU0hgLCBzbyBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBgY29uZmlnYCBvcHRpb24gaW4gdGhlcmUuIEl0IHNob3VsZCBiZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBlaXRoZXIgZGlyZWN0bHkgZGVmaW5lZCBvciBwZXJoYXBzIGluY2x1ZGVkIGZyb20gYW5vdGhlciBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkIHdpdGggZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IHNldHRpbmdzLCB3aGljaCB3b3VsZCBtYWtlIG15IGxpZmUgZWFzaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNQUM4MDIxMV9NRVNIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnPTYwPWNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIwOT1jb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjExLVx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTI6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMy1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0yMjI9Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjI0LVx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjU6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyNi1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0yMzU9Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM3LVx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzg6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzOS1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWctMjUwLVx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTE6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1Mi1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MS1cdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjYyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjMtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzItXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MzpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjc0LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9NYWtlZmlsZT00MT1tYWM4MDIxMS0kKENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTKSAmIzQzOz0gXFxcbi0tXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNDYtXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6NDc6bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTUVTSCkgJiM0Mzs9IFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNDgtXHRtZXNoLm8gXFxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NjEzPXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNzEwLVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOlxubmV0L21hYzgwMjExL2NmZy5jOjcxMTojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9jZmcuYy03MTItXHRcdGlmIChzZGF0YS1cdTAwM2V1Lm1lc2guc2VjdXJpdHkgIT0gSUVFRTgwMjExX01FU0hfU0VDX05PTkUpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTIxOTA9c3RhdGljIHZvaWQgc3RhX2FwcGx5X21lc2hfcGFyYW1zKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTkzLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTk0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2NmZy5jLTIxOTUtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mjc4Nz1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yODkzLVxubmV0L21hYzgwMjExL2NmZy5jOjI4OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjg5NS1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfbXBhdGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDQyOD1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfYWZ0ZXJfY3NhX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00NDUxLVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NDUyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2NmZy5jLTQ0NTMtXHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ1NjM9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2NzYV9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDY1NC1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDY1NTojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9jZmcuYy00NjU2LVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOiB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU5NzY9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01OTk2LVx0LmR1bXBfc3VydmV5ID0gaWVlZTgwMjExX2R1bXBfc3VydmV5LFxubmV0L21hYzgwMjExL2NmZy5jOjU5OTc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk5OC1cdC5hZGRfbXBhdGggPSBpZWVlODAyMTFfYWRkX21wYXRoLFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTUyLVxubmV0L21hYzgwMjExL2RlYnVnLmg6NTM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjU0OiNkZWZpbmUgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHIDFcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU1LSNlbHNlXG5uZXQvbWFjODAyMTEvZGVidWcuaDo1NjojZGVmaW5lIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVRyAwXG5uZXQvbWFjODAyMTEvZGVidWcuaC01Ny0jZW5kaWZcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU4LVxubmV0L21hYzgwMjExL2RlYnVnLmg6NTk6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL2RlYnVnLmg6NjA6I2RlZmluZSBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVRyAxXG5uZXQvbWFjODAyMTEvZGVidWcuaC02MS0jZWxzZVxubmV0L21hYzgwMjExL2RlYnVnLmg6NjI6I2RlZmluZSBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVRyAwXG5uZXQvbWFjODAyMTEvZGVidWcuaC02My0jZW5kaWZcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTY0LVxubmV0L21hYzgwMjExL2RlYnVnLmg6NjU6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvZGVidWcuaDo2NjojZGVmaW5lIE1BQzgwMjExX01FU0hfUFNfREVCVUcgMVxubmV0L21hYzgwMjExL2RlYnVnLmgtNjctI2Vsc2Vcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjY4OiNkZWZpbmUgTUFDODAyMTFfTUVTSF9QU19ERUJVRyAwXG5uZXQvbWFjODAyMTEvZGVidWcuaC02OS0jZW5kaWZcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaD0xMjU9ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMjE4LSNkZWZpbmUgbXN5bmNfZGJnKHNkYXRhLCBmbXQsIC4uLilcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjIxOTpcdF9zZGF0YV9kYmcoTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHLFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTIyMC1cdFx0ICAgc2RhdGEsIGZtdCwgIyNfX1ZBX0FSR1NfXylcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMjItI2RlZmluZSBtY3NhX2RiZyhzZGF0YSwgZm10LCAuLi4pXHRcdFx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoyMjM6XHRfc2RhdGFfZGJnKE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHLFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTIyNC1cdFx0ICAgc2RhdGEsIGZtdCwgIyNfX1ZBX0FSR1NfXylcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMjYtI2RlZmluZSBtcHNfZGJnKHNkYXRhLCBmbXQsIC4uLilcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjIyNzpcdF9zZGF0YV9kYmcoTUFDODAyMTFfTUVTSF9QU19ERUJVRyxcdFx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMjgtXHRcdCAgIHNkYXRhLCBmbXQsICMjX19WQV9BUkdTX18pXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9NzM2PUlFRUU4MDIxMV9JRl9MSU5LX0ZJTEUoYWRkciwgY29uZi1cdTAwM2VhZGRyLCBNQUMpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtNzM3LVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6NzM4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtNzM5LUlFRUU4MDIxMV9JRl9GSUxFKGVzdGFiX3BsaW5rcywgdS5tZXNoLmVzdGFiX3BsaW5rcywgQVRPTUlDKTtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz04Njg9c3RhdGljIHZvaWQgYWRkX2lic3NfZmlsZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtODcyLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6ODczOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtODc0LVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTkzNz1zdGF0aWMgdm9pZCBhZGRfZmlsZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTQ5LVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOlxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6OTUwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTUxLVx0XHRhZGRfbWVzaF9maWxlcyhzZGF0YSk7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9Nzc5PXN0cnVjdCBpZWVlODAyMTFfaWZfbWVzaCB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtODU5LVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6ODYwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtODYxLSNkZWZpbmUgSUVFRTgwMjExX0lGU1RBX01FU0hfQ1RSX0lOQyhtc2gsIG5hbWUpXHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmM9MTEzNz1pbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMTM5Mi1cbm5ldC9tYWM4MDIxMS9tYWluLmM6MTM5MzojaWZuZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvbWFpbi5jLTEzOTQtXHQvKiBtZXNoIGRlcGVuZHMgb24gS2NvbmZpZywgYnV0IGRyaXZlcnMgc2hvdWxkIHNldCBpdCBpZiB0aGV5IHdhbnQgKi9cbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM3OD12b2lkIG1lc2hfcGF0aF9yZWZyZXNoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzgwLVxubmV0L21hYzgwMjExL21lc2guaDozODE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM4Mi1zdGF0aWMgaW5saW5lXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYz04MTA9aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04MzktXHRcdFx0bmVlZF9vZmZjaGFuID0gdHJ1ZTtcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6ODQwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04NDEtXHRcdGZhbGx0aHJvdWdoO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTI3OTI9aWVlZTgwMjExX2RlbGl2ZXJfc2tiKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjg5MS1cbm5ldC9tYWM4MDIxMS9yeC5jOjI4OTI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvcnguYy0yODkzLXN0YXRpYyBib29sXG4tLVxubmV0L21hYzgwMjExL3J4LmM9Mjk1OT1pZWVlODAyMTFfcnhfbWVzaF9kYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yOTYxLXtcbm5ldC9tYWM4MDIxMS9yeC5jOjI5NjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvcnguYy0yOTYzLVx0c3RydWN0IGllZWU4MDIxMV9pZl9tZXNoICppZm1zaCA9IFx1MDAyNnNkYXRhLVx1MDAzZXUubWVzaDtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz00Njg9dm9pZCBzdGFfaW5mb19mcmVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy01MDYtXHRrZnJlZShyY3VfZGVyZWZlcmVuY2VfcmF3KHN0YS1cdTAwM2VzdGEucmF0ZXMpKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjUwNzojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTUwOC1cdGtmcmVlKHN0YS1cdTAwM2VtZXNoKTtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MzM9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy02NjctXHR3aXBoeV93b3JrX2luaXQoXHUwMDI2c3RhLVx1MDAzZWFtcGR1X21sbWUud29yaywgaWVlZTgwMjExX2JhX3Nlc3Npb25fd29yayk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo2Njg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy02NjktXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tZXNoKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03OTUtXHRzdGFfaW5mb19mcmVlX2xpbmsoXHUwMDI2c3RhLVx1MDAzZWRlZmxpbmspO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Nzk2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNzk3LVx0a2ZyZWUoc3RhLVx1MDAzZW1lc2gpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTExMDc9c3RhdGljIHZvaWQgX19zdGFfaW5mb19yZWNhbGNfdGltKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBib29sIGlnbm9yZV9wZW5kaW5nKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTExMjEtXHRcdHBzID0gXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZWJzcy1cdTAwM2Vwcztcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjExMjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMTIzLVx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21lc2goXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikpIHtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0yNzQzPXN0YXRpYyBpbmxpbmUgdTY0IHN0YV9nZXRfc3RhdHNfYnl0ZXMoc3RydWN0IGllZWU4MDIxMV9zdGFfcnhfc3RhdHMgKnJ4c3RhdHMpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMjc1NS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjI3NTY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0yNzU3LXN0YXRpYyB2b2lkIHN0YV9zZXRfbWVzaF9zaW5mbyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zMDc5PXZvaWQgc3RhX3NldF9zaW5mbyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgc3RydWN0IHN0YXRpb25faW5mbyAqc2luZm8sXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzI2NC1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjMyNjU6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMjY2LVx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWVzaChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTcxNT1zdHJ1Y3Qgc3RhX2luZm8ge1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTczMi1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjczMzojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTczNC1cdHN0cnVjdCBtZXNoX3N0YSAqbWVzaDtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD04MDA9c3RhdGljIGlubGluZSBlbnVtIG5sODAyMTFfcGxpbmtfc3RhdGUgc3RhX3BsaW5rX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODAxLXtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjgwMjojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTgwMy1cdHJldHVybiBzdGEtXHUwMDNlbWVzaC1cdTAwM2VwbGlua19zdGF0ZTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0yNTQ5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjU3My1cdFx0YnJlYWs7XG5uZXQvbWFjODAyMTEvdHguYzoyNTc0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL3R4LmMtMjU3NS1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVDpcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0yNjc2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNzc0LVx0XHRicmVhaztcbm5ldC9tYWM4MDIxMS90eC5jOjI3NzU6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvdHguYy0yNzc2LVx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOlxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTMwMTktXG5uZXQvbWFjODAyMTEvdHguYzozMDIwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL3R4LmMtMzAyMS1cdGlmIChtZXNoaGRybGVuIFx1MDAzZSAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY0NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBNZXNoIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IEtjb25maWcsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBob3cgdGhlIGBNQUM4MDIxMV9NRVNIYCBhbmQgYE1BQzgwMjExYCBvcHRpb25zIGFyZSBzdHJ1Y3R1cmVkLiBNeSBnb2FsLCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXNlIGZlYXR1cmVzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB3aGF0IGtpbmQgb2Ygc3VwcG9ydCB1c2VycyB3aWxsIGJlIGFibGUgdG8gZW5hYmxlIG9yIGRpc2FibGUgcmVsYXRlZCB0byBtZXNoIG5ldHdvcmtpbmcuIEFyZSB0aGUgbWVzaCBvcHRpb25zIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBNQUM4MDIxMSBjb3JlIGZ1bmN0aW9uYWxpdGllcz8gQXJlIHRoZXJlIGFueSBoaWRkZW4gaW1wbGljYXRpb25zIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHdpcmVsZXNzIGZlYXR1cmVzPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29uZGl0aW9uYWxzIGNhcmVmdWxseSB0byBmdWxseSBncmFzcCB0aGUgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxvZ2ljYWwgYW5kIHN1cHBvcnQgdGhlIGRlc2lyZWQgdXNlIGNhc2VzIGZvciBvdXIgbWVzaCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIGEgY2xlYW4gYW5kIGVmZmljaWVudCBrZXJuZWwgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1BQzgwMjExXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0c2VsZWN0IENSWVBUT1xuICAgNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTX0NCQ19NQUNTXG4gICA3Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BUkM0XG4gICA4Olx0XHRzZWxlY3QgQ1JZUFRPX0FFU1xuICAgOTpcdFx0c2VsZWN0IENSWVBUT19DQ01cbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgSUVFRSA4MDIuMTFcbiAgMTQ6XHRcdCAgbmV0d29ya2luZyBzdGFjay5cbiAgMTU6XHRcbiAgMTY6XHRjb21tZW50IFwmIzM0O0NGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXCYjMzQ7XG4gIDE3Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExPW5cbiAgMTg6XHRcbiAgMTk6XHRpZiBNQUM4MDIxMSAhPSBuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xuICAyMjpcdFx0Ym9vbFxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxuICAyNTpcdFx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbiAgMjY6XHRcdHNlbGVjdCBNQUM4MDIxMV9IQVNfUkNcbiAgMjc6XHRcdGRlZmF1bHQgeVxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSAmIzM5O21pbnN0cmVsJiMzOTsgVFggcmF0ZSBjb250cm9sIGFsZ29yaXRobVxuICAzMDpcdFxuICAzMTpcdGNob2ljZVxuICAzMjpcdFx0cHJvbXB0IFwmIzM0O0RlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuICAzMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9IQVNfUkNcbiAgMzQ6XHRcdGRlZmF1bHQgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBUaGlzIG9wdGlvbiBzZWxlY3RzIHRoZSBkZWZhdWx0IHJhdGUgY29udHJvbCBhbGdvcml0aG1cbiAgMzc6XHRcdCAgbWFjODAyMTEgd2lsbCB1c2UuIE5vdGUgdGhhdCB0aGlzIGRlZmF1bHQgY2FuIHN0aWxsIGJlXG4gIDM4Olx0XHQgIG92ZXJyaWRkZW4gdGhyb3VnaCB0aGUgaWVlZTgwMjExX2RlZmF1bHRfcmNfYWxnbyBtb2R1bGVcbiAgMzk6XHRcdCAgcGFyYW1ldGVyIGlmIGRpZmZlcmVudCBhbGdvcml0aG1zIGFyZSBhdmFpbGFibGUuXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbiAgNDI6XHRcdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbiAgNDM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFfUkNfTUlOU1RSRUxcbiAgNDQ6XHRcdGhlbHBcbiAgNDU6XHRcdCAgU2VsZWN0IE1pbnN0cmVsIGFzIHRoZSBkZWZhdWx0IHJhdGUgY29udHJvbCBhbGdvcml0aG0uXG4gIDQ2Olx0XG4gIDQ3Olx0XG4gIDQ4Olx0ZW5kY2hvaWNlXG4gIDQ5Olx0XG4gIDUwOlx0Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbiAgNTE6XHRcdHN0cmluZ1xuICA1MjpcdFx0ZGVmYXVsdCBcJiMzNDttaW5zdHJlbF9odFwmIzM0OyBpZiBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG4gIDUzOlx0XHRkZWZhdWx0IFwmIzM0O1wmIzM0O1xuICA1NDpcdFxuICA1NTpcdGVuZGlmXG4gIDU2Olx0XG4gIDU3Olx0Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbiAgNTg6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0hBU19SQz1uXG4gIDU5Olx0XG4gIDYwOlx0Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDYyOlx0XHRkZXBlbmRzIG9uIEtVTklUXG4gIDYzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDY0Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICA2NTpcdFx0aGVscFxuICA2NjpcdFx0ICBFbmFibGUgdGhpcyBvcHRpb24gdG8gdGVzdCBtYWM4MDIxMSBpbnRlcm5hbHMgd2l0aCBrdW5pdC5cbiAgNjc6XHRcbiAgNjg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjk6XHRcbiAgNzA6XHRjb25maWcgTUFDODAyMTFfTUVTSFxuICA3MTpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbiAgNzI6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNzM6XHRcdGhlbHBcbiAgNzQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGVuYWJsZSA4MDIuMTEgbWVzaCBvcGVyYXRpb24gaW4gbWFjODAyMTFcbiAgNzU6XHRcdCAgZHJpdmVycyB0aGF0IHN1cHBvcnQgaXQuICA4MDIuMTEgbWVzaCBjb25uZWN0cyBtdWx0aXBsZSBzdGF0aW9uc1xuICA3NjpcdFx0ICBvdmVyIChwb3NzaWJseSBtdWx0aS1ob3ApIHdpcmVsZXNzIGxpbmtzIHRvIGZvcm0gYSBzaW5nbGUgbG9naWNhbFxuICA3NzpcdFx0ICBMQU4uXG4gIDc4Olx0XG4gIDc5Olx0Y29uZmlnIE1BQzgwMjExX0xFRFNcbiAgODA6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDAwMgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIE1BQzgwMjExX0hXU0lNKioKClJpZ2h0LCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgYW5kIG1ha2Ugc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgd2l0aCBgTUFDODAyMTFfSFdTSU1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hhdGV2ZXIgaXMgaGFwcGVuaW5nIGluIHRoZSBjdXJyZW50IHNjZW5hcmlvIGRvZXNuJiMzOTt0IGJ5cGFzcyB0aGlzLiBDcnVjaWFsbHksIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgc3ltYm9sIGlzIGFjdHVhbGx5IGRlZmluZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGRlZmluaXRpb24gaXMgZ29pbmcgdG8gYmUgdGhlIGtleSB0byBpbnRlcnByZXRpbmcgaXRzIGltcGFjdC4gSeKAmWxsIG5lZWQgdG8gdHJhY2UgaXQgdG8gaXRzIG9yaWdpbiB0byBzZWUgd2hhdCBpdCBjb250cm9scyBhbmQgd2hldGhlciBpdCYjMzk7cyByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGlzc3VlLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgdHVybiB1cCB0aGUgc291cmNlIGZpbGUuIEZyb20gdGhlcmUsIEkgY2FuIGFuYWx5emUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9yIGluY2x1c2lvbiBsb2dpYyBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzA3CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWVzaCBQYXRoIFRhYmxlIEZpeCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGNvZGUgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGZhc3QgVFggY2FjaGUgYW5kIG1lc2ggcGF0aCBkZWxldGlvbiBtZWNoYW5pc21zIGluIHRoZSBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCBmaWxlLiBTcGVjaWZpY2FsbHk6CgoxLiAgSW4gYG1lc2hfZmFzdF90eF9jYWNoZWAsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgdG8gc2VlIGlmIGEgbWVzaCBwYXRoIGVudHJ5IHNob3VsZCBiZSBhZGRlZC4gVGhlIGNoZWNrIHZlcmlmaWVzIGlmIHRoZSBwYXRoIGlzIGRlbGV0ZWQgYnkgbG9va2luZyBhdCB0aGUgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFnIG9uIGBtcGF0aGAgb3IgYG1wcGF0aGAuIElmIGl0JiMzOTtzIHNldCwgdGhlIGluc2VydGlvbiBpcyBhYm9ydGVkLCBhbmQgdGhlIGVudHJ5IGlzIGZyZWVkLgoyLiAgYF9fbWVzaF9wYXRoX2RlbGAgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIGBNRVNIX1BBVEhfREVMRVRFRGAgZmxhZyBvbiB0aGUgYG1wYXRoYCB1bmRlciB0aGUgYG1wYXRoLSZndDtzdGF0ZV9sb2NrYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBzeW5jaHJvbml6YXRpb24gcHJhY3RpY2UuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgZnV6emFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBzeXprYWxsZXI/IEFic29sdXRlbHksIGl0IGlzISBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgYG1hYzgwMjExX2h3c2ltYCBhbmQgdGhlIGNmZzgwMjExL25sODAyMTEgaW50ZXJmYWNlcyBjYW4gYmUgbGV2ZXJhZ2VkIHRvIGNyZWF0ZSBtZXNoIHBvaW50cyAoYE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlRgKSwgZXN0YWJsaXNoIGxpbmtzLCBhZGQvZGVsZXRlIHBhdGhzIChgTkw4MDIxMV9DTURfTkVXX01QQVRIYCwgYE5MODAyMTFfQ01EX0RFTF9NUEFUSGAsIGBOTDgwMjExX0NNRF9TRVRfTVBBVEhgKSwgYW5kIHNlbmQgZnJhbWVzLiBTeXprYWxsZXImIzM5O3MgZXhpc3RpbmcgY292ZXJhZ2Ugb2YgYG1hYzgwMjExYCBhbmQgYG5sODAyMTFgIGlzIGFsc28gYSBodWdlIGFkdmFudGFnZS4KCkdpdmVuIHRoZSBtb2RpZmljYXRpb25zIHRvIHN5bmNocm9uaXphdGlvbiwgbGlmZXRpbWUgbWFuYWdlbWVudCwgYW5kIHN0YXRlIGhhbmRsaW5nIGluIHRoZSBwYXRoIHJvdXRpbmcgYW5kIGNhY2hpbmcsIHNwZWNpZmljYWxseSBpbXBhY3RpbmcgYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBoaWdoLXZhbHVlIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIHBhdGNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgYG1hYzgwMjExX2h3c2ltYCwgb3IgdmlydHVhbCBXaS1GaSBpbnRlcmZhY2VzLCBleHBhbmRpbmcgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBmb2N1cyBzeW1ib2xzLiBJIHNlZSB3ZSBoYXZlIHR3byBrZXkgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZDogYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLgoKSSYjMzk7bGwgbm93IGludmVzdGlnYXRlIHBvdGVudGlhbCBjYWxsZXIgZnVuY3Rpb25zIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMgd2l0aGluIHRoZSBzYW1lIGZpbGUsIGBuZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNgLiBJdCYjMzk7cyBjcnVjaWFsIHRvIG1hcCB0aGUgY2FsbCBncmFwaCB0byBpZGVudGlmeSBhbnkgY3JpdGljYWwgZW50cnkgcG9pbnRzIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lc2hfZmFzdF90eF9jYWNoZXxfX21lc2hfcGF0aF9kZWx8bWVzaF9wYXRoX2RlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9MjkyMz1zdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfbXBhdGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjkyOC1cdGlmIChkc3QpXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjkyOTpcdFx0cmV0dXJuIG1lc2hfcGF0aF9kZWwoc2RhdGEsIGRzdCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjkzMC1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM1Nj12b2lkIG1lc2hfcGF0aHRibF91bnJlZ2lzdGVyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9tZXNoLmg6MzU3OmludCBtZXNoX3BhdGhfZGVsKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBjb25zdCB1OCAqYWRkcik7XG5uZXQvbWFjODAyMTEvbWVzaC5oLTM1OC12b2lkIG1lc2hfcGF0aF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4tLVxubmV0L21hYzgwMjExL21lc2guaD0zNjg9Ym9vbCBpZWVlODAyMTFfbWVzaF94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM2OS1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgY3RybF9mbGFncyk7XG5uZXQvbWFjODAyMTEvbWVzaC5oOjM3MDp2b2lkIG1lc2hfZmFzdF90eF9jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzcxLVx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKTtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9od21wLmM9MTI1OD1pbnQgbWVzaF9uZXh0aG9wX2xvb2t1cChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9od21wLmMtMTI4Mi1cdFx0aWYgKGllZWU4MDIxMV9od19jaGVjayhcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VodywgU1VQUE9SVF9GQVNUX1hNSVQpKVxubmV0L21hYzgwMjExL21lc2hfaHdtcC5jOjEyODM6XHRcdFx0bWVzaF9mYXN0X3R4X2NhY2hlKHNkYXRhLCBza2IsIG1wYXRoKTtcbm5ldC9tYWM4MDIxMS9tZXNoX2h3bXAuYy0xMjg0LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9NDM0PW1lc2hfZmFzdF90eF9nZXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTQ2Mi1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo0NjM6dm9pZCBtZXNoX2Zhc3RfdHhfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtNDY0LVx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz04MDE9c3RhdGljIHZvaWQgbWVzaF9wYXRoX2ZyZWVfcmN1KHN0cnVjdCBtZXNoX3RhYmxlICp0YmwsXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTgxNi1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo4MTc6c3RhdGljIHZvaWQgX19tZXNoX3BhdGhfZGVsKHN0cnVjdCBtZXNoX3RhYmxlICp0YmwsIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTgxOC17XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTg0Mj12b2lkIG1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy04NTEtXHRcdGlmIChyY3VfYWNjZXNzX3BvaW50ZXIobXBhdGgtXHUwMDNlbmV4dF9ob3ApID09IHN0YSlcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo4NTI6XHRcdFx0X19tZXNoX3BhdGhfZGVsKHRibCwgbXBhdGgpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg1My1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9ODU3PXN0YXRpYyB2b2lkIG1wcF9mbHVzaF9ieV9wcm94eShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtODY2LVx0XHRpZiAoZXRoZXJfYWRkcl9lcXVhbChtcGF0aC1cdTAwM2VtcHAsIHByb3h5KSlcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo4Njc6XHRcdFx0X19tZXNoX3BhdGhfZGVsKHRibCwgbXBhdGgpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg2OC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9ODcyPXN0YXRpYyB2b2lkIHRhYmxlX2ZsdXNoX2J5X2lmYWNlKHN0cnVjdCBtZXNoX3RhYmxlICp0YmwpXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg3OC1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobXBhdGgsIG4sIFx1MDAyNnRibC1cdTAwM2V3YWxrX2hlYWQsIHdhbGtfbGlzdCkge1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjg3OTpcdFx0X19tZXNoX3BhdGhfZGVsKHRibCwgbXBhdGgpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg4MC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9OTA2PXN0YXRpYyBpbnQgdGFibGVfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTE4LVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjkxOTpcdF9fbWVzaF9wYXRoX2RlbCh0YmwsIG1wYXRoKTtcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy05MjAtXHRzcGluX3VubG9ja19iaChcdTAwMjZ0YmwtXHUwMDNld2Fsa19sb2NrKTtcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTI1LS8qKlxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjkyNjogKiBtZXNoX3BhdGhfZGVsIC0gZGVsZXRlIGEgbWVzaCBwYXRoIGZyb20gdGhlIHRhYmxlXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTI3LSAqXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTkzMi0gKi9cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo5MzM6aW50IG1lc2hfcGF0aF9kZWwoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGNvbnN0IHU4ICphZGRyKVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTkzNC17XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwODI9dm9pZCBtZXNoX3BhdGhfdGJsX2V4cGlyZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTA5Mi1cdFx0ICAgICB0aW1lX2FmdGVyKGppZmZpZXMsIG1wYXRoLVx1MDAzZWV4cF90aW1lICYjNDM7IE1FU0hfUEFUSF9FWFBJUkUpKVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjEwOTM6XHRcdFx0X19tZXNoX3BhdGhfZGVsKHRibCwgbXBhdGgpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTEwOTQtXHR9XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MjY3Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjc5Ny1cdFx0XHRpZiAobXBwYXRoIFx1MDAyNlx1MDAyNiBtcGF0aClcbm5ldC9tYWM4MDIxMS90eC5jOjI3OTg6XHRcdFx0XHRtZXNoX3BhdGhfZGVsKHNkYXRhLCBtcGF0aC1cdTAwM2Vkc3QpO1xubmV0L21hYzgwMjExL3R4LmMtMjc5OS1cdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzM3MQoJCQkJCQkJb3V0cHV0OiAxOTYKCQkJCQkJCXRob3VnaHRzOiA1NjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgTWVzaCBQYXRoIFRhYmxlIGFuZCBGYXN0IFRYIENhY2hpbmcgaW4gbWFjODAyMTEqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgd2FudGVkIHRvIGNvbmZpcm0gd2hldGhlciBjZXJ0YWluIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGdsb2JhbC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgZnVuY3Rpb25zLiBJIHNlZSB0aGF0IGBtZXNoX2Zhc3RfdHhfY2FjaGVgIGlzIGEgZ2xvYmFsIHN5bWJvbCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQsIGdpdmVuIGl0cyB1c2Ugd2l0aGluIHRoZSBzeXN0ZW0uICBgX19tZXNoX3BhdGhfZGVsYCwgaG93ZXZlciwgaXMgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKTm93LCBsZXQmIzM5O3MgdHJhY2sgd2hlcmUgYF9fbWVzaF9wYXRoX2RlbGAgaXMgYWN0dWFsbHkgKmNhbGxlZCogZnJvbS4gSSYjMzk7dmUgaWRlbnRpZmllZCBzZXZlcmFsIGVudHJ5IHBvaW50cyBpbiBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYDogYG1lc2hfcGF0aF9kZWxgLCBgbWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3BgLCBhbmQgYG1lc2hfcGF0aF90YmxfZXhwaXJlYC4gIEkgYWxzbyBzZWUgaXQmIzM5O3MgY2FsbGVkIGZyb20gYGllZWU4MDIxMV9kZWxfbXBhdGhgIGluIGBuZXQvbWFjODAyMTEvY2ZnLmNgLiAgQWxzbyBgbWVzaF9uZXh0aG9wX2xvb2t1cGAgaW4gYG5ldC9tYWM4MDIxMS9tZXNoX2h3bXAuY2AgY2FsbHMgYG1lc2hfZmFzdF90eF9jYWNoZWAuCgpJJiMzOTttIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiBgbWVzaF9wYXRoX2RlbGAgYW5kIGBtZXNoX2Zhc3RfdHhfY2FjaGVgIG5vdywgYW5kIGhvdyB0aGV5IGludGVyYWN0LgoKTmV4dCwgSSBuZWVkIHRvIGRlZmluZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgd29yay4gVGhpcyByZXF1aXJlcyBgTUFDODAyMTFgLCBgTUFDODAyMTFfTUVTSGAsIGFuZCBgQ0ZHODAyMTFgIGVuYWJsZWQuIEZvciB0ZXN0aW5nLCBgTUFDODAyMTFfSFdTSU1gIGNvdWxkIGJlIGEgaGVscGZ1bCBvcHRpb25hbCBkcml2ZXIuCgpOb3cgdG8gdmVyaWZ5IHRoZSBwcm9wb3NlZCBgc2V0LXJlc3VsdHNgIGNvbmZpZ3VyYXRpb24uICBXZSBuZWVkIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoZSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGNvcnJlY3RseSBpbmNsdWRlIGBNQUM4MDIxMWAsIGBNQUM4MDIxMV9NRVNIYCwgYW5kIGBDRkc4MDIxMWAuIFRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0IHNob3VsZCBjb250YWluICBgbWVzaF9mYXN0X3R4X2NhY2hlYCwgYG1lc2hfcGF0aF9kZWxgLCBgbWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3BgLCBhbmQgYG1lc2hfcGF0aF90YmxfZXhwaXJlYCwgYXMgdGhlIGtleSBzeW1ib2xzIGZvciBleHBsb3JhdGlvbi4gKGFsdGVybmF0aXZlbHkgdXNpbmcgYG1lc2hfbmV4dGhvcF9sb29rdXBgIGlzIGFjY2VwdGFibGUpLiAgRmluYWxseSwgdGhlIGBSZWFzb25pbmdgIHNob3VsZCBjb25jaXNlbHkgZXhwbGFpbiAqd2h5KiB0aGlzIGlzIHdvcnRoIGZ1enppbmc6IGluIGJyaWVmLCBpdCBjb25jZXJucyBhIGZpeCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB0aGUgdXNlIG9mIGEgZGVsZXRlZCBtZXNoIHBhdGggaW4gdGhlIGZhc3QgVFggY2FjaGUgYnkgY2hlY2tpbmcgYW5kIHNldHRpbmcgdGhlIGBNRVNIX1BBVEhfREVMRVRFRGAgZmxhZy4gIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcuCgpPa2F5LCBldmVyeXRoaW5nIGNoZWNrcyBvdXQuICBJJiMzOTttIHNhdGlzZmllZCB3aXRoIHRoZSBhbmFseXNpcywgYW5kIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX01FU0gmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZXNoX2Zhc3RfdHhfY2FjaGUmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX2RlbCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfdGJsX2V4cGlyZSYjMzQ7LAogICAgJiMzNDttZXNoX25leHRob3BfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN5bmNocm9uaXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1lc2ggcGF0aHMgaW4gbWFjODAyMTEsIHNldHRpbmcgdGhlIE1FU0hfUEFUSF9ERUxFVEVEIGZsYWcgaW4gX19tZXNoX3BhdGhfZGVsKCkgYW5kIGNoZWNraW5nIGZvciBpdCB1bmRlciBsb2NrIGluIG1lc2hfZmFzdF90eF9jYWNoZSgpIHRvIHByZXZlbnQgY2FjaGluZyBkZWxldGVkIHBhdGhzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBtZXNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX01FU0gmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttZXNoX2Zhc3RfdHhfY2FjaGUmIzM0OywKICAgICYjMzQ7bWVzaF9wYXRoX2RlbCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCYjMzQ7LAogICAgJiMzNDttZXNoX3BhdGhfdGJsX2V4cGlyZSYjMzQ7LAogICAgJiMzNDttZXNoX25leHRob3BfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN5bmNocm9uaXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1lc2ggcGF0aHMgaW4gbWFjODAyMTEsIHNldHRpbmcgdGhlIE1FU0hfUEFUSF9ERUxFVEVEIGZsYWcgaW4gX19tZXNoX3BhdGhfZGVsKCkgYW5kIGNoZWNraW5nIGZvciBpdCB1bmRlciBsb2NrIGluIG1lc2hfZmFzdF90eF9jYWNoZSgpIHRvIHByZXZlbnQgY2FjaGluZyBkZWxldGVkIHBhdGhzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBtZXNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXNvbHZlcyBhIHJhY2UgY29uZGl0aW9uIGluIG1hYzgwMjExIG1lc2ggcGF0aCBtYW5hZ2VtZW50IHdoZXJlIGEgbWVzaCBwYXRoIG1hcmtlZCBmb3IgZGVsZXRpb24gY291bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBhZnRlciB0aGUgY2FjaGUgZmx1c2gsIGxlYWRpbmcgdG8gYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKS4gVGhlIGZpeCBzZXRzIGBNRVNIX1BBVEhfREVMRVRFRGAgdW5kZXIgbG9jayBpbiBgX19tZXNoX3BhdGhfZGVsKClgIGFuZCBjaGVja3MgZm9yIHRoaXMgZmxhZyBiZWZvcmUgaW5zZXJ0aW5nIGludG8gdGhlIGZhc3QgVFggY2FjaGUgaW4gYG1lc2hfZmFzdF90eF9jYWNoZSgpYC4gXG5cblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBvYmplY3QgbGlmZXRpbWUgYW5kIGNvbmN1cnJlbmN5IChVQUYpIGlzc3VlcyB3aGljaCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vciBkb2VzIGl0IGFmZmVjdCB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3Igc3RydWN0IHBhZGRpbmcuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNThhN2YyY2RmYTRkOTRjODFmZDEyYmM1OTc0ZTlhMDc3MWNiZWVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMDc6NDA6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMKaW5kZXggMDMxNzFjZjAwODU1Ny4uZGZjYzRmM2E3MDg4ZSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYwpAQCAtNTc3LDYgJiM0Mzs1NzcsMTIgQEAgdm9pZCBtZXNoX2Zhc3RfdHhfY2FjaGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCWdvdG8gdW5sb2NrX3N0YTsKIAogCXNwaW5fbG9jaygmYW1wO2NhY2hlLSZndDt3YWxrX2xvY2spOwomIzQzOwlpZiAoKFJFQURfT05DRShtcGF0aC0mZ3Q7ZmxhZ3MpICZhbXA7IE1FU0hfUEFUSF9ERUxFVEVEKSB8fAomIzQzOwkgICAgKG1wcGF0aCAmYW1wOyZhbXA7IChSRUFEX09OQ0UobXBwYXRoLSZndDtmbGFncykgJmFtcDsgTUVTSF9QQVRIX0RFTEVURUQpKSkgewomIzQzOwkJa2ZyZWUoZW50cnkpOwomIzQzOwkJZ290byB1bmxvY2tfY2FjaGU7CiYjNDM7CX0KJiM0MzsKIAlwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KCZhbXA7Y2FjaGUtJmd0O3JodCwKIAkJCQkJCSAmYW1wO2VudHJ5LSZndDtyaGFzaCwKIAkJCQkJCSBmYXN0X3R4X3JodF9wYXJhbXMpOwpAQCAtODEyLDYgJiM0Mzs4MTgsOSBAQCBzdGF0aWMgdm9pZCBfX21lc2hfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpCiB7CiAJaGxpc3RfZGVsX3JjdSgmYW1wO21wYXRoLSZndDt3YWxrX2xpc3QpOwogCXJoYXNodGFibGVfcmVtb3ZlX2Zhc3QoJmFtcDt0YmwtJmd0O3JoZWFkLCAmYW1wO21wYXRoLSZndDtyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7bXBhdGgtJmd0O3N0YXRlX2xvY2spOwomIzQzOwltcGF0aC0mZ3Q7ZmxhZ3MgfD0gTUVTSF9QQVRIX0RFTEVURUQ7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bXBhdGgtJmd0O3N0YXRlX2xvY2spOwogCWlmICh0YmwgPT0gJmFtcDttcGF0aC0mZ3Q7c2RhdGEtJmd0O3UubWVzaC5tcHBfcGF0aHMpCiAJCW1lc2hfZmFzdF90eF9mbHVzaF9hZGRyKG1wYXRoLSZndDtzZGF0YSwgbXBhdGgtJmd0O2RzdCk7CiAJZWxzZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2MAoJCQkJCQkJb3V0cHV0OiA4OAoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBNZXNoIFBhdGggVGFibGUqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQmIzM5O3MgYmVpbmcgY2hhbmdlZCBhbmQgd2h5LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgc28gSSYjMzk7bSBsZXZlcmFnaW5nIHRoZSBjb2RlIHNlYXJjaCB0b29scyB0byBleHBsb3JlIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBzZWUgd2hhdCBpbnRlcmFjdHMgd2l0aCB0aGUgYXJlYXMgYmVpbmcgbW9kaWZpZWQuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gZGVsdmUgaW50byBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCDigJMgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lcyA1NzcgYW5kIDgxMi4gVGhvc2UgbGlrZWx5IHJlcHJlc2VudCB0aGUgY29yZSBsb2NhdGlvbnMgb2YgdGhlIGNoYW5nZXMsIG9yIGF0IGxlYXN0IHRoZSBhcmVhcyBtb3N0IGRpcmVjdGx5IGltcGFjdGVkIGJ5IHRoZW0uIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIG1lc2ggcGF0aCB0YWJsZSBpcyBkb2luZyBhbmQgaG93IHRoZSBtb2RpZmljYXRpb25zIGFmZmVjdCBpdHMgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbG9naWMgb2YgdGhlIHJvdXRpbmcgZGVjaXNpb25zIGluIHRoZSBtZXNoIG5ldHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjA6XHRcdGJ1aWxkLmZhc3RfdHguZGFfb2ZmcyA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfaGRyLCBhZGRyMyk7XG4gNTYxOlx0XHRidWlsZC5mYXN0X3R4LnNhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjQpO1xuIDU2MjpcdFx0YnVpbGQubXBhdGggPSBtcGF0aDtcbiA1NjM6XHRcdG1lbWNweShidWlsZC5oZHIsIG1lc2hoZHIsIGJ1aWxkLmhkcmxlbik7XG4gNTY0Olx0XHRtZW1jcHkoYnVpbGQuaGRyICYjNDM7IGJ1aWxkLmhkcmxlbiwgcmZjMTA0Ml9oZWFkZXIsIHNpemVvZihyZmMxMDQyX2hlYWRlcikpO1xuIDU2NTpcdFx0YnVpbGQuaGRybGVuICYjNDM7PSBzaXplb2YocmZjMTA0Ml9oZWFkZXIpO1xuIDU2NjpcdFx0bWVtY3B5KGJ1aWxkLmZhc3RfdHguaGRyLCBoZHIsIGJ1aWxkLmZhc3RfdHguaGRyX2xlbik7XG4gNTY3Olx0XG4gNTY4Olx0XHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilidWlsZC5mYXN0X3R4LmhkcjtcbiA1Njk6XHRcdGlmIChidWlsZC5mYXN0X3R4LmtleSlcbiA1NzA6XHRcdFx0aGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wgfD0gY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTtcbiA1NzE6XHRcbiA1NzI6XHRcdHFjID0gaWVlZTgwMjExX2dldF9xb3NfY3RsKGhkcik7XG4gNTczOlx0XHRxY1sxXSB8PSBJRUVFODAyMTFfUU9TX0NUTF9NRVNIX0NPTlRST0xfUFJFU0VOVCBcdTAwM2VcdTAwM2UgODtcbiA1NzQ6XHRcbiA1NzU6XHRcdGVudHJ5ID0ga21lbWR1cChcdTAwMjZidWlsZCwgc2l6ZW9mKGJ1aWxkKSwgR0ZQX0FUT01JQyk7XG4gNTc2Olx0XHRpZiAoIWVudHJ5KVxuIDU3NzpcdFx0XHRnb3RvIHVubG9ja19zdGE7XG4gNTc4Olx0XG4gNTc5Olx0XHRzcGluX2xvY2soXHUwMDI2Y2FjaGUtXHUwMDNld2Fsa19sb2NrKTtcbiA1ODA6XHRcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4gNTgxOlx0XHQgICAgKG1wcGF0aCBcdTAwMjZcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XG4gNTgyOlx0XHRcdGtmcmVlKGVudHJ5KTtcbiA1ODM6XHRcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4gNTg0Olx0XHR9XG4gNTg1Olx0XG4gNTg2Olx0XHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFx1MDAyNmNhY2hlLVx1MDAzZXJodCxcbiA1ODc6XHRcdFx0XHRcdFx0XHQgXHUwMDI2ZW50cnktXHUwMDNlcmhhc2gsXG4gNTg4Olx0XHRcdFx0XHRcdFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XG4gNTg5Olx0XHRpZiAoSVNfRVJSKHByZXYpKSB7XG4gNTkwOlx0XHRcdGtmcmVlKGVudHJ5KTtcbiA1OTE6XHRcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4gNTkyOlx0XHR9XG4gNTkzOlx0XG4gNTk0Olx0XHQvKlxuIDU5NTpcdFx0ICogcmVwbGFjZSBhbnkgcHJldmlvdXMgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUsIGluIGNhc2Ugd2UmIzM5O3JlXG4gNTk2Olx0XHQgKiByZXBsYWNpbmcgaXQgd2l0aCBhIGRpZmZlcmVudCB0eXBlIChlLmcuIG1wYXRoIC1cdTAwM2UgbXBwKVxuIDU5NzpcdFx0ICovXG4gNTk4Olx0XHRpZiAodW5saWtlbHkocHJldikpIHtcbiA1OTk6XHRcdFx0cmhhc2h0YWJsZV9yZXBsYWNlX2Zhc3QoXHUwMDI2Y2FjaGUtXHUwMDNlcmh0LCBcdTAwMjZwcmV2LVx1MDAzZXJoYXNoLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODAwOlx0XG4gODAxOlx0c3RhdGljIHZvaWQgbWVzaF9wYXRoX2ZyZWVfcmN1KHN0cnVjdCBtZXNoX3RhYmxlICp0YmwsXG4gODAyOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxuIDgwMzpcdHtcbiA4MDQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbXBhdGgtXHUwMDNlc2RhdGE7XG4gODA1Olx0XG4gODA2Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4gODA3Olx0XHRtcGF0aC1cdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfUkVTT0xWSU5HIHwgTUVTSF9QQVRIX0RFTEVURUQ7XG4gODA4Olx0XHRtZXNoX2dhdGVfZGVsKHRibCwgbXBhdGgpO1xuIDgwOTpcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4gODEwOlx0XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNm1wYXRoLVx1MDAzZXRpbWVyKTtcbiA4MTE6XHRcdGF0b21pY19kZWMoXHUwMDI2c2RhdGEtXHUwMDNldS5tZXNoLm1wYXRocyk7XG4gODEyOlx0XHRhdG9taWNfZGVjKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKTtcbiA4MTM6XHRcdG1lc2hfcGF0aF9mbHVzaF9wZW5kaW5nKG1wYXRoKTtcbiA4MTQ6XHRcdGtmcmVlX3JjdShtcGF0aCwgcmN1KTtcbiA4MTU6XHR9XG4gODE2Olx0XG4gODE3Olx0c3RhdGljIHZvaWQgX19tZXNoX3BhdGhfZGVsKHN0cnVjdCBtZXNoX3RhYmxlICp0YmwsIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxuIDgxODpcdHtcbiA4MTk6XHRcdGhsaXN0X2RlbF9yY3UoXHUwMDI2bXBhdGgtXHUwMDNld2Fsa19saXN0KTtcbiA4MjA6XHRcdHJoYXNodGFibGVfcmVtb3ZlX2Zhc3QoXHUwMDI2dGJsLVx1MDAzZXJoZWFkLCBcdTAwMjZtcGF0aC1cdTAwM2VyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTtcbiA4MjE6XHRcdHNwaW5fbG9ja19iaChcdTAwMjZtcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA4MjI6XHRcdG1wYXRoLVx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9ERUxFVEVEO1xuIDgyMzpcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4gODI0Olx0XHRpZiAodGJsID09IFx1MDAyNm1wYXRoLVx1MDAzZXNkYXRhLVx1MDAzZXUubWVzaC5tcHBfcGF0aHMpXG4gODI1Olx0XHRcdG1lc2hfZmFzdF90eF9mbHVzaF9hZGRyKG1wYXRoLVx1MDAzZXNkYXRhLCBtcGF0aC1cdTAwM2Vkc3QpO1xuIDgyNjpcdFx0ZWxzZVxuIDgyNzpcdFx0XHRtZXNoX2Zhc3RfdHhfZmx1c2hfbXBhdGgobXBhdGgpO1xuIDgyODpcdFx0bWVzaF9wYXRoX2ZyZWVfcmN1KHRibCwgbXBhdGgpO1xuIDgyOTpcdH1cbiA4MzA6XHRcbiA4MzE6XHQvKipcbiA4MzI6XHQgKiBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCAtIERlbGV0ZXMgbWVzaCBwYXRocyBpZiB0aGVpciBuZXh0IGhvcCBtYXRjaGVzXG4gODMzOlx0ICpcbiA4MzQ6XHQgKiBAc3RhOiBtZXNoIHBlZXIgdG8gbWF0Y2hcbiA4MzU6XHQgKlxuIDgzNjpcdCAqIFJDVSBub3RlczogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIG1lc2ggcGxpbmsgdHJhbnNpdGlvbnMgZnJvbVxuIDgzNzpcdCAqIFBMSU5LX0VTVEFCIHRvIGFueSBvdGhlciBzdGF0ZSwgc2luY2UgUExJTktfRVNUQUIgc3RhdGUgaXMgdGhlIG9ubHkgb25lIHRoYXRcbiA4Mzg6XHQgKiBhbGxvd3MgcGF0aCBjcmVhdGlvbi4gVGhpcyB3aWxsIGhhcHBlbiBiZWZvcmUgdGhlIHN0YSBjYW4gYmUgZnJlZWQgKGJlY2F1c2VcbiA4Mzk6XHQgKiBzdGFfaW5mb19kZXN0cm95KCkgY2FsbHMgdGhpcykgc28gYW55IHJlYWRlciBpbiBhIHJjdSByZWFkIGJsb2NrIHdpbGwgYmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwMwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVc2UtQWZ0ZXItRnJlZSBDb25jdXJyZW5jeSBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgbG9naWMuIEl0IGxvb2tzIGxpa2UgaW4gYF9fbWVzaF9wYXRoX2RlbGAsIHdlJiMzOTtyZSBzZXR0aW5nIGBtcGF0aC0mZ3Q7ZmxhZ3MgfD0gTUVTSF9QQVRIX0RFTEVURURgICpiZWZvcmUqIGZsdXNoaW5nIHRoZSBmYXN0IFRYIGNhY2hlIGFuZCBmcmVlaW5nIHRoZSBtZW1vcnkuIFRoZSBjcnVjaWFsIHBhcnQgaXMgaW4gYG1lc2hfZmFzdF90eF9jYWNoZWAuIEl0JiMzOTtzIGNoZWNraW5nIGBSRUFEX09OQ0UobXBhdGgtJmd0O2ZsYWdzKSAmYW1wOyBNRVNIX1BBVEhfREVMRVRFRGAgKGFuZCBhIHNpbWlsYXIgY2hlY2sgZm9yIGBtcHBhdGhgKSB1bmRlciBhIHNwaW5sb2NrLiBJZiB0aGUgcGF0aCBpcyBtYXJrZWQgZGVsZXRlZCwgaXQgYmFpbHMgb3V0LCBhdm9pZGluZyBhZGRpbmcgYSBzdGFsZSBlbnRyeSB0byB0aGUgY2FjaGUuCgpBaCwgSSBzZWUuIFRoaXMgaXMgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZyBmaXg6IGEgdXNlLWFmdGVyLWZyZWUgcmFjZSBjb25kaXRpb24uIFRoZSBzY2VuYXJpbyB3YXMgdGhhdCBgbWVzaF9mYXN0X3R4X2NhY2hlYCBjb3VsZCBhZGQgYW4gZW50cnkgcG9pbnRpbmcgdG8gYSBgbXBhdGhgIChvciBgbXBwYXRoYCkgKmFmdGVyKiBgX19tZXNoX3BhdGhfZGVsYCBmbHVzaGVkIHRoZSBjYWNoZSBhbmQgZnJlZWQgdGhlIG1lbW9yeSwgcmVzdWx0aW5nIGluIGEgVUFGIHdoZW4gYG1lc2hfcGF0aF9mcmVlX3JjdWAgd2FzIGNhbGxlZC4gU2V0dGluZyB0aGUgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFnIGJlZm9yZSBmcmVlaW5nIGFuZCBjaGVja2luZyBpdCBpbiB0aGUgY2FjaGUgZW5zdXJlcyB0aGF0IG5vIHN0YWxlIGVudHJpZXMgYXJlIGFkZGVkIHRvIHRoZSBjYWNoZSwgdGh1cyBwcmV2ZW50aW5nIHRoZSBVQUYuIENsZXZlci4KCk5vdywgbGV0JiMzOTtzIGRvIGEgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiBhbnl0aGluZyBlbHNlIGlzIGdvaW5nIG9uLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLgoKRmlyc3QsIGlzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2s/IEdvb2QsIHRoZSBwYXRjaCBpbnZvbHZlcyBgbXBhdGgtJmd0O2ZsYWdzYCBpbiBgc3RydWN0IG1lc2hfcGF0aGAuIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGBmbGFnc2AgZmllbGQgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIGFuZCBpdCBpcy4gVGhpcyBpcyBhbGxvY2F0ZWQgdmlhIGBtZXNoX3BhdGhfYWxsb2NgIG9yIHNpbWlsYXIsIHdoaWNoIEkga25vdyBpbml0aWFsaXplcyB0aGUgc3RydWN0LiBUaGUgY2hlY2sgdXNlcyBgUkVBRF9PTkNFYCBzbyBpdCYjMzk7cyBzYWZlLgoKU2Vjb25kLCBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSB1c2VyLXNwYWNlIGNvcGllcywgaW9jdGxzLCBuZXRsaW5rIGludGVyYWN0aW9ucywgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgb3IgcGFkZGluZyBpc3N1ZXM/IE5vLiBJdCBzZWVtcyBmb2N1c2VkIHNvbGVseSBvbiBpbi1rZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb250cm9sIGZsb3cuCgpUaGlyZCwgYXJlIHRoZXJlIGFueSBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RocyB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGJ1ZmZlciByZWFkcz8gTm8uIFRoYXQgc2VlbXMgdW5saWtlbHkgZ2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBmaXguCgpGb3VydGgsIGlzIEtBU0FOIGFibGUgdG8gY2F0Y2ggdGhpcyBzb3J0IG9mIGJ1Zz8gWWVzLCBLQVNBTiB3b3VsZCBkZXRlY3QgdGhpcyB1c2UtYWZ0ZXItZnJlZSByYWNlLiBJdCB3b3VsZCBhbHNvIGRldGVjdCB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLiBLTVNBTiBpc24mIzM5O3QgcmVsZXZhbnQgaGVyZSwgYmVjYXVzZSB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3IgaW5mbyBsZWFrcyBpbnZvbHZlZC4KCkFscmlnaHQsIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBvdmVyIHRoZSBhbGxvY2F0aW9uIHJvdXRpbmVzLCBgbWVzaF9wYXRoX25ld2AsIGBtZXNoX3BhdGhfYXNzaWduYCwgb3Igd2hlcmV2ZXIgdGhlIGBzdHJ1Y3QgbWVzaF9wYXRoYCBpcyBhbGxvY2F0ZWQsIGp1c3QgdG8gYmUgMTAwJSBzdXJlLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHdlbGwtdGFyZ2V0ZWQgYW5kIGNvcnJlY3QgZml4IGZvciBhIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZXNoX3BhdGhfYWxsb2N8bWVzaF9wYXRoX25ldyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTQwMj1zdGF0aWNcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo0MDM6c3RydWN0IG1lc2hfcGF0aCAqbWVzaF9wYXRoX25ldyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy00MDQtXHRcdFx0XHRjb25zdCB1OCAqZHN0LCBnZnBfdCBnZnBfZmxhZ3MpXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTY4Nj1zdHJ1Y3QgbWVzaF9wYXRoICptZXNoX3BhdGhfYWRkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy03MDEtXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NzAyOlx0bmV3X21wYXRoID0gbWVzaF9wYXRoX25ldyhzZGF0YSwgZHN0LCBHRlBfQVRPTUlDKTtcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy03MDMtXHRpZiAoIW5ld19tcGF0aClcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9NzI4PWludCBtcHBfcGF0aF9hZGQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTc0MS1cbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo3NDI6XHRuZXdfbXBhdGggPSBtZXNoX3BhdGhfbmV3KHNkYXRhLCBkc3QsIEdGUF9BVE9NSUMpO1xubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTc0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc1OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBtZXNoX3BhdGhfbmV3YCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBtZXNoX3BhdGhfbmV3YC4gSSB3YW50IHRvIGdldCBhIHF1aWNrIGZlZWwgZm9yIGl0cyBpbXBsZW1lbnRhdGlvbiDigJMgcHJvYmFibHkgbm90IGEgZGVlcCBkaXZlIGF0IHRoaXMgc3RhZ2UsIGp1c3QgYSBwcmVsaW1pbmFyeSBhc3Nlc3NtZW50LiBJJiMzOTttIGxvb2tpbmcgZm9yIGl0cyBvdmVyYWxsIHN0cnVjdHVyZSwgYW55IG9idmlvdXMgcmVkIGZsYWdzLCBvciBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gTXkgaW1tZWRpYXRlIGdvYWxzIGFyZSB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0sIGlkZW50aWZ5IGl0cyBrZXkgZGF0YSBzdHJ1Y3R1cmVzIG9yIGFsZ29yaXRobXMsIGFuZCBwaW5wb2ludCBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIEl04oCZcyBsaWtlbHkgYSBjb25zdHJ1Y3RvciwgcGF0aC1nZW5lcmF0aW9uLCBvciBtZXNoLW1hbmlwdWxhdGlvbiBmdW5jdGlvbiwgZGVwZW5kaW5nIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiB1c2VkLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgb25lIGZpdHMgbXkgaW50dWl0aW9uIG9mIHRoZSBzeXN0ZW0mIzM5O3MgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0fVxuIDQwMTpcdFxuIDQwMjpcdHN0YXRpY1xuIDQwMzpcdHN0cnVjdCBtZXNoX3BhdGggKm1lc2hfcGF0aF9uZXcoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gNDA0Olx0XHRcdFx0XHRjb25zdCB1OCAqZHN0LCBnZnBfdCBnZnBfZmxhZ3MpXG4gNDA1Olx0e1xuIDQwNjpcdFx0c3RydWN0IG1lc2hfcGF0aCAqbmV3X21wYXRoO1xuIDQwNzpcdFxuIDQwODpcdFx0bmV3X21wYXRoID0ga3phbGxvY19vYmooc3RydWN0IG1lc2hfcGF0aCwgZ2ZwX2ZsYWdzKTtcbiA0MDk6XHRcdGlmICghbmV3X21wYXRoKVxuIDQxMDpcdFx0XHRyZXR1cm4gTlVMTDtcbiA0MTE6XHRcbiA0MTI6XHRcdG1lbWNweShuZXdfbXBhdGgtXHUwMDNlZHN0LCBkc3QsIEVUSF9BTEVOKTtcbiA0MTM6XHRcdGV0aF9icm9hZGNhc3RfYWRkcihuZXdfbXBhdGgtXHUwMDNlcmFubl9zbmRfYWRkcik7XG4gNDE0Olx0XHRuZXdfbXBhdGgtXHUwMDNlaXNfcm9vdCA9IGZhbHNlO1xuIDQxNTpcdFx0bmV3X21wYXRoLVx1MDAzZXNkYXRhID0gc2RhdGE7XG4gNDE2Olx0XHRuZXdfbXBhdGgtXHUwMDNlZmxhZ3MgPSAwO1xuIDQxNzpcdFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZuZXdfbXBhdGgtXHUwMDNlZnJhbWVfcXVldWUpO1xuIDQxODpcdFx0bmV3X21wYXRoLVx1MDAzZWV4cF90aW1lID0gamlmZmllcztcbiA0MTk6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNm5ld19tcGF0aC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiA0MjA6XHRcdHRpbWVyX3NldHVwKFx1MDAyNm5ld19tcGF0aC1cdTAwM2V0aW1lciwgbWVzaF9wYXRoX3RpbWVyLCAwKTtcbiA0MjE6XHRcbiA0MjI6XHRcdHJldHVybiBuZXdfbXBhdGg7XG4gNDIzOlx0fVxuIDQyNDpcdFxuIDQyNTpcdHN0YXRpYyB2b2lkIG1lc2hfZmFzdF90eF9lbnRyeV9mcmVlKHN0cnVjdCBtZXNoX3R4X2NhY2hlICpjYWNoZSxcbiA0MjY6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX21lc2hfZmFzdF90eCAqZW50cnkpXG4gNDI3Olx0e1xuIDQyODpcdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZlbnRyeS1cdTAwM2V3YWxrX2xpc3QpO1xuIDQyOTpcdFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcdTAwMjZjYWNoZS1cdTAwM2VyaHQsIFx1MDAyNmVudHJ5LVx1MDAzZXJoYXNoLCBmYXN0X3R4X3JodF9wYXJhbXMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTEyCgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtBU0FOIEltcGFjdCBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRocm91Z2ggdGhlIGxvZ2ljLiBFdmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyBgbmV3X21wYXRoYCBpcyBiZWluZyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY2AsIG1lYW5pbmcgaXQmIzM5O3MgemVyby1pbml0aWFsaXplZCBmcm9tIHRoZSBzdGFydCwgYW5kIHRoZSBgbmV3X21wYXRoLSZndDtmbGFnc2Agc3RhcnRzIGF0IHplcm8gYXMgd2VsbC4gR29vZCwgdGhhdCBoZWxwcy4KClRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBoZXJlIGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBBIGRlbGV0ZWQgYG1wYXRoYCBtaWdodCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIGBmYXN0X3R4YCBjYWNoZSAqYWZ0ZXIqIHRoZSBjYWNoZSBoYXMgYmVlbiBmbHVzaGVkIGJ5IGBfX21lc2hfcGF0aF9kZWxgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgYSB2ZXJ5IG5hc3R5IGJ1Zy4KCkhvd2V2ZXIsIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMsIHRoaXMgaXMgc3F1YXJlbHkgaW4gdGhlIHJlYWxtIG9mIGNvbmN1cnJlbmN5IGVycm9ycy4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gY2F0Y2ggdGhlc2UgdHlwZXMgb2YgYnVncyDigJMgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeS4gVGhpcyBwYXRjaCBkb2VzbuKAmXQgaW50cm9kdWNlIGFueSBuZXcgaW5zdGFuY2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBub3IgZG9lcyBpdCBhcHBlYXIgdG8gY3JlYXRlIGFueSBpbmZvcm1hdGlvbiBsZWFrcy4gSXQmIzM5O3Mgc29sZWx5IGEgY29uY3VycmVuY3kgcHJvdGVjdGlvbiBtZWFzdXJlLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUsIGFuZCBvbmx5IGFmZmVjdHMgbWVtb3J5IHdoaWNoIGlzIHByb3Blcmx5IGBremFsbG9jYCYjMzk7ZCwgSSYjMzk7bSBjb25maWRlbnQgd2UgY2FuIHNldCBgTmVlZHNLTVNBTiA9IGZhbHNlYCBiZWNhdXNlIGl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhlIHJlYXNvbmluZyBJIGp1c3QgbGFpZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc29sdmVzIGEgcmFjZSBjb25kaXRpb24gaW4gbWFjODAyMTEgbWVzaCBwYXRoIG1hbmFnZW1lbnQgd2hlcmUgYSBtZXNoIHBhdGggbWFya2VkIGZvciBkZWxldGlvbiBjb3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGFmdGVyIHRoZSBjYWNoZSBmbHVzaCwgbGVhZGluZyB0byBhIHVzZS1hZnRlci1mcmVlIChVQUYpLiBUaGUgZml4IHNldHMgYE1FU0hfUEFUSF9ERUxFVEVEYCB1bmRlciBsb2NrIGluIGBfX21lc2hfcGF0aF9kZWwoKWAgYW5kIGNoZWNrcyBmb3IgdGhpcyBmbGFnIGJlZm9yZSBpbnNlcnRpbmcgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBpbiBgbWVzaF9mYXN0X3R4X2NhY2hlKClgLiBcblxuVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIG9iamVjdCBsaWZldGltZSBhbmQgY29uY3VycmVuY3kgKFVBRikgaXNzdWVzIHdoaWNoIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IEtBU0FOLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm9yIGRvZXMgaXQgYWZmZWN0IHVzZXItc3BhY2UgY29weSBwYXRocyBvciBzdHJ1Y3QgcGFkZGluZy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXNvbHZlcyBhIHJhY2UgY29uZGl0aW9uIGluIG1hYzgwMjExIG1lc2ggcGF0aCBtYW5hZ2VtZW50IHdoZXJlIGEgbWVzaCBwYXRoIG1hcmtlZCBmb3IgZGVsZXRpb24gY291bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBhZnRlciB0aGUgY2FjaGUgZmx1c2gsIGxlYWRpbmcgdG8gYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKS4gVGhlIGZpeCBzZXRzIGBNRVNIX1BBVEhfREVMRVRFRGAgdW5kZXIgbG9jayBpbiBgX19tZXNoX3BhdGhfZGVsKClgIGFuZCBjaGVja3MgZm9yIHRoaXMgZmxhZyBiZWZvcmUgaW5zZXJ0aW5nIGludG8gdGhlIGZhc3QgVFggY2FjaGUgaW4gYG1lc2hfZmFzdF90eF9jYWNoZSgpYC4gXG5cblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBvYmplY3QgbGlmZXRpbWUgYW5kIGNvbmN1cnJlbmN5IChVQUYpIGlzc3VlcyB3aGljaCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vciBkb2VzIGl0IGFmZmVjdCB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3Igc3RydWN0IHBhZGRpbmcuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MDo0NC43NzM1NTk4NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjM2MDg3MDgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfTUVTSFwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZXNoX2Zhc3RfdHhfY2FjaGVcIixcbiAgICBcIm1lc2hfcGF0aF9kZWxcIixcbiAgICBcIm1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wXCIsXG4gICAgXCJtZXNoX3BhdGhfdGJsX2V4cGlyZVwiLFxuICAgIFwibWVzaF9uZXh0aG9wX2xvb2t1cFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVzb2x2ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBtYWM4MDIxMSBtZXNoIHBhdGggbWFuYWdlbWVudCB3aGVyZSBhIG1lc2ggcGF0aCBtYXJrZWQgZm9yIGRlbGV0aW9uIGNvdWxkIGJlIGluc2VydGVkIGludG8gdGhlIGZhc3QgVFggY2FjaGUgYWZ0ZXIgdGhlIGNhY2hlIGZsdXNoLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikuIFRoZSBmaXggc2V0cyBgTUVTSF9QQVRIX0RFTEVURURgIHVuZGVyIGxvY2sgaW4gYF9fbWVzaF9wYXRoX2RlbCgpYCBhbmQgY2hlY2tzIGZvciB0aGlzIGZsYWcgYmVmb3JlIGluc2VydGluZyBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGluIGBtZXNoX2Zhc3RfdHhfY2FjaGUoKWAuIFxcblxcblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBvYmplY3QgbGlmZXRpbWUgYW5kIGNvbmN1cnJlbmN5IChVQUYpIGlzc3VlcyB3aGljaCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vciBkb2VzIGl0IGFmZmVjdCB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3Igc3RydWN0IHBhZGRpbmcuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN5bmNocm9uaXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1lc2ggcGF0aHMgaW4gbWFjODAyMTEsIHNldHRpbmcgdGhlIE1FU0hfUEFUSF9ERUxFVEVEIGZsYWcgaW4gX19tZXNoX3BhdGhfZGVsKCkgYW5kIGNoZWNraW5nIGZvciBpdCB1bmRlciBsb2NrIGluIG1lc2hfZmFzdF90eF9jYWNoZSgpIHRvIHByZXZlbnQgY2FjaGluZyBkZWxldGVkIHBhdGhzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBtZXNoIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjQ0Ljc3MzU2NTU1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNTA0MDk0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU4YTdmMmNkZmE0ZDk0YzgxZmQxMmJjNTk3NGU5YTA3NzFjYmVlZDBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwNzo0MDo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNcXG5pbmRleCAwMzE3MWNmMDA4NTU3Li5kZmNjNGYzYTcwODhlIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1xcbkBAIC01NzcsNiArNTc3LDEyIEBAIHZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRnb3RvIHVubG9ja19zdGE7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNmNhY2hlLVxcdTAwM2V3YWxrX2xvY2spO1xcbitcXHRpZiAoKFJFQURfT05DRShtcGF0aC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XFxuK1xcdCAgICAobXBwYXRoIFxcdTAwMjZcXHUwMDI2IChSRUFEX09OQ0UobXBwYXRoLVxcdTAwM2VmbGFncykgXFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XFxuK1xcdFxcdGtmcmVlKGVudHJ5KTtcXG4rXFx0XFx0Z290byB1bmxvY2tfY2FjaGU7XFxuK1xcdH1cXG4rXFxuIFxcdHByZXYgPSByaGFzaHRhYmxlX2xvb2t1cF9nZXRfaW5zZXJ0X2Zhc3QoXFx1MDAyNmNhY2hlLVxcdTAwM2VyaHQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2ZW50cnktXFx1MDAzZXJoYXNoLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgZmFzdF90eF9yaHRfcGFyYW1zKTtcXG5AQCAtODEyLDYgKzgxOCw5IEBAIHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcXG4ge1xcbiBcXHRobGlzdF9kZWxfcmN1KFxcdTAwMjZtcGF0aC1cXHUwMDNld2Fsa19saXN0KTtcXG4gXFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcXHUwMDI2dGJsLVxcdTAwM2VyaGVhZCwgXFx1MDAyNm1wYXRoLVxcdTAwM2VyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTtcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZtcGF0aC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdG1wYXRoLVxcdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfREVMRVRFRDtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0aWYgKHRibCA9PSBcXHUwMDI2bXBhdGgtXFx1MDAzZXNkYXRhLVxcdTAwM2V1Lm1lc2gubXBwX3BhdGhzKVxcbiBcXHRcXHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cXHUwMDNlc2RhdGEsIG1wYXRoLVxcdTAwM2Vkc3QpO1xcbiBcXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjQ2LjIwOTIzODkxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzMwODU2NjkwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX01FU0hcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWVzaF9mYXN0X3R4X2NhY2hlXCIsXG4gICAgXCJtZXNoX3BhdGhfZGVsXCIsXG4gICAgXCJtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcFwiLFxuICAgIFwibWVzaF9wYXRoX3RibF9leHBpcmVcIixcbiAgICBcIm1lc2hfbmV4dGhvcF9sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzeW5jaHJvbml6YXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtZXNoIHBhdGhzIGluIG1hYzgwMjExLCBzZXR0aW5nIHRoZSBNRVNIX1BBVEhfREVMRVRFRCBmbGFnIGluIF9fbWVzaF9wYXRoX2RlbCgpIGFuZCBjaGVja2luZyBmb3IgaXQgdW5kZXIgbG9jayBpbiBtZXNoX2Zhc3RfdHhfY2FjaGUoKSB0byBwcmV2ZW50IGNhY2hpbmcgZGVsZXRlZCBwYXRocy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgbWVzaCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU4YTdmMmNkZmE0ZDk0YzgxZmQxMmJjNTk3NGU5YTA3NzFjYmVlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA3OjQwOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jIGIvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG5pbmRleCAwMzE3MWNmMDA4NTU3Li5kZmNjNGYzYTcwODhlIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG4rKysgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNcbkBAIC01NzcsNiArNTc3LDEyIEBAIHZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRnb3RvIHVubG9ja19zdGE7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2Y2FjaGUtXHUwMDNld2Fsa19sb2NrKTtcbitcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4rXHQgICAgKG1wcGF0aCBcdTAwMjZcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XG4rXHRcdGtmcmVlKGVudHJ5KTtcbitcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4rXHR9XG4rXG4gXHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFx1MDAyNmNhY2hlLVx1MDAzZXJodCxcbiBcdFx0XHRcdFx0XHQgXHUwMDI2ZW50cnktXHUwMDNlcmhhc2gsXG4gXHRcdFx0XHRcdFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XG5AQCAtODEyLDYgKzgxOCw5IEBAIHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcbiB7XG4gXHRobGlzdF9kZWxfcmN1KFx1MDAyNm1wYXRoLVx1MDAzZXdhbGtfbGlzdCk7XG4gXHRyaGFzaHRhYmxlX3JlbW92ZV9mYXN0KFx1MDAyNnRibC1cdTAwM2VyaGVhZCwgXHUwMDI2bXBhdGgtXHUwMDNlcmhhc2gsIG1lc2hfcmh0X3BhcmFtcyk7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4rXHRtcGF0aC1cdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfREVMRVRFRDtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0aWYgKHRibCA9PSBcdTAwMjZtcGF0aC1cdTAwM2VzZGF0YS1cdTAwM2V1Lm1lc2gubXBwX3BhdGhzKVxuIFx0XHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cdTAwM2VzZGF0YSwgbXBhdGgtXHUwMDNlZHN0KTtcbiBcdGVsc2VcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjQ2LjIwOTI0MDE2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg2NDIwOTAyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IG1hYzgwMjExIE1lc2ggUGF0aCBUYWJsZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiBiZWNhdXNlIG9mIGl0cyBwb3RlbnRpYWwgbmV0d29yayBpbnRlcmFjdGlvbnMuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgYG1lc2hfZmFzdF90eF9jYWNoZWAgZnVuY3Rpb24uIFRoZXkndmUgYWRkZWQgYSBjaGVjayBmb3IgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFncyBvbiBlaXRoZXIgYG1wYXRoYCBvciBgbXBwYXRoYCBiZWZvcmUgZG9pbmcgYW4gaW5zZXJ0aW9uL2xvb2t1cCBpbiB0aGUgcmhhc2h0YWJsZS4gQWRkaXRpb25hbGx5LCBpbiBgX19tZXNoX3BhdGhfZGVsYCwgaXQncyBzZXR0aW5nIHRoZSBgTUVTSF9QQVRIX0RFTEVURURgIGZsYWcgdW5kZXIgYSBsb2NrLiBUaGlzIGluZGljYXRlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBiZWluZyBhZGRyZXNzZWQgb3IgYSBjaGFuZ2UgaW4gaG93IGVudHJpZXMgYXJlIGJlaW5nIG1hbmFnZWQgaW4gdGhlIG1lc2ggcGF0aCB0YWJsZS4gTG9va3MgbGlrZSB0aGV5IGFkZGVkIHRoZSBgc3Bpbl9sb2NrX2JoYCBhbmQgYHNwaW5fdW5sb2NrX2JoYCBhcm91bmQgdGhlIGZsYWcgc2V0dGluZy5cblxuTm93LCBmb3IgYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBsZXQncyBjb25zaWRlciB0aGUgYnJvYWRlciBjb250ZXh0LiBgbmV0L21hYzgwMjExYCBpcyB0aGUgTGludXggd2lyZWxlc3MgODAyLjExIHN1YnN5c3RlbS4gQW5kLCBpbXBvcnRhbnRseSwgd2UgY2FuIGVtdWxhdGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nICg4MDIuMTFzKSBpbiBRRU1VIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHN5emthbGxlciBoYXMgcHJldHR5IGdvb2Qgc3VwcG9ydCBmb3IuIFRoYXQncyBhIGh1Z2UgZ3JlZW4gbGlnaHQhXG5cblRvIGZpcm0gdXAgbXkgYXNzZXNzbWVudCwgSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gc2VlIGlmIG1lc2ggc3VwcG9ydCBpcyBlbmFibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYWNlLiBBIHF1aWNrIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB3aWxsIGxldCBtZSBxdWlja2x5IHB1bGwgdXAgYG5ldC9tYWM4MDIxMS9LY29uZmlnYCBhbmQgYG5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGlzIHdpbGwgZ3VpZGUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IgYW5kIGRldGVybWluZSBpZiB0aGUgZnV6emluZyBlZmZvcnQgd2lsbCBiZSB3b3J0aHdoaWxlLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBhbnkgbmV3LCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBzdGF0ZXMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGluY3JlYXNlZCB1c2Ugb2YgbG9ja3MgYW5kIGZsYWdzLCB3aGljaCBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgcmFjZSBjb25kaXRpb24gdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTQ4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDA6NTQuODUxMzMyMTc2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU2NTpcXHRcXHRidWlsZC5oZHJsZW4gKz0gc2l6ZW9mKHJmYzEwNDJfaGVhZGVyKTtcXG4gNTY2OlxcdFxcdG1lbWNweShidWlsZC5mYXN0X3R4LmhkciwgaGRyLCBidWlsZC5mYXN0X3R4Lmhkcl9sZW4pO1xcbiA1Njc6XFx0XFxuIDU2ODpcXHRcXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilidWlsZC5mYXN0X3R4LmhkcjtcXG4gNTY5OlxcdFxcdGlmIChidWlsZC5mYXN0X3R4LmtleSlcXG4gNTcwOlxcdFxcdFxcdGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCB8PSBjcHVfdG9fbGUxNihJRUVFODAyMTFfRkNUTF9QUk9URUNURUQpO1xcbiA1NzE6XFx0XFxuIDU3MjpcXHRcXHRxYyA9IGllZWU4MDIxMV9nZXRfcW9zX2N0bChoZHIpO1xcbiA1NzM6XFx0XFx0cWNbMV0gfD0gSUVFRTgwMjExX1FPU19DVExfTUVTSF9DT05UUk9MX1BSRVNFTlQgXFx1MDAzZVxcdTAwM2UgODtcXG4gNTc0OlxcdFxcbiA1NzU6XFx0XFx0ZW50cnkgPSBrbWVtZHVwKFxcdTAwMjZidWlsZCwgc2l6ZW9mKGJ1aWxkKSwgR0ZQX0FUT01JQyk7XFxuIDU3NjpcXHRcXHRpZiAoIWVudHJ5KVxcbiA1Nzc6XFx0XFx0XFx0Z290byB1bmxvY2tfc3RhO1xcbiA1Nzg6XFx0XFxuIDU3OTpcXHRcXHRzcGluX2xvY2soXFx1MDAyNmNhY2hlLVxcdTAwM2V3YWxrX2xvY2spO1xcbiA1ODA6XFx0XFx0aWYgKChSRUFEX09OQ0UobXBhdGgtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IE1FU0hfUEFUSF9ERUxFVEVEKSB8fFxcbiA1ODE6XFx0XFx0ICAgIChtcHBhdGggXFx1MDAyNlxcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IE1FU0hfUEFUSF9ERUxFVEVEKSkpIHtcXG4gNTgyOlxcdFxcdFxcdGtmcmVlKGVudHJ5KTtcXG4gNTgzOlxcdFxcdFxcdGdvdG8gdW5sb2NrX2NhY2hlO1xcbiA1ODQ6XFx0XFx0fVxcbiA1ODU6XFx0XFxuIDU4NjpcXHRcXHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFxcdTAwMjZjYWNoZS1cXHUwMDNlcmh0LFxcbiA1ODc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZlbnRyeS1cXHUwMDNlcmhhc2gsXFxuIDU4ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgZmFzdF90eF9yaHRfcGFyYW1zKTtcXG4gNTg5OlxcdFxcdGlmIChJU19FUlIocHJldikpIHtcXG4gNTkwOlxcdFxcdFxcdGtmcmVlKGVudHJ5KTtcXG4gNTkxOlxcdFxcdFxcdGdvdG8gdW5sb2NrX2NhY2hlO1xcbiA1OTI6XFx0XFx0fVxcbiA1OTM6XFx0XFxuIDU5NDpcXHRcXHQvKlxcbiA1OTU6XFx0XFx0ICogcmVwbGFjZSBhbnkgcHJldmlvdXMgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUsIGluIGNhc2Ugd2UncmVcXG4gNTk2OlxcdFxcdCAqIHJlcGxhY2luZyBpdCB3aXRoIGEgZGlmZmVyZW50IHR5cGUgKGUuZy4gbXBhdGggLVxcdTAwM2UgbXBwKVxcbiA1OTc6XFx0XFx0ICovXFxuIDU5ODpcXHRcXHRpZiAodW5saWtlbHkocHJldikpIHtcXG4gNTk5OlxcdFxcdFxcdHJoYXNodGFibGVfcmVwbGFjZV9mYXN0KFxcdTAwMjZjYWNoZS1cXHUwMDNlcmh0LCBcXHUwMDI2cHJldi1cXHUwMDNlcmhhc2gsXFxuIDYwMDpcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2ZW50cnktXFx1MDAzZXJoYXNoLCBmYXN0X3R4X3JodF9wYXJhbXMpO1xcbiA2MDE6XFx0XFx0XFx0aGxpc3RfZGVsX3JjdShcXHUwMDI2cHJldi1cXHUwMDNld2Fsa19saXN0KTtcXG4gNjAyOlxcdFxcdFxcdGtmcmVlX3JjdShwcmV2LCBmYXN0X3R4LnJjdV9oZWFkKTtcXG4gNjAzOlxcdFxcdH1cXG4gNjA0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MDo1NC44NTE0MjE4NjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjAyODI1MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1lc2ggUGF0aCBUYWJsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0aCBkZWxldGlvbiBwcm9jZXNzLiBMZXQncyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBNeSBpbnN0aW5jdHMgYXJlIHRlbGxpbmcgbWUgdG8gbG9vayBhdCBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYF9fbWVzaF9wYXRoX2RlbGAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgaG93IHBhdGhzIGFyZSByZW1vdmVkIGZyb20gdGhlIG1lc2ggcGF0aCB0YWJsZSwgc28gaXQgc2hvdWxkIGJlIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGtleSBsb2dpYyBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byBwYXRoIG1hbmFnZW1lbnQgaGVyZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NzAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjU3LjQ1NDI0ODgwNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MDUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MDU6XFx0XFxuIDgwNjpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gODA3OlxcdFxcdG1wYXRoLVxcdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfUkVTT0xWSU5HIHwgTUVTSF9QQVRIX0RFTEVURUQ7XFxuIDgwODpcXHRcXHRtZXNoX2dhdGVfZGVsKHRibCwgbXBhdGgpO1xcbiA4MDk6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gODEwOlxcdFxcdHRpbWVyX3NodXRkb3duX3N5bmMoXFx1MDAyNm1wYXRoLVxcdTAwM2V0aW1lcik7XFxuIDgxMTpcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZzZGF0YS1cXHUwMDNldS5tZXNoLm1wYXRocyk7XFxuIDgxMjpcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZ0YmwtXFx1MDAzZWVudHJpZXMpO1xcbiA4MTM6XFx0XFx0bWVzaF9wYXRoX2ZsdXNoX3BlbmRpbmcobXBhdGgpO1xcbiA4MTQ6XFx0XFx0a2ZyZWVfcmN1KG1wYXRoLCByY3UpO1xcbiA4MTU6XFx0fVxcbiA4MTY6XFx0XFxuIDgxNzpcXHRzdGF0aWMgdm9pZCBfX21lc2hfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpXFxuIDgxODpcXHR7XFxuIDgxOTpcXHRcXHRobGlzdF9kZWxfcmN1KFxcdTAwMjZtcGF0aC1cXHUwMDNld2Fsa19saXN0KTtcXG4gODIwOlxcdFxcdHJoYXNodGFibGVfcmVtb3ZlX2Zhc3QoXFx1MDAyNnRibC1cXHUwMDNlcmhlYWQsIFxcdTAwMjZtcGF0aC1cXHUwMDNlcmhhc2gsIG1lc2hfcmh0X3BhcmFtcyk7XFxuIDgyMTpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gODIyOlxcdFxcdG1wYXRoLVxcdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfREVMRVRFRDtcXG4gODIzOlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZtcGF0aC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuIDgyNDpcXHRcXHRpZiAodGJsID09IFxcdTAwMjZtcGF0aC1cXHUwMDNlc2RhdGEtXFx1MDAzZXUubWVzaC5tcHBfcGF0aHMpXFxuIDgyNTpcXHRcXHRcXHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cXHUwMDNlc2RhdGEsIG1wYXRoLVxcdTAwM2Vkc3QpO1xcbiA4MjY6XFx0XFx0ZWxzZVxcbiA4Mjc6XFx0XFx0XFx0bWVzaF9mYXN0X3R4X2ZsdXNoX21wYXRoKG1wYXRoKTtcXG4gODI4OlxcdFxcdG1lc2hfcGF0aF9mcmVlX3JjdSh0YmwsIG1wYXRoKTtcXG4gODI5OlxcdH1cXG4gODMwOlxcdFxcbiA4MzE6XFx0LyoqXFxuIDgzMjpcXHQgKiBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcCAtIERlbGV0ZXMgbWVzaCBwYXRocyBpZiB0aGVpciBuZXh0IGhvcCBtYXRjaGVzXFxuIDgzMzpcXHQgKlxcbiA4MzQ6XFx0ICogQHN0YTogbWVzaCBwZWVyIHRvIG1hdGNoXFxuIDgzNTpcXHQgKlxcbiA4MzY6XFx0ICogUkNVIG5vdGVzOiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgbWVzaCBwbGluayB0cmFuc2l0aW9ucyBmcm9tXFxuIDgzNzpcXHQgKiBQTElOS19FU1RBQiB0byBhbnkgb3RoZXIgc3RhdGUsIHNpbmNlIFBMSU5LX0VTVEFCIHN0YXRlIGlzIHRoZSBvbmx5IG9uZSB0aGF0XFxuIDgzODpcXHQgKiBhbGxvd3MgcGF0aCBjcmVhdGlvbi4gVGhpcyB3aWxsIGhhcHBlbiBiZWZvcmUgdGhlIHN0YSBjYW4gYmUgZnJlZWQgKGJlY2F1c2VcXG4gODM5OlxcdCAqIHN0YV9pbmZvX2Rlc3Ryb3koKSBjYWxscyB0aGlzKSBzbyBhbnkgcmVhZGVyIGluIGEgcmN1IHJlYWQgYmxvY2sgd2lsbCBiZVxcbiA4NDA6XFx0ICogcHJvdGVjdGVkIGFnYWluc3QgdGhlIHBsaW5rIGRpc2FwcGVhcmluZy5cXG4gODQxOlxcdCAqL1xcbiA4NDI6XFx0dm9pZCBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4gODQzOlxcdHtcXG4gODQ0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVxcdTAwM2VzZGF0YTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDA6NTcuNDU0MzMyMTY2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjExODc0MTc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSBmb3IgbWVzaF9wYXRodGJsLmMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgbWVzaF9wYXRodGJsLmNgIGlzIGJlaW5nIGNvbXBpbGVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRyaXZpbmcgdGhhdCBwcm9jZXNzLiBHaXZlbiB0aGF0IGl0J3MgcGFydCBvZiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3RhY2ssIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGNlbnRyYWwgYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlcyB3aXRoaW4gdGhhdCBhcmVhLiBUaGVyZWZvcmUsIEkgd2lsbCBpbW1lZGlhdGVseSBoZWFkIG92ZXIgdG8gYG5ldC9tYWM4MDIxMS9LY29uZmlnYCB0byBzdGFydCB3aXRoLCBhcyB0aGF0J3Mgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBmdW5jdGlvbmFsaXR5LiBBZnRlciB0aGF0LCBJIHdpbGwgYWxzbyBleGFtaW5lIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIHNlZSBob3cgdGhvc2Ugb3B0aW9ucyB0cmFuc2xhdGUgaW50byBidWlsZCBjb21tYW5kcyBhbmQgb2JqZWN0IGZpbGUgaW5jbHVzaW9uLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0J3MgcmVxdWlyZWQgaW4gdGhlIGJyb2FkZXIgc3lzdGVtIHRvIGVuYWJsZSB0aGUgY29tcGlsYXRpb24gb2YgYG1lc2hfcGF0aHRibC5jYC4gRnJvbSB0aGVyZSBJIHdpbGwgaW52ZXN0aWdhdGUgcmVsZXZhbnQga2VybmVsIHN5bWJvbHMgdG8gZXN0YWJsaXNoIHRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBtZXNoIHBhdGggdGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQwOjU5LjU3MzA3NjA4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ1NjY3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZXNoX3BhdGh0YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9NYWtlZmlsZT00Nz1tYWM4MDIxMS0kKENPTkZJR19NQUM4MDIxMV9NRVNIKSArPSBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTQ4LVxcdG1lc2gubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjQ5OlxcdG1lc2hfcGF0aHRibC5vIFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNTAtXFx0bWVzaF9wbGluay5vIFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmM9MTc1Nz12b2lkIGllZWU4MDIxMV9tZXNoX2luaXRfc2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE3NzUtXFxubmV0L21hYzgwMjExL21lc2guYzoxNzc2OlxcdG1lc2hfcGF0aHRibF9pbml0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5jLTE3NzctXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5jPTE3OTA9dm9pZCBpZWVlODAyMTFfbWVzaF90ZWFyZG93bl9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc5Mi1cXHRtZXNoX3JtY19mcmVlKHNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5jOjE3OTM6XFx0bWVzaF9wYXRodGJsX3VucmVnaXN0ZXIoc2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9tZXNoLmMtMTc5NC19XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM1ND12b2lkIG1lc2hfcGF0aF90eF9wZW5kaW5nKHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oOjM1NTp2b2lkIG1lc2hfcGF0aHRibF9pbml0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oOjM1Njp2b2lkIG1lc2hfcGF0aHRibF91bnJlZ2lzdGVyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM1Ny1pbnQgbWVzaF9wYXRoX2RlbChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgY29uc3QgdTggKmFkZHIpO1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwNTY9dm9pZCBtZXNoX3BhdGhfZml4X25leHRob3Aoc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgsIHN0cnVjdCBzdGFfaW5mbyAqbmV4dF9ob3ApXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtMTA3My1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6MTA3NDp2b2lkIG1lc2hfcGF0aHRibF9pbml0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMDc1LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz0xMDk4PXZvaWQgbWVzaF9wYXRoX2V4cGlyZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMTAzLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzoxMTA0OnZvaWQgbWVzaF9wYXRodGJsX3VucmVnaXN0ZXIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTExMDUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MDo1OS42MjA1MzY2ODZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTMwODIwNDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1BQzgwMjExIE1lc2ggQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgODAyLjExIG1lc2ggbmV0d29ya2luZyB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgYWxtb3N0IGFsd2F5cyBsb2NhdGVkIHdpdGhpbiB0aGUgcmVsZXZhbnQgc3Vic3lzdGVtJ3MgZGlyZWN0b3J5LiBJJ20gbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGBNQUM4MDIxMV9NRVNIYCwgc28gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgYGNvbmZpZ2Agb3B0aW9uIGluIHRoZXJlLiBJdCBzaG91bGQgYmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgZWl0aGVyIGRpcmVjdGx5IGRlZmluZWQgb3IgcGVyaGFwcyBpbmNsdWRlZCBmcm9tIGFub3RoZXIgS2NvbmZpZyBmaWxlLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0J3Mgd2hhdC4gSG9wZWZ1bGx5LCBpdCdzIHdlbGwtZG9jdW1lbnRlZCB3aXRoIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBzZXR0aW5ncywgd2hpY2ggd291bGQgbWFrZSBteSBsaWZlIGVhc2llci5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk5MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjAyLjE1MTM1OTk2N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxNjEyNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUFDODAyMTFfTUVTSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWc9NjA9Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MjA5PWNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMS1cXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjEzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIyMj1jb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyNC1cXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIzNT1jb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNy1cXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzg6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjM5LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTAtXFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWc6MjUxOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1Mi1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MS1cXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjYzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWctMjcyLVxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzQtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlPTQxPW1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS00Ni1cXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6NDc6bWFjODAyMTEtJChDT05GSUdfTUFDODAyMTFfTUVTSCkgKz0gXFxcXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS00OC1cXHRtZXNoLm8gXFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTYxMz1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNzEwLVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVDpcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NzExOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9jZmcuYy03MTItXFx0XFx0aWYgKHNkYXRhLVxcdTAwM2V1Lm1lc2guc2VjdXJpdHkgIT0gSUVFRTgwMjExX01FU0hfU0VDX05PTkUpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjE5MD1zdGF0aWMgdm9pZCBzdGFfYXBwbHlfbWVzaF9wYXJhbXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE5My17XFxubmV0L21hYzgwMjExL2NmZy5jOjIxOTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL2NmZy5jLTIxOTUtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI3ODc9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODkzLVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyODk0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODk1LXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9tcGF0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ0Mjg9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2FmdGVyX2NzYV9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDUxLVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NDUyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDUzLVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVDpcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00NTYzPXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9jc2FfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDY1NC1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDY1NTojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDY1Ni1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01OTc2PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTk2LVxcdC5kdW1wX3N1cnZleSA9IGllZWU4MDIxMV9kdW1wX3N1cnZleSxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTk5NzojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTk5OC1cXHQuYWRkX21wYXRoID0gaWVlZTgwMjExX2FkZF9tcGF0aCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTUyLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjUzOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL2RlYnVnLmg6NTQ6I2RlZmluZSBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUcgMVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU1LSNlbHNlXFxubmV0L21hYzgwMjExL2RlYnVnLmg6NTY6I2RlZmluZSBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUcgMFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU3LSNlbmRpZlxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTU4LVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjU5OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvZGVidWcuaDo2MDojZGVmaW5lIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHIDFcXG5uZXQvbWFjODAyMTEvZGVidWcuaC02MS0jZWxzZVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjYyOiNkZWZpbmUgTUFDODAyMTFfTUVTSF9DU0FfREVCVUcgMFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTYzLSNlbmRpZlxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTY0LVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjY1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjY2OiNkZWZpbmUgTUFDODAyMTFfTUVTSF9QU19ERUJVRyAxXFxubmV0L21hYzgwMjExL2RlYnVnLmgtNjctI2Vsc2VcXG5uZXQvbWFjODAyMTEvZGVidWcuaDo2ODojZGVmaW5lIE1BQzgwMjExX01FU0hfUFNfREVCVUcgMFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTY5LSNlbmRpZlxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmg9MTI1PWRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMTgtI2RlZmluZSBtc3luY19kYmcoc2RhdGEsIGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoyMTk6XFx0X3NkYXRhX2RiZyhNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUcsXFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTIyMC1cXHRcXHQgICBzZGF0YSwgZm10LCAjI19fVkFfQVJHU19fKVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMjIyLSNkZWZpbmUgbWNzYV9kYmcoc2RhdGEsIGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoyMjM6XFx0X3NkYXRhX2RiZyhNQUM4MDIxMV9NRVNIX0NTQV9ERUJVRyxcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMjI0LVxcdFxcdCAgIHNkYXRhLCBmbXQsICMjX19WQV9BUkdTX18pXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0yMjYtI2RlZmluZSBtcHNfZGJnKHNkYXRhLCBmbXQsIC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MjI3OlxcdF9zZGF0YV9kYmcoTUFDODAyMTFfTUVTSF9QU19ERUJVRyxcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMjI4LVxcdFxcdCAgIHNkYXRhLCBmbXQsICMjX19WQV9BUkdTX18pXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz03MzY9SUVFRTgwMjExX0lGX0xJTktfRklMRShhZGRyLCBjb25mLVxcdTAwM2VhZGRyLCBNQUMpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTczNy1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzo3Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtNzM5LUlFRUU4MDIxMV9JRl9GSUxFKGVzdGFiX3BsaW5rcywgdS5tZXNoLmVzdGFiX3BsaW5rcywgQVRPTUlDKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTg2OD1zdGF0aWMgdm9pZCBhZGRfaWJzc19maWxlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTg3Mi1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzo4NzM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtODc0LVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTM3PXN0YXRpYyB2b2lkIGFkZF9maWxlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTk0OS1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6OTUwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTk1MS1cXHRcXHRhZGRfbWVzaF9maWxlcyhzZGF0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD03Nzk9c3RydWN0IGllZWU4MDIxMV9pZl9tZXNoIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTg1OS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo4NjA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtODYxLSNkZWZpbmUgSUVFRTgwMjExX0lGU1RBX01FU0hfQ1RSX0lOQyhtc2gsIG5hbWUpXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYz0xMTM3PWludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTEzOTItXFxubmV0L21hYzgwMjExL21haW4uYzoxMzkzOiNpZm5kZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTEzOTQtXFx0LyogbWVzaCBkZXBlbmRzIG9uIEtjb25maWcsIGJ1dCBkcml2ZXJzIHNob3VsZCBzZXQgaXQgaWYgdGhleSB3YW50ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM3OD12b2lkIG1lc2hfcGF0aF9yZWZyZXNoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2guaC0zODAtXFxubmV0L21hYzgwMjExL21lc2guaDozODE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL21lc2guaC0zODItc3RhdGljIGlubGluZVxcbi0tXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYz04MTA9aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTgzOS1cXHRcXHRcXHRuZWVkX29mZmNoYW4gPSB0cnVlO1xcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6ODQwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtODQxLVxcdFxcdGZhbGx0aHJvdWdoO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9Mjc5Mj1pZWVlODAyMTFfZGVsaXZlcl9za2Ioc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI4OTEtXFxubmV0L21hYzgwMjExL3J4LmM6Mjg5MjojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvcnguYy0yODkzLXN0YXRpYyBib29sXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0yOTU5PWllZWU4MDIxMV9yeF9tZXNoX2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjk2MS17XFxubmV0L21hYzgwMjExL3J4LmM6Mjk2MjojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvcnguYy0yOTYzLVxcdHN0cnVjdCBpZWVlODAyMTFfaWZfbWVzaCAqaWZtc2ggPSBcXHUwMDI2c2RhdGEtXFx1MDAzZXUubWVzaDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTQ2OD12b2lkIHN0YV9pbmZvX2ZyZWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNTA2LVxcdGtmcmVlKHJjdV9kZXJlZmVyZW5jZV9yYXcoc3RhLVxcdTAwM2VzdGEucmF0ZXMpKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo1MDc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNTA4LVxcdGtmcmVlKHN0YS1cXHUwMDNlbWVzaCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MzM9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTY2Ny1cXHR3aXBoeV93b3JrX2luaXQoXFx1MDAyNnN0YS1cXHUwMDNlYW1wZHVfbWxtZS53b3JrLCBpZWVlODAyMTFfYmFfc2Vzc2lvbl93b3JrKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo2Njg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNjY5LVxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21lc2goXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03OTUtXFx0c3RhX2luZm9fZnJlZV9saW5rKFxcdTAwMjZzdGEtXFx1MDAzZWRlZmxpbmspO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjc5NjojaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy03OTctXFx0a2ZyZWUoc3RhLVxcdTAwM2VtZXNoKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTExMDc9c3RhdGljIHZvaWQgX19zdGFfaW5mb19yZWNhbGNfdGltKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBib29sIGlnbm9yZV9wZW5kaW5nKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTEyMS1cXHRcXHRwcyA9IFxcdTAwMjZzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2Vic3MtXFx1MDAzZXBzO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjExMjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTEyMy1cXHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWVzaChcXHUwMDI2c3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSkge1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9Mjc0Mz1zdGF0aWMgaW5saW5lIHU2NCBzdGFfZ2V0X3N0YXRzX2J5dGVzKHN0cnVjdCBpZWVlODAyMTFfc3RhX3J4X3N0YXRzICpyeHN0YXRzKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMjc1NS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoyNzU2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTI3NTctc3RhdGljIHZvaWQgc3RhX3NldF9tZXNoX3NpbmZvKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzA3OT12b2lkIHN0YV9zZXRfc2luZm8oc3RydWN0IHN0YV9pbmZvICpzdGEsIHN0cnVjdCBzdGF0aW9uX2luZm8gKnNpbmZvLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzI2NC1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozMjY1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMyNjYtXFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWVzaChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD03MTU9c3RydWN0IHN0YV9pbmZvIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTczMi1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo3MzM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzM0LVxcdHN0cnVjdCBtZXNoX3N0YSAqbWVzaDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTgwMD1zdGF0aWMgaW5saW5lIGVudW0gbmw4MDIxMV9wbGlua19zdGF0ZSBzdGFfcGxpbmtfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODAxLXtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4MDI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODAzLVxcdHJldHVybiBzdGEtXFx1MDAzZW1lc2gtXFx1MDAzZXBsaW5rX3N0YXRlO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MjU0OT1zdGF0aWMgaW50IGllZWU4MDIxMV9sb29rdXBfcmFfc3RhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjU3My1cXHRcXHRicmVhaztcXG5uZXQvbWFjODAyMTEvdHguYzoyNTc0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS90eC5jLTI1NzUtXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UOlxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MjY3Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNzc0LVxcdFxcdGJyZWFrO1xcbm5ldC9tYWM4MDIxMS90eC5jOjI3NzU6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3R4LmMtMjc3Ni1cXHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zMDE5LVxcbm5ldC9tYWM4MDIxMS90eC5jOjMwMjA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL3R4LmMtMzAyMS1cXHRpZiAobWVzaGhkcmxlbiBcXHUwMDNlIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjAyLjE5ODUyNTg2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMDg0NDU4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBNZXNoIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBLY29uZmlnLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZSBgTUFDODAyMTFfTUVTSGAgYW5kIGBNQUM4MDIxMWAgb3B0aW9ucyBhcmUgc3RydWN0dXJlZC4gTXkgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlci4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB3aGF0IGtpbmQgb2Ygc3VwcG9ydCB1c2VycyB3aWxsIGJlIGFibGUgdG8gZW5hYmxlIG9yIGRpc2FibGUgcmVsYXRlZCB0byBtZXNoIG5ldHdvcmtpbmcuIEFyZSB0aGUgbWVzaCBvcHRpb25zIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBNQUM4MDIxMSBjb3JlIGZ1bmN0aW9uYWxpdGllcz8gQXJlIHRoZXJlIGFueSBoaWRkZW4gaW1wbGljYXRpb25zIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHdpcmVsZXNzIGZlYXR1cmVzPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29uZGl0aW9uYWxzIGNhcmVmdWxseSB0byBmdWxseSBncmFzcCB0aGUgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxvZ2ljYWwgYW5kIHN1cHBvcnQgdGhlIGRlc2lyZWQgdXNlIGNhc2VzIGZvciBvdXIgbWVzaCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIGEgY2xlYW4gYW5kIGVmZmljaWVudCBrZXJuZWwgY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjA0LjQwNjk3NDg2M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1BQzgwMjExXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcXG4gICA4OlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0NDTVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxcbiAgMTQ6XFx0XFx0ICBuZXR3b3JraW5nIHN0YWNrLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb21tZW50IFxcXCJDRkc4MDIxMSBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBNQUM4MDIxMVxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBNQUM4MDIxMSAhPSBuXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG4gIDIyOlxcdFxcdGJvb2xcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxuICAyNTpcXHRcXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuICAyNjpcXHRcXHRzZWxlY3QgTUFDODAyMTFfSEFTX1JDXFxuICAyNzpcXHRcXHRkZWZhdWx0IHlcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgJ21pbnN0cmVsJyBUWCByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNob2ljZVxcbiAgMzI6XFx0XFx0cHJvbXB0IFxcXCJEZWZhdWx0IHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0hBU19SQ1xcbiAgMzQ6XFx0XFx0ZGVmYXVsdCBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFRoaXMgb3B0aW9uIHNlbGVjdHMgdGhlIGRlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcbiAgMzc6XFx0XFx0ICBtYWM4MDIxMSB3aWxsIHVzZS4gTm90ZSB0aGF0IHRoaXMgZGVmYXVsdCBjYW4gc3RpbGwgYmVcXG4gIDM4OlxcdFxcdCAgb3ZlcnJpZGRlbiB0aHJvdWdoIHRoZSBpZWVlODAyMTFfZGVmYXVsdF9yY19hbGdvIG1vZHVsZVxcbiAgMzk6XFx0XFx0ICBwYXJhbWV0ZXIgaWYgZGlmZmVyZW50IGFsZ29yaXRobXMgYXJlIGF2YWlsYWJsZS5cXG4gIDQwOlxcdFxcbiAgNDE6XFx0Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG4gIDQyOlxcdFxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbiAgNDM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbiAgNDQ6XFx0XFx0aGVscFxcbiAgNDU6XFx0XFx0ICBTZWxlY3QgTWluc3RyZWwgYXMgdGhlIGRlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFxuICA0ODpcXHRlbmRjaG9pY2VcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG4gIDUxOlxcdFxcdHN0cmluZ1xcbiAgNTI6XFx0XFx0ZGVmYXVsdCBcXFwibWluc3RyZWxfaHRcXFwiIGlmIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG4gIDUzOlxcdFxcdGRlZmF1bHQgXFxcIlxcXCJcXG4gIDU0OlxcdFxcbiAgNTU6XFx0ZW5kaWZcXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9IQVNfUkM9blxcbiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbiAgNjE6XFx0XFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgNjI6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgNjQ6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDY1OlxcdFxcdGhlbHBcXG4gIDY2OlxcdFxcdCAgRW5hYmxlIHRoaXMgb3B0aW9uIHRvIHRlc3QgbWFjODAyMTEgaW50ZXJuYWxzIHdpdGgga3VuaXQuXFxuICA2NzpcXHRcXG4gIDY4OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDY5OlxcdFxcbiAgNzA6XFx0Y29uZmlnIE1BQzgwMjExX01FU0hcXG4gIDcxOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4gIDcyOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDczOlxcdFxcdGhlbHBcXG4gIDc0OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGVuYWJsZSA4MDIuMTEgbWVzaCBvcGVyYXRpb24gaW4gbWFjODAyMTFcXG4gIDc1OlxcdFxcdCAgZHJpdmVycyB0aGF0IHN1cHBvcnQgaXQuICA4MDIuMTEgbWVzaCBjb25uZWN0cyBtdWx0aXBsZSBzdGF0aW9uc1xcbiAgNzY6XFx0XFx0ICBvdmVyIChwb3NzaWJseSBtdWx0aS1ob3ApIHdpcmVsZXNzIGxpbmtzIHRvIGZvcm0gYSBzaW5nbGUgbG9naWNhbFxcbiAgNzc6XFx0XFx0ICBMQU4uXFxuICA3ODpcXHRcXG4gIDc5OlxcdGNvbmZpZyBNQUM4MDIxMV9MRURTXFxuICA4MDpcXHRcXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MTowNC40MDcwNTIzMDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAxNTA2NzU1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBNQUM4MDIxMV9IV1NJTSoqXG5cblJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayBhbmQgbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIHdpdGggYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdoYXRldmVyIGlzIGhhcHBlbmluZyBpbiB0aGUgY3VycmVudCBzY2VuYXJpbyBkb2Vzbid0IGJ5cGFzcyB0aGlzLiBDcnVjaWFsbHksIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgc3ltYm9sIGlzIGFjdHVhbGx5IGRlZmluZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGRlZmluaXRpb24gaXMgZ29pbmcgdG8gYmUgdGhlIGtleSB0byBpbnRlcnByZXRpbmcgaXRzIGltcGFjdC4gSeKAmWxsIG5lZWQgdG8gdHJhY2UgaXQgdG8gaXRzIG9yaWdpbiB0byBzZWUgd2hhdCBpdCBjb250cm9scyBhbmQgd2hldGhlciBpdCdzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgaXNzdWUuIEEgcXVpY2sgc2VhcmNoIHNob3VsZCB0dXJuIHVwIHRoZSBzb3VyY2UgZmlsZS4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3IgaW5jbHVzaW9uIGxvZ2ljIGFuZCBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwMDIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjA2LjQyMjEyMzEwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNDU2NjQ5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFfSFdTSU1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MTowNy45NDY2OTQ3MTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDg3MDg2Mjk1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lc2ggUGF0aCBUYWJsZSBGaXgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgY29kZSBjaGFuZ2UuIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBmYXN0IFRYIGNhY2hlIGFuZCBtZXNoIHBhdGggZGVsZXRpb24gbWVjaGFuaXNtcyBpbiB0aGUgYG5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuY2AgZmlsZS4gU3BlY2lmaWNhbGx5OlxuXG4xLiAgSW4gYG1lc2hfZmFzdF90eF9jYWNoZWAsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgdG8gc2VlIGlmIGEgbWVzaCBwYXRoIGVudHJ5IHNob3VsZCBiZSBhZGRlZC4gVGhlIGNoZWNrIHZlcmlmaWVzIGlmIHRoZSBwYXRoIGlzIGRlbGV0ZWQgYnkgbG9va2luZyBhdCB0aGUgYE1FU0hfUEFUSF9ERUxFVEVEYCBmbGFnIG9uIGBtcGF0aGAgb3IgYG1wcGF0aGAuIElmIGl0J3Mgc2V0LCB0aGUgaW5zZXJ0aW9uIGlzIGFib3J0ZWQsIGFuZCB0aGUgZW50cnkgaXMgZnJlZWQuXG4yLiAgYF9fbWVzaF9wYXRoX2RlbGAgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIGBNRVNIX1BBVEhfREVMRVRFRGAgZmxhZyBvbiB0aGUgYG1wYXRoYCB1bmRlciB0aGUgYG1wYXRoLVx1MDAzZXN0YXRlX2xvY2tgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHN5bmNocm9uaXphdGlvbiBwcmFjdGljZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIGZ1enphYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3Igc3l6a2FsbGVyPyBBYnNvbHV0ZWx5LCBpdCBpcyEgR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IGBtYWM4MDIxMV9od3NpbWAgYW5kIHRoZSBjZmc4MDIxMS9ubDgwMjExIGludGVyZmFjZXMgY2FuIGJlIGxldmVyYWdlZCB0byBjcmVhdGUgbWVzaCBwb2ludHMgKGBOTDgwMjExX0lGVFlQRV9NRVNIX1BPSU5UYCksIGVzdGFibGlzaCBsaW5rcywgYWRkL2RlbGV0ZSBwYXRocyAoYE5MODAyMTFfQ01EX05FV19NUEFUSGAsIGBOTDgwMjExX0NNRF9ERUxfTVBBVEhgLCBgTkw4MDIxMV9DTURfU0VUX01QQVRIYCksIGFuZCBzZW5kIGZyYW1lcy4gU3l6a2FsbGVyJ3MgZXhpc3RpbmcgY292ZXJhZ2Ugb2YgYG1hYzgwMjExYCBhbmQgYG5sODAyMTFgIGlzIGFsc28gYSBodWdlIGFkdmFudGFnZS5cblxuR2l2ZW4gdGhlIG1vZGlmaWNhdGlvbnMgdG8gc3luY2hyb25pemF0aW9uLCBsaWZldGltZSBtYW5hZ2VtZW50LCBhbmQgc3RhdGUgaGFuZGxpbmcgaW4gdGhlIHBhdGggcm91dGluZyBhbmQgY2FjaGluZywgc3BlY2lmaWNhbGx5IGltcGFjdGluZyBgbWVzaF9mYXN0X3R4X2NhY2hlYCBhbmQgYF9fbWVzaF9wYXRoX2RlbGAsIHRoaXMgaXMgZGVmaW5pdGVseSBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBgbWFjODAyMTFfaHdzaW1gLCBvciB2aXJ0dWFsIFdpLUZpIGludGVyZmFjZXMsIGV4cGFuZGluZyB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBmb2N1cyBzeW1ib2xzLiBJIHNlZSB3ZSBoYXZlIHR3byBrZXkgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZDogYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLlxuXG5JJ2xsIG5vdyBpbnZlc3RpZ2F0ZSBwb3RlbnRpYWwgY2FsbGVyIGZ1bmN0aW9ucyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2FtZSBmaWxlLCBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYC4gSXQncyBjcnVjaWFsIHRvIG1hcCB0aGUgY2FsbCBncmFwaCB0byBpZGVudGlmeSBhbnkgY3JpdGljYWwgZW50cnkgcG9pbnRzIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzA3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjEyLjgxNzU1OTU3NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkyNDYyMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVzaF9mYXN0X3R4X2NhY2hlfF9fbWVzaF9wYXRoX2RlbHxtZXNoX3BhdGhfZGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9MjkyMz1zdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfbXBhdGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yOTI4LVxcdGlmIChkc3QpXFxubmV0L21hYzgwMjExL2NmZy5jOjI5Mjk6XFx0XFx0cmV0dXJuIG1lc2hfcGF0aF9kZWwoc2RhdGEsIGRzdCk7XFxubmV0L21hYzgwMjExL2NmZy5jLTI5MzAtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaC5oPTM1Nj12b2lkIG1lc2hfcGF0aHRibF91bnJlZ2lzdGVyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oOjM1NzppbnQgbWVzaF9wYXRoX2RlbChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgY29uc3QgdTggKmFkZHIpO1xcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzU4LXZvaWQgbWVzaF9wYXRoX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoLmg9MzY4PWJvb2wgaWVlZTgwMjExX21lc2hfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tZXNoLmgtMzY5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBjdHJsX2ZsYWdzKTtcXG5uZXQvbWFjODAyMTEvbWVzaC5oOjM3MDp2b2lkIG1lc2hfZmFzdF90eF9jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWVzaC5oLTM3MS1cXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9od21wLmM9MTI1OD1pbnQgbWVzaF9uZXh0aG9wX2xvb2t1cChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX2h3bXAuYy0xMjgyLVxcdFxcdGlmIChpZWVlODAyMTFfaHdfY2hlY2soXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlaHcsIFNVUFBPUlRfRkFTVF9YTUlUKSlcXG5uZXQvbWFjODAyMTEvbWVzaF9od21wLmM6MTI4MzpcXHRcXHRcXHRtZXNoX2Zhc3RfdHhfY2FjaGUoc2RhdGEsIHNrYiwgbXBhdGgpO1xcbm5ldC9tYWM4MDIxMS9tZXNoX2h3bXAuYy0xMjg0LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTQzND1tZXNoX2Zhc3RfdHhfZ2V0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTQ2Mi1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NDYzOnZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy00NjQtXFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG1lc2hfcGF0aCAqbXBhdGgpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9ODAxPXN0YXRpYyB2b2lkIG1lc2hfcGF0aF9mcmVlX3JjdShzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTgxNi1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6ODE3OnN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtODE4LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz04NDI9dm9pZCBtZXNoX3BhdGhfZmx1c2hfYnlfbmV4dGhvcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy04NTEtXFx0XFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihtcGF0aC1cXHUwMDNlbmV4dF9ob3ApID09IHN0YSlcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6ODUyOlxcdFxcdFxcdF9fbWVzaF9wYXRoX2RlbCh0YmwsIG1wYXRoKTtcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtODUzLVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz04NTc9c3RhdGljIHZvaWQgbXBwX2ZsdXNoX2J5X3Byb3h5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg2Ni1cXHRcXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChtcGF0aC1cXHUwMDNlbXBwLCBwcm94eSkpXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjg2NzpcXHRcXHRcXHRfX21lc2hfcGF0aF9kZWwodGJsLCBtcGF0aCk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg2OC1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9ODcyPXN0YXRpYyB2b2lkIHRhYmxlX2ZsdXNoX2J5X2lmYWNlKHN0cnVjdCBtZXNoX3RhYmxlICp0YmwpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtODc4LVxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobXBhdGgsIG4sIFxcdTAwMjZ0YmwtXFx1MDAzZXdhbGtfaGVhZCwgd2Fsa19saXN0KSB7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjg3OTpcXHRcXHRfX21lc2hfcGF0aF9kZWwodGJsLCBtcGF0aCk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTg4MC1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9OTA2PXN0YXRpYyBpbnQgdGFibGVfcGF0aF9kZWwoc3RydWN0IG1lc2hfdGFibGUgKnRibCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy05MTgtXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjkxOTpcXHRfX21lc2hfcGF0aF9kZWwodGJsLCBtcGF0aCk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTkyMC1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2dGJsLVxcdTAwM2V3YWxrX2xvY2spO1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTkyNS0vKipcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6OTI2OiAqIG1lc2hfcGF0aF9kZWwgLSBkZWxldGUgYSBtZXNoIHBhdGggZnJvbSB0aGUgdGFibGVcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTI3LSAqXFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtOTMyLSAqL1xcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYzo5MzM6aW50IG1lc2hfcGF0aF9kZWwoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGNvbnN0IHU4ICphZGRyKVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy05MzQte1xcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTEwODI9dm9pZCBtZXNoX3BhdGhfdGJsX2V4cGlyZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy0xMDkyLVxcdFxcdCAgICAgdGltZV9hZnRlcihqaWZmaWVzLCBtcGF0aC1cXHUwMDNlZXhwX3RpbWUgKyBNRVNIX1BBVEhfRVhQSVJFKSlcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6MTA5MzpcXHRcXHRcXHRfX21lc2hfcGF0aF9kZWwodGJsLCBtcGF0aCk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTEwOTQtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MjY3Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNzk3LVxcdFxcdFxcdGlmIChtcHBhdGggXFx1MDAyNlxcdTAwMjYgbXBhdGgpXFxubmV0L21hYzgwMjExL3R4LmM6Mjc5ODpcXHRcXHRcXHRcXHRtZXNoX3BhdGhfZGVsKHNkYXRhLCBtcGF0aC1cXHUwMDNlZHN0KTtcXG5uZXQvbWFjODAyMTEvdHguYy0yNzk5LVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDE6MTIuODY2ODEwMDA3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzNTAxNTg0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTWVzaCBQYXRoIFRhYmxlIGFuZCBGYXN0IFRYIENhY2hpbmcgaW4gbWFjODAyMTEqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIHdhbnRlZCB0byBjb25maXJtIHdoZXRoZXIgY2VydGFpbiBmdW5jdGlvbnMgYXJlIHN0YXRpYyBvciBnbG9iYWwuIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gYG1lc2hfZmFzdF90eF9jYWNoZWAgYW5kIGBfX21lc2hfcGF0aF9kZWxgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgZnVuY3Rpb25zLiBJIHNlZSB0aGF0IGBtZXNoX2Zhc3RfdHhfY2FjaGVgIGlzIGEgZ2xvYmFsIHN5bWJvbCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQsIGdpdmVuIGl0cyB1c2Ugd2l0aGluIHRoZSBzeXN0ZW0uICBgX19tZXNoX3BhdGhfZGVsYCwgaG93ZXZlciwgaXMgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5Ob3csIGxldCdzIHRyYWNrIHdoZXJlIGBfX21lc2hfcGF0aF9kZWxgIGlzIGFjdHVhbGx5ICpjYWxsZWQqIGZyb20uIEkndmUgaWRlbnRpZmllZCBzZXZlcmFsIGVudHJ5IHBvaW50cyBpbiBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYDogYG1lc2hfcGF0aF9kZWxgLCBgbWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3BgLCBhbmQgYG1lc2hfcGF0aF90YmxfZXhwaXJlYC4gIEkgYWxzbyBzZWUgaXQncyBjYWxsZWQgZnJvbSBgaWVlZTgwMjExX2RlbF9tcGF0aGAgaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AuICBBbHNvIGBtZXNoX25leHRob3BfbG9va3VwYCBpbiBgbmV0L21hYzgwMjExL21lc2hfaHdtcC5jYCBjYWxscyBgbWVzaF9mYXN0X3R4X2NhY2hlYC5cblxuSSdtIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiBgbWVzaF9wYXRoX2RlbGAgYW5kIGBtZXNoX2Zhc3RfdHhfY2FjaGVgIG5vdywgYW5kIGhvdyB0aGV5IGludGVyYWN0LlxuXG5OZXh0LCBJIG5lZWQgdG8gZGVmaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyB3b3JrLiBUaGlzIHJlcXVpcmVzIGBNQUM4MDIxMWAsIGBNQUM4MDIxMV9NRVNIYCwgYW5kIGBDRkc4MDIxMWAgZW5hYmxlZC4gRm9yIHRlc3RpbmcsIGBNQUM4MDIxMV9IV1NJTWAgY291bGQgYmUgYSBoZWxwZnVsIG9wdGlvbmFsIGRyaXZlci5cblxuTm93IHRvIHZlcmlmeSB0aGUgcHJvcG9zZWQgYHNldC1yZXN1bHRzYCBjb25maWd1cmF0aW9uLiAgV2UgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIHNob3VsZCBjb3JyZWN0bHkgaW5jbHVkZSBgTUFDODAyMTFgLCBgTUFDODAyMTFfTUVTSGAsIGFuZCBgQ0ZHODAyMTFgLiBUaGUgYEZvY3VzU3ltYm9sc2AgbGlzdCBzaG91bGQgY29udGFpbiAgYG1lc2hfZmFzdF90eF9jYWNoZWAsIGBtZXNoX3BhdGhfZGVsYCwgYG1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wYCwgYW5kIGBtZXNoX3BhdGhfdGJsX2V4cGlyZWAsIGFzIHRoZSBrZXkgc3ltYm9scyBmb3IgZXhwbG9yYXRpb24uIChhbHRlcm5hdGl2ZWx5IHVzaW5nIGBtZXNoX25leHRob3BfbG9va3VwYCBpcyBhY2NlcHRhYmxlKS4gIEZpbmFsbHksIHRoZSBgUmVhc29uaW5nYCBzaG91bGQgY29uY2lzZWx5IGV4cGxhaW4gKndoeSogdGhpcyBpcyB3b3J0aCBmdXp6aW5nOiBpbiBicmllZiwgaXQgY29uY2VybnMgYSBmaXggdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgb3IgdGhlIHVzZSBvZiBhIGRlbGV0ZWQgbWVzaCBwYXRoIGluIHRoZSBmYXN0IFRYIGNhY2hlIGJ5IGNoZWNraW5nIGFuZCBzZXR0aW5nIHRoZSBgTUVTSF9QQVRIX0RFTEVURURgIGZsYWcuICBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nLlxuXG5Pa2F5LCBldmVyeXRoaW5nIGNoZWNrcyBvdXQuICBJJ20gc2F0aXNmaWVkIHdpdGggdGhlIGFuYWx5c2lzLCBhbmQgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzM3MSwiT3V0cHV0VG9rZW5zIjoxOTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDE6MTkuMjE2OTcxMzkyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5MzQzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9NRVNIXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1lc2hfZmFzdF90eF9jYWNoZVwiLFxuICAgIFwibWVzaF9wYXRoX2RlbFwiLFxuICAgIFwibWVzaF9wYXRoX2ZsdXNoX2J5X25leHRob3BcIixcbiAgICBcIm1lc2hfcGF0aF90YmxfZXhwaXJlXCIsXG4gICAgXCJtZXNoX25leHRob3BfbG9va3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3luY2hyb25pemF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWVzaCBwYXRocyBpbiBtYWM4MDIxMSwgc2V0dGluZyB0aGUgTUVTSF9QQVRIX0RFTEVURUQgZmxhZyBpbiBfX21lc2hfcGF0aF9kZWwoKSBhbmQgY2hlY2tpbmcgZm9yIGl0IHVuZGVyIGxvY2sgaW4gbWVzaF9mYXN0X3R4X2NhY2hlKCkgdG8gcHJldmVudCBjYWNoaW5nIGRlbGV0ZWQgcGF0aHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG1lc2ggaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfTUVTSFwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtZXNoX2Zhc3RfdHhfY2FjaGVcIixcbiAgICBcIm1lc2hfcGF0aF9kZWxcIixcbiAgICBcIm1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wXCIsXG4gICAgXCJtZXNoX3BhdGhfdGJsX2V4cGlyZVwiLFxuICAgIFwibWVzaF9uZXh0aG9wX2xvb2t1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN5bmNocm9uaXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1lc2ggcGF0aHMgaW4gbWFjODAyMTEsIHNldHRpbmcgdGhlIE1FU0hfUEFUSF9ERUxFVEVEIGZsYWcgaW4gX19tZXNoX3BhdGhfZGVsKCkgYW5kIGNoZWNraW5nIGZvciBpdCB1bmRlciBsb2NrIGluIG1lc2hfZmFzdF90eF9jYWNoZSgpIHRvIHByZXZlbnQgY2FjaGluZyBkZWxldGVkIHBhdGhzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBtZXNoIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjE5LjI5NDkxMDc3OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4Mzk1MTA5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MToxOS4yOTU0Mjg3NDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxNzgzODk4ODgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVzb2x2ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBtYWM4MDIxMSBtZXNoIHBhdGggbWFuYWdlbWVudCB3aGVyZSBhIG1lc2ggcGF0aCBtYXJrZWQgZm9yIGRlbGV0aW9uIGNvdWxkIGJlIGluc2VydGVkIGludG8gdGhlIGZhc3QgVFggY2FjaGUgYWZ0ZXIgdGhlIGNhY2hlIGZsdXNoLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikuIFRoZSBmaXggc2V0cyBgTUVTSF9QQVRIX0RFTEVURURgIHVuZGVyIGxvY2sgaW4gYF9fbWVzaF9wYXRoX2RlbCgpYCBhbmQgY2hlY2tzIGZvciB0aGlzIGZsYWcgYmVmb3JlIGluc2VydGluZyBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGluIGBtZXNoX2Zhc3RfdHhfY2FjaGUoKWAuIFxcblxcblRoaXMgY2hhbmdlIGFkZHJlc3NlcyBvYmplY3QgbGlmZXRpbWUgYW5kIGNvbmN1cnJlbmN5IChVQUYpIGlzc3VlcyB3aGljaCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vciBkb2VzIGl0IGFmZmVjdCB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3Igc3RydWN0IHBhZGRpbmcuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU4YTdmMmNkZmE0ZDk0YzgxZmQxMmJjNTk3NGU5YTA3NzFjYmVlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA3OjQwOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jIGIvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG5pbmRleCAwMzE3MWNmMDA4NTU3Li5kZmNjNGYzYTcwODhlIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXG4rKysgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmNcbkBAIC01NzcsNiArNTc3LDEyIEBAIHZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRnb3RvIHVubG9ja19zdGE7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2Y2FjaGUtXHUwMDNld2Fsa19sb2NrKTtcbitcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUVTSF9QQVRIX0RFTEVURUQpIHx8XG4rXHQgICAgKG1wcGF0aCBcdTAwMjZcdTAwMjYgKFJFQURfT05DRShtcHBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XG4rXHRcdGtmcmVlKGVudHJ5KTtcbitcdFx0Z290byB1bmxvY2tfY2FjaGU7XG4rXHR9XG4rXG4gXHRwcmV2ID0gcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9mYXN0KFx1MDAyNmNhY2hlLVx1MDAzZXJodCxcbiBcdFx0XHRcdFx0XHQgXHUwMDI2ZW50cnktXHUwMDNlcmhhc2gsXG4gXHRcdFx0XHRcdFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XG5AQCAtODEyLDYgKzgxOCw5IEBAIHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcbiB7XG4gXHRobGlzdF9kZWxfcmN1KFx1MDAyNm1wYXRoLVx1MDAzZXdhbGtfbGlzdCk7XG4gXHRyaGFzaHRhYmxlX3JlbW92ZV9mYXN0KFx1MDAyNnRibC1cdTAwM2VyaGVhZCwgXHUwMDI2bXBhdGgtXHUwMDNlcmhhc2gsIG1lc2hfcmh0X3BhcmFtcyk7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bXBhdGgtXHUwMDNlc3RhdGVfbG9jayk7XG4rXHRtcGF0aC1cdTAwM2VmbGFncyB8PSBNRVNIX1BBVEhfREVMRVRFRDtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1wYXRoLVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0aWYgKHRibCA9PSBcdTAwMjZtcGF0aC1cdTAwM2VzZGF0YS1cdTAwM2V1Lm1lc2gubXBwX3BhdGhzKVxuIFx0XHRtZXNoX2Zhc3RfdHhfZmx1c2hfYWRkcihtcGF0aC1cdTAwM2VzZGF0YSwgbXBhdGgtXHUwMDNlZHN0KTtcbiBcdGVsc2VcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjE5LjI5NTQyOTU2OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NDM3MDI5NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgTWVzaCBQYXRoIFRhYmxlKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGJlaW5nIGNoYW5nZWQgYW5kIHdoeS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiB0aGUgc3Vycm91bmRpbmcgY29kZSwgc28gSSdtIGxldmVyYWdpbmcgdGhlIGNvZGUgc2VhcmNoIHRvb2xzIHRvIGV4cGxvcmUgdGhlIGNvbnRleHQgb2YgdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHNlZSB3aGF0IGludGVyYWN0cyB3aXRoIHRoZSBhcmVhcyBiZWluZyBtb2RpZmllZC5cblxuTm93LCBJJ20gZ29pbmcgdG8gZGVsdmUgaW50byBgbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jYCDigJMgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lcyA1NzcgYW5kIDgxMi4gVGhvc2UgbGlrZWx5IHJlcHJlc2VudCB0aGUgY29yZSBsb2NhdGlvbnMgb2YgdGhlIGNoYW5nZXMsIG9yIGF0IGxlYXN0IHRoZSBhcmVhcyBtb3N0IGRpcmVjdGx5IGltcGFjdGVkIGJ5IHRoZW0uIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIExldCdzIHNlZSB3aGF0IHRoZSBtZXNoIHBhdGggdGFibGUgaXMgZG9pbmcgYW5kIGhvdyB0aGUgbW9kaWZpY2F0aW9ucyBhZmZlY3QgaXRzIGZ1bmN0aW9uYWxpdHkuIEknbSBsb29raW5nIGZvciB0aGUgbG9naWMgb2YgdGhlIHJvdXRpbmcgZGVjaXNpb25zIGluIHRoZSBtZXNoIG5ldHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjAsIk91dHB1dFRva2VucyI6ODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjI0LjczMjQ2MjE2MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU2MDpcXHRcXHRidWlsZC5mYXN0X3R4LmRhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjMpO1xcbiA1NjE6XFx0XFx0YnVpbGQuZmFzdF90eC5zYV9vZmZzID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9oZHIsIGFkZHI0KTtcXG4gNTYyOlxcdFxcdGJ1aWxkLm1wYXRoID0gbXBhdGg7XFxuIDU2MzpcXHRcXHRtZW1jcHkoYnVpbGQuaGRyLCBtZXNoaGRyLCBidWlsZC5oZHJsZW4pO1xcbiA1NjQ6XFx0XFx0bWVtY3B5KGJ1aWxkLmhkciArIGJ1aWxkLmhkcmxlbiwgcmZjMTA0Ml9oZWFkZXIsIHNpemVvZihyZmMxMDQyX2hlYWRlcikpO1xcbiA1NjU6XFx0XFx0YnVpbGQuaGRybGVuICs9IHNpemVvZihyZmMxMDQyX2hlYWRlcik7XFxuIDU2NjpcXHRcXHRtZW1jcHkoYnVpbGQuZmFzdF90eC5oZHIsIGhkciwgYnVpbGQuZmFzdF90eC5oZHJfbGVuKTtcXG4gNTY3OlxcdFxcbiA1Njg6XFx0XFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopYnVpbGQuZmFzdF90eC5oZHI7XFxuIDU2OTpcXHRcXHRpZiAoYnVpbGQuZmFzdF90eC5rZXkpXFxuIDU3MDpcXHRcXHRcXHRoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wgfD0gY3B1X3RvX2xlMTYoSUVFRTgwMjExX0ZDVExfUFJPVEVDVEVEKTtcXG4gNTcxOlxcdFxcbiA1NzI6XFx0XFx0cWMgPSBpZWVlODAyMTFfZ2V0X3Fvc19jdGwoaGRyKTtcXG4gNTczOlxcdFxcdHFjWzFdIHw9IElFRUU4MDIxMV9RT1NfQ1RMX01FU0hfQ09OVFJPTF9QUkVTRU5UIFxcdTAwM2VcXHUwMDNlIDg7XFxuIDU3NDpcXHRcXG4gNTc1OlxcdFxcdGVudHJ5ID0ga21lbWR1cChcXHUwMDI2YnVpbGQsIHNpemVvZihidWlsZCksIEdGUF9BVE9NSUMpO1xcbiA1NzY6XFx0XFx0aWYgKCFlbnRyeSlcXG4gNTc3OlxcdFxcdFxcdGdvdG8gdW5sb2NrX3N0YTtcXG4gNTc4OlxcdFxcbiA1Nzk6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZjYWNoZS1cXHUwMDNld2Fsa19sb2NrKTtcXG4gNTgwOlxcdFxcdGlmICgoUkVBRF9PTkNFKG1wYXRoLVxcdTAwM2VmbGFncykgXFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkgfHxcXG4gNTgxOlxcdFxcdCAgICAobXBwYXRoIFxcdTAwMjZcXHUwMDI2IChSRUFEX09OQ0UobXBwYXRoLVxcdTAwM2VmbGFncykgXFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRCkpKSB7XFxuIDU4MjpcXHRcXHRcXHRrZnJlZShlbnRyeSk7XFxuIDU4MzpcXHRcXHRcXHRnb3RvIHVubG9ja19jYWNoZTtcXG4gNTg0OlxcdFxcdH1cXG4gNTg1OlxcdFxcbiA1ODY6XFx0XFx0cHJldiA9IHJoYXNodGFibGVfbG9va3VwX2dldF9pbnNlcnRfZmFzdChcXHUwMDI2Y2FjaGUtXFx1MDAzZXJodCxcXG4gNTg3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2ZW50cnktXFx1MDAzZXJoYXNoLFxcbiA1ODg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IGZhc3RfdHhfcmh0X3BhcmFtcyk7XFxuIDU4OTpcXHRcXHRpZiAoSVNfRVJSKHByZXYpKSB7XFxuIDU5MDpcXHRcXHRcXHRrZnJlZShlbnRyeSk7XFxuIDU5MTpcXHRcXHRcXHRnb3RvIHVubG9ja19jYWNoZTtcXG4gNTkyOlxcdFxcdH1cXG4gNTkzOlxcdFxcbiA1OTQ6XFx0XFx0LypcXG4gNTk1OlxcdFxcdCAqIHJlcGxhY2UgYW55IHByZXZpb3VzIGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlLCBpbiBjYXNlIHdlJ3JlXFxuIDU5NjpcXHRcXHQgKiByZXBsYWNpbmcgaXQgd2l0aCBhIGRpZmZlcmVudCB0eXBlIChlLmcuIG1wYXRoIC1cXHUwMDNlIG1wcClcXG4gNTk3OlxcdFxcdCAqL1xcbiA1OTg6XFx0XFx0aWYgKHVubGlrZWx5KHByZXYpKSB7XFxuIDU5OTpcXHRcXHRcXHRyaGFzaHRhYmxlX3JlcGxhY2VfZmFzdChcXHUwMDI2Y2FjaGUtXFx1MDAzZXJodCwgXFx1MDAyNnByZXYtXFx1MDAzZXJoYXNoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MToyNC43MzI2MjU0NTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgwMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDgwMDpcXHRcXG4gODAxOlxcdHN0YXRpYyB2b2lkIG1lc2hfcGF0aF9mcmVlX3JjdShzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLFxcbiA4MDI6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKVxcbiA4MDM6XFx0e1xcbiA4MDQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBtcGF0aC1cXHUwMDNlc2RhdGE7XFxuIDgwNTpcXHRcXG4gODA2OlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bXBhdGgtXFx1MDAzZXN0YXRlX2xvY2spO1xcbiA4MDc6XFx0XFx0bXBhdGgtXFx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9SRVNPTFZJTkcgfCBNRVNIX1BBVEhfREVMRVRFRDtcXG4gODA4OlxcdFxcdG1lc2hfZ2F0ZV9kZWwodGJsLCBtcGF0aCk7XFxuIDgwOTpcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bXBhdGgtXFx1MDAzZXN0YXRlX2xvY2spO1xcbiA4MTA6XFx0XFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2bXBhdGgtXFx1MDAzZXRpbWVyKTtcXG4gODExOlxcdFxcdGF0b21pY19kZWMoXFx1MDAyNnNkYXRhLVxcdTAwM2V1Lm1lc2gubXBhdGhzKTtcXG4gODEyOlxcdFxcdGF0b21pY19kZWMoXFx1MDAyNnRibC1cXHUwMDNlZW50cmllcyk7XFxuIDgxMzpcXHRcXHRtZXNoX3BhdGhfZmx1c2hfcGVuZGluZyhtcGF0aCk7XFxuIDgxNDpcXHRcXHRrZnJlZV9yY3UobXBhdGgsIHJjdSk7XFxuIDgxNTpcXHR9XFxuIDgxNjpcXHRcXG4gODE3OlxcdHN0YXRpYyB2b2lkIF9fbWVzaF9wYXRoX2RlbChzdHJ1Y3QgbWVzaF90YWJsZSAqdGJsLCBzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aClcXG4gODE4OlxcdHtcXG4gODE5OlxcdFxcdGhsaXN0X2RlbF9yY3UoXFx1MDAyNm1wYXRoLVxcdTAwM2V3YWxrX2xpc3QpO1xcbiA4MjA6XFx0XFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcXHUwMDI2dGJsLVxcdTAwM2VyaGVhZCwgXFx1MDAyNm1wYXRoLVxcdTAwM2VyaGFzaCwgbWVzaF9yaHRfcGFyYW1zKTtcXG4gODIxOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bXBhdGgtXFx1MDAzZXN0YXRlX2xvY2spO1xcbiA4MjI6XFx0XFx0bXBhdGgtXFx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9ERUxFVEVEO1xcbiA4MjM6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm1wYXRoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gODI0OlxcdFxcdGlmICh0YmwgPT0gXFx1MDAyNm1wYXRoLVxcdTAwM2VzZGF0YS1cXHUwMDNldS5tZXNoLm1wcF9wYXRocylcXG4gODI1OlxcdFxcdFxcdG1lc2hfZmFzdF90eF9mbHVzaF9hZGRyKG1wYXRoLVxcdTAwM2VzZGF0YSwgbXBhdGgtXFx1MDAzZWRzdCk7XFxuIDgyNjpcXHRcXHRlbHNlXFxuIDgyNzpcXHRcXHRcXHRtZXNoX2Zhc3RfdHhfZmx1c2hfbXBhdGgobXBhdGgpO1xcbiA4Mjg6XFx0XFx0bWVzaF9wYXRoX2ZyZWVfcmN1KHRibCwgbXBhdGgpO1xcbiA4Mjk6XFx0fVxcbiA4MzA6XFx0XFxuIDgzMTpcXHQvKipcXG4gODMyOlxcdCAqIG1lc2hfcGF0aF9mbHVzaF9ieV9uZXh0aG9wIC0gRGVsZXRlcyBtZXNoIHBhdGhzIGlmIHRoZWlyIG5leHQgaG9wIG1hdGNoZXNcXG4gODMzOlxcdCAqXFxuIDgzNDpcXHQgKiBAc3RhOiBtZXNoIHBlZXIgdG8gbWF0Y2hcXG4gODM1OlxcdCAqXFxuIDgzNjpcXHQgKiBSQ1Ugbm90ZXM6IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYSBtZXNoIHBsaW5rIHRyYW5zaXRpb25zIGZyb21cXG4gODM3OlxcdCAqIFBMSU5LX0VTVEFCIHRvIGFueSBvdGhlciBzdGF0ZSwgc2luY2UgUExJTktfRVNUQUIgc3RhdGUgaXMgdGhlIG9ubHkgb25lIHRoYXRcXG4gODM4OlxcdCAqIGFsbG93cyBwYXRoIGNyZWF0aW9uLiBUaGlzIHdpbGwgaGFwcGVuIGJlZm9yZSB0aGUgc3RhIGNhbiBiZSBmcmVlZCAoYmVjYXVzZVxcbiA4Mzk6XFx0ICogc3RhX2luZm9fZGVzdHJveSgpIGNhbGxzIHRoaXMpIHNvIGFueSByZWFkZXIgaW4gYSByY3UgcmVhZCBibG9jayB3aWxsIGJlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjI0LjczMjcwMjUxMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzI3NTUxMzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVzZS1BZnRlci1GcmVlIENvbmN1cnJlbmN5IEZpeCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgbG9naWMuIEl0IGxvb2tzIGxpa2UgaW4gYF9fbWVzaF9wYXRoX2RlbGAsIHdlJ3JlIHNldHRpbmcgYG1wYXRoLVx1MDAzZWZsYWdzIHw9IE1FU0hfUEFUSF9ERUxFVEVEYCAqYmVmb3JlKiBmbHVzaGluZyB0aGUgZmFzdCBUWCBjYWNoZSBhbmQgZnJlZWluZyB0aGUgbWVtb3J5LiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIGluIGBtZXNoX2Zhc3RfdHhfY2FjaGVgLiBJdCdzIGNoZWNraW5nIGBSRUFEX09OQ0UobXBhdGgtXHUwMDNlZmxhZ3MpIFx1MDAyNiBNRVNIX1BBVEhfREVMRVRFRGAgKGFuZCBhIHNpbWlsYXIgY2hlY2sgZm9yIGBtcHBhdGhgKSB1bmRlciBhIHNwaW5sb2NrLiBJZiB0aGUgcGF0aCBpcyBtYXJrZWQgZGVsZXRlZCwgaXQgYmFpbHMgb3V0LCBhdm9pZGluZyBhZGRpbmcgYSBzdGFsZSBlbnRyeSB0byB0aGUgY2FjaGUuXG5cbkFoLCBJIHNlZS4gVGhpcyBpcyBhIGNsYXNzaWMgY29uY3VycmVuY3kgYnVnIGZpeDogYSB1c2UtYWZ0ZXItZnJlZSByYWNlIGNvbmRpdGlvbi4gVGhlIHNjZW5hcmlvIHdhcyB0aGF0IGBtZXNoX2Zhc3RfdHhfY2FjaGVgIGNvdWxkIGFkZCBhbiBlbnRyeSBwb2ludGluZyB0byBhIGBtcGF0aGAgKG9yIGBtcHBhdGhgKSAqYWZ0ZXIqIGBfX21lc2hfcGF0aF9kZWxgIGZsdXNoZWQgdGhlIGNhY2hlIGFuZCBmcmVlZCB0aGUgbWVtb3J5LCByZXN1bHRpbmcgaW4gYSBVQUYgd2hlbiBgbWVzaF9wYXRoX2ZyZWVfcmN1YCB3YXMgY2FsbGVkLiBTZXR0aW5nIHRoZSBgTUVTSF9QQVRIX0RFTEVURURgIGZsYWcgYmVmb3JlIGZyZWVpbmcgYW5kIGNoZWNraW5nIGl0IGluIHRoZSBjYWNoZSBlbnN1cmVzIHRoYXQgbm8gc3RhbGUgZW50cmllcyBhcmUgYWRkZWQgdG8gdGhlIGNhY2hlLCB0aHVzIHByZXZlbnRpbmcgdGhlIFVBRi4gQ2xldmVyLlxuXG5Ob3csIGxldCdzIGRvIGEgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiBhbnl0aGluZyBlbHNlIGlzIGdvaW5nIG9uLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLlxuXG5GaXJzdCwgaXMgdGhlcmUgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzaz8gR29vZCwgdGhlIHBhdGNoIGludm9sdmVzIGBtcGF0aC1cdTAwM2VmbGFnc2AgaW4gYHN0cnVjdCBtZXNoX3BhdGhgLiBJIHNob3VsZCBjb25maXJtIHRoZSBgZmxhZ3NgIGZpZWxkIGlzIHByb3Blcmx5IGluaXRpYWxpemVkLCBhbmQgaXQgaXMuIFRoaXMgaXMgYWxsb2NhdGVkIHZpYSBgbWVzaF9wYXRoX2FsbG9jYCBvciBzaW1pbGFyLCB3aGljaCBJIGtub3cgaW5pdGlhbGl6ZXMgdGhlIHN0cnVjdC4gVGhlIGNoZWNrIHVzZXMgYFJFQURfT05DRWAgc28gaXQncyBzYWZlLlxuXG5TZWNvbmQsIGRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVzZXItc3BhY2UgY29waWVzLCBpb2N0bHMsIG5ldGxpbmsgaW50ZXJhY3Rpb25zLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBwYWRkaW5nIGlzc3Vlcz8gTm8uIEl0IHNlZW1zIGZvY3VzZWQgc29sZWx5IG9uIGluLWtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZmxvdy5cblxuVGhpcmQsIGFyZSB0aGVyZSBhbnkgY2hhbmdlcyB0byBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgdGhhdCBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBidWZmZXIgcmVhZHM/IE5vLiBUaGF0IHNlZW1zIHVubGlrZWx5IGdpdmVuIHRoZSBzY29wZSBvZiB0aGUgZml4LlxuXG5Gb3VydGgsIGlzIEtBU0FOIGFibGUgdG8gY2F0Y2ggdGhpcyBzb3J0IG9mIGJ1Zz8gWWVzLCBLQVNBTiB3b3VsZCBkZXRlY3QgdGhpcyB1c2UtYWZ0ZXItZnJlZSByYWNlLiBJdCB3b3VsZCBhbHNvIGRldGVjdCB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLiBLTVNBTiBpc24ndCByZWxldmFudCBoZXJlLCBiZWNhdXNlIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBpbmZvIGxlYWtzIGludm9sdmVkLlxuXG5BbHJpZ2h0LCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBvdmVyIHRoZSBhbGxvY2F0aW9uIHJvdXRpbmVzLCBgbWVzaF9wYXRoX25ld2AsIGBtZXNoX3BhdGhfYXNzaWduYCwgb3Igd2hlcmV2ZXIgdGhlIGBzdHJ1Y3QgbWVzaF9wYXRoYCBpcyBhbGxvY2F0ZWQsIGp1c3QgdG8gYmUgMTAwJSBzdXJlLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHdlbGwtdGFyZ2V0ZWQgYW5kIGNvcnJlY3QgZml4IGZvciBhIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDE6MzAuMDYwMjU2MjMxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzIyMTk1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZXNoX3BhdGhfYWxsb2N8bWVzaF9wYXRoX25ld1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz00MDI9c3RhdGljXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjQwMzpzdHJ1Y3QgbWVzaF9wYXRoICptZXNoX3BhdGhfbmV3KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy00MDQtXFx0XFx0XFx0XFx0Y29uc3QgdTggKmRzdCwgZ2ZwX3QgZ2ZwX2ZsYWdzKVxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTY4Nj1zdHJ1Y3QgbWVzaF9wYXRoICptZXNoX3BhdGhfYWRkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTcwMS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NzAyOlxcdG5ld19tcGF0aCA9IG1lc2hfcGF0aF9uZXcoc2RhdGEsIGRzdCwgR0ZQX0FUT01JQyk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTcwMy1cXHRpZiAoIW5ld19tcGF0aClcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYz03Mjg9aW50IG1wcF9wYXRoX2FkZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy03NDEtXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jOjc0MjpcXHRuZXdfbXBhdGggPSBtZXNoX3BhdGhfbmV3KHNkYXRhLCBkc3QsIEdGUF9BVE9NSUMpO1xcbm5ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYy03NDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA3OjQxOjMwLjExMzQ4NTM1MloiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzI0MTQ4MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbWVzaF9wYXRoX25ld2AqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gYG1lc2hfcGF0aF9uZXdgLiBJIHdhbnQgdG8gZ2V0IGEgcXVpY2sgZmVlbCBmb3IgaXRzIGltcGxlbWVudGF0aW9uIOKAkyBwcm9iYWJseSBub3QgYSBkZWVwIGRpdmUgYXQgdGhpcyBzdGFnZSwganVzdCBhIHByZWxpbWluYXJ5IGFzc2Vzc21lbnQuIEknbSBsb29raW5nIGZvciBpdHMgb3ZlcmFsbCBzdHJ1Y3R1cmUsIGFueSBvYnZpb3VzIHJlZCBmbGFncywgb3IgcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIE15IGltbWVkaWF0ZSBnb2FscyBhcmUgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLCBpZGVudGlmeSBpdHMga2V5IGRhdGEgc3RydWN0dXJlcyBvciBhbGdvcml0aG1zLCBhbmQgcGlucG9pbnQgYW55IGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdOKAmXMgbGlrZWx5IGEgY29uc3RydWN0b3IsIHBhdGgtZ2VuZXJhdGlvbiwgb3IgbWVzaC1tYW5pcHVsYXRpb24gZnVuY3Rpb24sIGRlcGVuZGluZyBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24gdXNlZC4gTGV0J3Mgc2VlIGlmIHRoaXMgb25lIGZpdHMgbXkgaW50dWl0aW9uIG9mIHRoZSBzeXN0ZW0ncyBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MTozMy40Mzc2MzYyNTVaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHR9XFxuIDQwMTpcXHRcXG4gNDAyOlxcdHN0YXRpY1xcbiA0MDM6XFx0c3RydWN0IG1lc2hfcGF0aCAqbWVzaF9wYXRoX25ldyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gNDA0OlxcdFxcdFxcdFxcdFxcdGNvbnN0IHU4ICpkc3QsIGdmcF90IGdmcF9mbGFncylcXG4gNDA1OlxcdHtcXG4gNDA2OlxcdFxcdHN0cnVjdCBtZXNoX3BhdGggKm5ld19tcGF0aDtcXG4gNDA3OlxcdFxcbiA0MDg6XFx0XFx0bmV3X21wYXRoID0ga3phbGxvY19vYmooc3RydWN0IG1lc2hfcGF0aCwgZ2ZwX2ZsYWdzKTtcXG4gNDA5OlxcdFxcdGlmICghbmV3X21wYXRoKVxcbiA0MTA6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDQxMTpcXHRcXG4gNDEyOlxcdFxcdG1lbWNweShuZXdfbXBhdGgtXFx1MDAzZWRzdCwgZHN0LCBFVEhfQUxFTik7XFxuIDQxMzpcXHRcXHRldGhfYnJvYWRjYXN0X2FkZHIobmV3X21wYXRoLVxcdTAwM2VyYW5uX3NuZF9hZGRyKTtcXG4gNDE0OlxcdFxcdG5ld19tcGF0aC1cXHUwMDNlaXNfcm9vdCA9IGZhbHNlO1xcbiA0MTU6XFx0XFx0bmV3X21wYXRoLVxcdTAwM2VzZGF0YSA9IHNkYXRhO1xcbiA0MTY6XFx0XFx0bmV3X21wYXRoLVxcdTAwM2VmbGFncyA9IDA7XFxuIDQxNzpcXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZuZXdfbXBhdGgtXFx1MDAzZWZyYW1lX3F1ZXVlKTtcXG4gNDE4OlxcdFxcdG5ld19tcGF0aC1cXHUwMDNlZXhwX3RpbWUgPSBqaWZmaWVzO1xcbiA0MTk6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNm5ld19tcGF0aC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuIDQyMDpcXHRcXHR0aW1lcl9zZXR1cChcXHUwMDI2bmV3X21wYXRoLVxcdTAwM2V0aW1lciwgbWVzaF9wYXRoX3RpbWVyLCAwKTtcXG4gNDIxOlxcdFxcbiA0MjI6XFx0XFx0cmV0dXJuIG5ld19tcGF0aDtcXG4gNDIzOlxcdH1cXG4gNDI0OlxcdFxcbiA0MjU6XFx0c3RhdGljIHZvaWQgbWVzaF9mYXN0X3R4X2VudHJ5X2ZyZWUoc3RydWN0IG1lc2hfdHhfY2FjaGUgKmNhY2hlLFxcbiA0MjY6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfbWVzaF9mYXN0X3R4ICplbnRyeSlcXG4gNDI3OlxcdHtcXG4gNDI4OlxcdFxcdGhsaXN0X2RlbF9yY3UoXFx1MDAyNmVudHJ5LVxcdTAwM2V3YWxrX2xpc3QpO1xcbiA0Mjk6XFx0XFx0cmhhc2h0YWJsZV9yZW1vdmVfZmFzdChcXHUwMDI2Y2FjaGUtXFx1MDAzZXJodCwgXFx1MDAyNmVudHJ5LVxcdTAwM2VyaGFzaCwgZmFzdF90eF9yaHRfcGFyYW1zKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDc6NDE6MzMuNDM3NzMxNzQ2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2OTY2NjU3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLQVNBTiBJbXBhY3Qgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhyb3VnaCB0aGUgbG9naWMuIEV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGlzIGBuZXdfbXBhdGhgIGlzIGJlaW5nIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgbWVhbmluZyBpdCdzIHplcm8taW5pdGlhbGl6ZWQgZnJvbSB0aGUgc3RhcnQsIGFuZCB0aGUgYG5ld19tcGF0aC1cdTAwM2VmbGFnc2Agc3RhcnRzIGF0IHplcm8gYXMgd2VsbC4gR29vZCwgdGhhdCBoZWxwcy5cblxuVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGhlcmUgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIEEgZGVsZXRlZCBgbXBhdGhgIG1pZ2h0IGJlIGFkZGVkIGJhY2sgaW50byB0aGUgYGZhc3RfdHhgIGNhY2hlICphZnRlciogdGhlIGNhY2hlIGhhcyBiZWVuIGZsdXNoZWQgYnkgYF9fbWVzaF9wYXRoX2RlbGAuIFRoYXQncyBhIGNsYXNzaWMgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8sIGEgdmVyeSBuYXN0eSBidWcuXG5cbkhvd2V2ZXIsIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMsIHRoaXMgaXMgc3F1YXJlbHkgaW4gdGhlIHJlYWxtIG9mIGNvbmN1cnJlbmN5IGVycm9ycy4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gY2F0Y2ggdGhlc2UgdHlwZXMgb2YgYnVncyDigJMgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeS4gVGhpcyBwYXRjaCBkb2VzbuKAmXQgaW50cm9kdWNlIGFueSBuZXcgaW5zdGFuY2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBub3IgZG9lcyBpdCBhcHBlYXIgdG8gY3JlYXRlIGFueSBpbmZvcm1hdGlvbiBsZWFrcy4gSXQncyBzb2xlbHkgYSBjb25jdXJyZW5jeSBwcm90ZWN0aW9uIG1lYXN1cmUuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhhdCBpdCdzIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUsIGFuZCBvbmx5IGFmZmVjdHMgbWVtb3J5IHdoaWNoIGlzIHByb3Blcmx5IGBremFsbG9jYCdkLCBJJ20gY29uZmlkZW50IHdlIGNhbiBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAgYmVjYXVzZSBpdCBkb2Vzbid0IGFwcGVhciB0byBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGUgcmVhc29uaW5nIEkganVzdCBsYWlkIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUxMiwiT3V0cHV0VG9rZW5zIjoxNzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNzo0MTozNy4xMzQzOTk1NThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc29sdmVzIGEgcmFjZSBjb25kaXRpb24gaW4gbWFjODAyMTEgbWVzaCBwYXRoIG1hbmFnZW1lbnQgd2hlcmUgYSBtZXNoIHBhdGggbWFya2VkIGZvciBkZWxldGlvbiBjb3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBmYXN0IFRYIGNhY2hlIGFmdGVyIHRoZSBjYWNoZSBmbHVzaCwgbGVhZGluZyB0byBhIHVzZS1hZnRlci1mcmVlIChVQUYpLiBUaGUgZml4IHNldHMgYE1FU0hfUEFUSF9ERUxFVEVEYCB1bmRlciBsb2NrIGluIGBfX21lc2hfcGF0aF9kZWwoKWAgYW5kIGNoZWNrcyBmb3IgdGhpcyBmbGFnIGJlZm9yZSBpbnNlcnRpbmcgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBpbiBgbWVzaF9mYXN0X3R4X2NhY2hlKClgLiBcXG5cXG5UaGlzIGNoYW5nZSBhZGRyZXNzZXMgb2JqZWN0IGxpZmV0aW1lIGFuZCBjb25jdXJyZW5jeSAoVUFGKSBpc3N1ZXMgd2hpY2ggYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4uIEl0IGRvZXMgbm90IGludHJvZHVjZSwgcmVhZCwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBub3IgZG9lcyBpdCBhZmZlY3QgdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHN0cnVjdCBwYWRkaW5nLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXNvbHZlcyBhIHJhY2UgY29uZGl0aW9uIGluIG1hYzgwMjExIG1lc2ggcGF0aCBtYW5hZ2VtZW50IHdoZXJlIGEgbWVzaCBwYXRoIG1hcmtlZCBmb3IgZGVsZXRpb24gY291bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgZmFzdCBUWCBjYWNoZSBhZnRlciB0aGUgY2FjaGUgZmx1c2gsIGxlYWRpbmcgdG8gYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKS4gVGhlIGZpeCBzZXRzIGBNRVNIX1BBVEhfREVMRVRFRGAgdW5kZXIgbG9jayBpbiBgX19tZXNoX3BhdGhfZGVsKClgIGFuZCBjaGVja3MgZm9yIHRoaXMgZmxhZyBiZWZvcmUgaW5zZXJ0aW5nIGludG8gdGhlIGZhc3QgVFggY2FjaGUgaW4gYG1lc2hfZmFzdF90eF9jYWNoZSgpYC4gXFxuXFxuVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIG9iamVjdCBsaWZldGltZSBhbmQgY29uY3VycmVuY3kgKFVBRikgaXNzdWVzIHdoaWNoIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IEtBU0FOLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm9yIGRvZXMgaXQgYWZmZWN0IHVzZXItc3BhY2UgY29weSBwYXRocyBvciBzdHJ1Y3QgcGFkZGluZy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[1] Phase: Succeeded StartedAt: 2026-09-08 07:41:47 +0000 UTC FinishedAt: 2026-09-08 07:41:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-08 07:41:47 +0000 UTC FinishedAt: 2026-09-08 07:41:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2] Phase: Succeeded StartedAt: 2026-09-08 07:41:47 +0000 UTC FinishedAt: 2026-09-08 11:21:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-08 07:41:47 +0000 UTC FinishedAt: 2026-09-08 11:21:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-08 07:41:47 +0000 UTC FinishedAt: 2026-09-08 07:41:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-08 07:41:47 +0000 UTC FinishedAt: 2026-09-08 07:41:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflowqv6sc/series-workflowqv6sc-convert-artifact-1836538837/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-08 07:41:58 +0000 UTC FinishedAt: 2026-09-08 07:58:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-08 07:41:58 +0000 UTC FinishedAt: 2026-09-08 07:58:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f1b410ec-c413-4178-b519-cc8c3129e124,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-workflowqv6sc/series-workflowqv6sc-convert-artifact-1836538837/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": "0d8684f2-ef6a-4bc4-86dc-6c595c01a1b3", "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-workflowqv6sc/series-workflowqv6sc-build-action-930285115/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-08 07:41:58 +0000 UTC FinishedAt: 2026-09-08 07:57:52 +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:*f1b410ec-c413-4178-b519-cc8c3129e124,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-workflowqv6sc/series-workflowqv6sc-convert-artifact-1836538837/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": "0d8684f2-ef6a-4bc4-86dc-6c595c01a1b3", "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-workflowqv6sc/series-workflowqv6sc-build-action-930285115/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-08 07:58:02 +0000 UTC FinishedAt: 2026-09-08 07:58:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-08 07:58:02 +0000 UTC FinishedAt: 2026-09-08 07:58:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-08 07:58:02 +0000 UTC FinishedAt: 2026-09-08 07:58:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-08 07:58:02 +0000 UTC FinishedAt: 2026-09-08 07:58:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflowqv6sc/series-workflowqv6sc-convert-artifact-851127216/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-08 07:58:12 +0000 UTC FinishedAt: 2026-09-08 08:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-08 07:58:12 +0000 UTC FinishedAt: 2026-09-08 08:00:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d8684f2-ef6a-4bc4-86dc-6c595c01a1b3,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-workflowqv6sc/series-workflowqv6sc-build-action-930285115/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-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-08 08:00:26 +0000 UTC FinishedAt: 2026-09-08 08:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-08 08:00:26 +0000 UTC FinishedAt: 2026-09-08 08:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-08 08:00:26 +0000 UTC FinishedAt: 2026-09-08 08:17:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-08 08:00:26 +0000 UTC FinishedAt: 2026-09-08 08:17:05 +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:*f1b410ec-c413-4178-b519-cc8c3129e124,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-workflowqv6sc/series-workflowqv6sc-convert-artifact-851127216/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": "c1469a9a-d197-40da-bb59-ce72c1ae070a", "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-workflowqv6sc/series-workflowqv6sc-build-action-2116093356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-08 08:00:26 +0000 UTC FinishedAt: 2026-09-08 08:16:55 +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:*f1b410ec-c413-4178-b519-cc8c3129e124,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-workflowqv6sc/series-workflowqv6sc-convert-artifact-851127216/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": "c1469a9a-d197-40da-bb59-ce72c1ae070a", "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-workflowqv6sc/series-workflowqv6sc-build-action-2116093356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-08 08:17:05 +0000 UTC FinishedAt: 2026-09-08 08:17:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-08 08:17:05 +0000 UTC FinishedAt: 2026-09-08 08:17:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-08 08:17:05 +0000 UTC FinishedAt: 2026-09-08 08:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-08 08:17:05 +0000 UTC FinishedAt: 2026-09-08 08:18:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c1469a9a-d197-40da-bb59-ce72c1ae070a,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-workflowqv6sc/series-workflowqv6sc-build-action-2116093356/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-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-08 08:19:04 +0000 UTC FinishedAt: 2026-09-08 11:21:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-08 08:19:04 +0000 UTC FinishedAt: 2026-09-08 11:21:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"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:*0d8684f2-ef6a-4bc4-86dc-6c595c01a1b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c1469a9a-d197-40da-bb59-ce72c1ae070a,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-workflowqv6sc/series-workflowqv6sc-build-action-930285115/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-workflowqv6sc/series-workflowqv6sc-build-action-2116093356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-08 08:19:04 +0000 UTC FinishedAt: 2026-09-08 08:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-08 08:19:04 +0000 UTC FinishedAt: 2026-09-08 08:19:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"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-workflowqv6sc/series-workflowqv6sc-convert-artifact-842385961/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-08 08:19:04 +0000 UTC FinishedAt: 2026-09-08 08:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-08 08:19:04 +0000 UTC FinishedAt: 2026-09-08 08:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-08 08:19:04 +0000 UTC FinishedAt: 2026-09-08 08:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-08 08:19:15 +0000 UTC FinishedAt: 2026-09-08 11:21:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqv6sc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mesh_fast_tx_cache","mesh_path_del","mesh_path_flush_by_nexthop","mesh_path_tbl_expire","mesh_nexthop_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_MESH","CFG80211"],"series_id":"cd0e8cbe-b3a2-4d30-b014-8c5b0f578e7f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-08 08:19:15 +0000 UTC FinishedAt: 2026-09-08 11:21:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d8684f2-ef6a-4bc4-86dc-6c595c01a1b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c1469a9a-d197-40da-bb59-ce72c1ae070a,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-workflowqv6sc/series-workflowqv6sc-build-action-930285115/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-workflowqv6sc/series-workflowqv6sc-build-action-2116093356/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-workflowqv6sc/series-workflowqv6sc-convert-artifact-842385961/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,}