Name: series-workfloww49rt Phase: Succeeded StartedAt: 2026-08-19 20:49:31 +0000 UTC FinishedAt: 2026-08-20 00:51:47 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[0] Phase: Succeeded StartedAt: 2026-08-19 20:49:31 +0000 UTC FinishedAt: 2026-08-19 21:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[0].run-triage Phase: Succeeded StartedAt: 2026-08-19 20:49:31 +0000 UTC FinishedAt: 2026-08-19 21:09:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT", "NET_ACT_NAT", "NET_ACT_PEDIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT", "NET_ACT_NAT", "NET_ACT_PEDIT" ], "series_id": "3c039f83-8cb5-47ad-ba4b-fe051ee2c90d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_nat_act", "tcf_pedit_act" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX05BVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX1BFRElUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX25hdF9hY3QmIzM0OywKICAgICYjMzQ7dGNmX3BlZGl0X2FjdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNvbm50cmFjayBzdGF0ZSB0cmFja2luZyB3aGVuIHBhY2tldHMgYXJlIG1vZGlmaWVkIGJ5IHRjIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpLiBJdCBkb2VzIHNvIGJ5IGNhbGxpbmcgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGNsZWFyIHRoZSBjb25udHJhY2sgc3RhdGUgaWYgTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwYWNrZXQgbWV0YWRhdGEgKHNrYi1cdTAwM2VuZmN0KSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byBza2IgbWFuaXB1bGF0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGBuZl9yZXNldF9jdChza2IpYCB0byBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAgd2hlbiBMMy9MNCBoZWFkZXJzIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxpbmcgYWN0aW9ucyAoTkFUIGFuZCBwZWRpdCkgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgdHJhZmZpYyBjb250cm9sICh0YykgY29tbWFuZHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhOWNmZDc2ODhkY2QzNTQ0MjhkNWMwM2MzOWExYWQwMmJiMzFhYWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MDc6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmNcbmluZGV4IGFiYjMzMmRlZTgzNmQuLjBjM2QzYjg5ZDM0OTkgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X25hdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X25hdC5jXG5AQCAtMjU3LDYgJiM0MzsyNTcsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX25hdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH1cbiBcbiBvdXQ6XG4mIzQzO1x0bmZfcmVzZXRfY3Qoc2tiKTtcbiBcdHJldHVybiBhY3Rpb247XG4gXG4gZHJvcDpcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbmluZGV4IGQ0ZDQ3YTk5MjFmNDUuLmIwNzkyNTdjMmI3YjYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xuQEAgLTM4Niw2ICYjNDM7Mzg2LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCB0Y2ZfcGVkaXQgKnAgPSB0b19wZWRpdChhKTtcbiBcdHN0cnVjdCB0Y2ZfcGVkaXRfa2V5X2V4ICp0a2V5X2V4O1xuIFx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XG4mIzQzO1x0Ym9vbCBsM19sNF9jaGFuZ2VkID0gZmFsc2U7XG4gXHRzdHJ1Y3QgdGNfcGVkaXRfa2V5ICp0a2V5O1xuIFx0aW50IGk7XG4gXG5AQCAtMzk4LDcgJiM0MzszOTksNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dGtleV9leCA9IHBhcm1zLVx1MDAzZXRjZnBfa2V5c19leDtcbiBcbiBcdGZvciAoaSA9IHBhcm1zLVx1MDAzZXRjZnBfbmtleXM7IGkgXHUwMDNlIDA7IGktLSwgdGtleSYjNDM7JiM0MzspIHtcbi1cdFx0aW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuO1xuJiM0MztcdFx0aW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuLCBud19vZmZzZXQ7XG4gXHRcdGludCBvZmZzZXQgPSB0a2V5LVx1MDAzZW9mZjtcbiBcdFx0aW50IGhvZmZzZXQgPSAwO1xuIFx0XHR1MzIgY3VyX3ZhbCwgdmFsO1xuQEAgLTQxOCw2ICYjNDM7NDE5LDggQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRnb3RvIGJhZDtcbiBcdFx0fVxuIFxuJiM0MztcdFx0bndfb2Zmc2V0ID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNrYik7XG4mIzQzO1xuIFx0XHRpZiAodGtleS1cdTAwM2VvZmZtYXNrKSB7XG4gXHRcdFx0dTggKmQsIF9kO1xuIFx0XHRcdGludCBhdF9vZmZzZXQ7XG5AQCAtNDg1LDYgJiM0Mzs0ODgsMTkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRwdXRfdW5hbGlnbmVkKChjdXJfdmFsIFx1MDAyNiB0a2V5LVx1MDAzZW1hc2spIF4gdmFsLCBwdHIpO1xuJiM0MztcbiYjNDM7XHRcdC8qIFRyYWNrIGlmIEwzIG9yIEw0IGhlYWRlcnMgd2VyZSBtb2RpZmllZDpcbiYjNDM7XHRcdCAqIC0gRGlyZWN0IEwzL0w0IGhlYWRlciB0eXBlc1xuJiM0MztcdFx0ICogLSBFVEggaGVhZGVyIHR5cGUgd2l0aCBvZmZzZXQvbGVuZ3RoIHJlYWNoaW5nIGludG8gTDMvTDRcbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfTkVUV09SSyB8fFxuJiM0MztcdFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfSVA0IHx8XG4mIzQzO1x0XHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDYgfHxcbiYjNDM7XHRcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1RDUCB8fFxuJiM0MztcdFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfVURQIHx8XG4mIzQzO1x0XHQgICAgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfRVRIIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICB3cml0ZV9vZmZzZXQgJiM0MzsgKGludClzaXplb2YoKnB0cikgXHUwMDNlIG53X29mZnNldCkpXG4mIzQzO1x0XHRcdGwzX2w0X2NoYW5nZWQgPSB0cnVlO1xuIFx0fVxuIFxuIFx0Z290byBkb25lO1xuQEAgLTQ5Miw2ICYjNDM7NTA4LDkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBiYWQ6XG4gXHR0Y2ZfYWN0aW9uX2luY19vdmVybGltaXRfcXN0YXRzKFx1MDAyNnAtXHUwMDNlY29tbW9uKTtcbiBkb25lOlxuJiM0MztcdGlmIChsM19sNF9jaGFuZ2VkKVxuJiM0MztcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbiYjNDM7XG4gXHRyZXR1cm4gcGFybXMtXHUwMDNlYWN0aW9uO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uXG5pbmRleCA4YWI0OGRlZjg5YjZhLi4xOGE3NzM3NDgzNTgwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uXG5AQCAtNzQyLDUgJiM0Mzs3NDIsMTczIEBAXG4gICAgICAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuICAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGNsc2FjdFwmIzM0O1xuICAgICAgICAgXVxuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7YzJhOVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtWZXJpZnkgY29ubnRyYWNrIHJlc2V0IGFmdGVyIHBlZGl0IG1vZGlmaWVzIElQIHByb3RvY29sXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2N0XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwZWRpdFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7c2NhcHlcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O3BsdWdpbnNcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cmVxdWlyZXNcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O25zUGx1Z2luXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7c2NhcHlQbHVnaW5cJiMzNDtcbiYjNDM7ICAgICAgICAgICAgXVxuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgW1xuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIDAsXG4mIzQzOyAgICAgICAgICAgICAgICAxLFxuJiM0MzsgICAgICAgICAgICAgICAgMixcbiYjNDM7ICAgICAgICAgICAgICAgIDI1NVxuJiM0MzsgICAgICAgICAgICBdLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtpcHRhYmxlcyAtdCByYXcgLUZcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBJTlZBTElEIC1qIERST1BcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3NcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIGlwIHByb3RvY29sIHNldCAxIHBpcGUgYWN0aW9uIGNzdW0gaXA0aCBjb250aW51ZVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtzY2FweVwmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtpZmFjZVwmIzM0OzogXCYjMzQ7JERFVjBcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2NvdW50XCYjMzQ7OiAxLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwYWNrZXRcJiMzNDs6IFwmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMCYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMCYjMzk7LHByb3RvPTYpL1RDUChzcG9ydD0xMjM0LGRwb3J0PTgwLGZsYWdzPSYjMzk7UyYjMzk7KVwmIzM0O1xuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIElOVkFMSUQmIzM5O1wmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O15cXFxcWzE6NDBcXFxcXVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2lwdGFibGVzIC10IHJhdyAtRlwmIzM0O1xuJiM0MzsgICAgICAgIF1cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB7XG4mIzQzOyAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2QzYjhcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7VmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBUQ1AgcG9ydCBtb2RpZmljYXRpb25cJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7Y3RcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3BlZGl0XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtzY2FweVwmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7cGx1Z2luc1wmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtyZXF1aXJlc1wmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7bnNQbHVnaW5cJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtzY2FweVBsdWdpblwmIzM0O1xuJiM0MzsgICAgICAgICAgICBdXG4mIzQzOyAgICAgICAgfSxcbiYjNDM7ICAgICAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBbXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgMCxcbiYjNDM7ICAgICAgICAgICAgICAgIDEsXG4mIzQzOyAgICAgICAgICAgICAgICAyLFxuJiM0MzsgICAgICAgICAgICAgICAgMjU1XG4mIzQzOyAgICAgICAgICAgIF0sXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2lwdGFibGVzIC10IHJhdyAtRlwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgdGNwIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCYjMzQ7XG4mIzQzOyAgICAgICAgXSxcbiYjNDM7ICAgICAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgaXBfcHJvdG8gdGNwIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgdGNwIHNwb3J0IHNldCA5OTk5IHBpcGVcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7c2NhcHlcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aWZhY2VcJiMzNDs6IFwmIzM0OyRERVYwXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtjb3VudFwmIzM0OzogMSxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cGFja2V0XCYjMzQ7OiBcJiMzNDtFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JiMzOTsxMC4wLjAuMTAmIzM5Oyxkc3Q9JiMzOTsxMC4wLjAuMjAmIzM5OykvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9JiMzOTtTJiMzOTspXCYjMzQ7XG4mIzQzOyAgICAgICAgfSxcbiYjNDM7ICAgICAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0O2lwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAmIzM5O2N0c3RhdGUgSU5WQUxJRCYjMzk7XCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDteXFxcXFsxOjQwXFxcXF1cJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GXCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7YTFiMlwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtWZXJpZnkgY29ubnRyYWNrIE5PVCByZXNldCB3aGVuIHBlZGl0IG1vZGlmaWVzIG9ubHkgTUFDXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2N0XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwZWRpdFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7c2NhcHlcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O3BsdWdpbnNcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cmVxdWlyZXNcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O25zUGx1Z2luXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7c2NhcHlQbHVnaW5cJiMzNDtcbiYjNDM7ICAgICAgICAgICAgXVxuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgW1xuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIDAsXG4mIzQzOyAgICAgICAgICAgICAgICAxLFxuJiM0MzsgICAgICAgICAgICAgICAgMixcbiYjNDM7ICAgICAgICAgICAgICAgIDI1NVxuJiM0MzsgICAgICAgICAgICBdLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtpcHRhYmxlcyAtdCByYXcgLUZcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBORVcgLWogRFJPUFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgZXRoIHNyYyBzZXQgMTE6MjI6MzM6NDQ6NTU6NjYgcGlwZVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtzY2FweVwmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtpZmFjZVwmIzM0OzogXCYjMzQ7JERFVjBcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2NvdW50XCYjMzQ7OiAxLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwYWNrZXRcJiMzNDs6IFwmIzM0O0V0aGVyKHNyYz0mIzM5O2FhOmJiOmNjOmRkOmVlOmZmJiMzOTssdHlwZT0weDgwMCkvSVAoc3JjPSYjMzk7MTAuMC4wLjExJiMzOTssZHN0PSYjMzk7MTAuMC4wLjIxJiMzOTspL0lDTVAoKVwmIzM0O1xuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIE5FVyYjMzk7XCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7XlxcXFxbMToyOFxcXFxdXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GXCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7YjdmNFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtWZXJpZnkgY29ubnRyYWNrIHJlc2V0IHdoZW4gRVRIIHdyaXRlIGV4dGVuZHMgaW50byBJUCBsYXllclwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtjdFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cGVkaXRcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3NjYXB5XCYjMzQ7XG4mIzQzOyAgICAgICAgXSxcbiYjNDM7ICAgICAgICBcJiMzNDtwbHVnaW5zXCYjMzQ7OiB7XG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3JlcXVpcmVzXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtuc1BsdWdpblwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O3NjYXB5UGx1Z2luXCYjMzQ7XG4mIzQzOyAgICAgICAgICAgIF1cbiYjNDM7ICAgICAgICB9LFxuJiM0MzsgICAgICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFtcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICAwLFxuJiM0MzsgICAgICAgICAgICAgICAgMSxcbiYjNDM7ICAgICAgICAgICAgICAgIDIsXG4mIzQzOyAgICAgICAgICAgICAgICAyNTVcbiYjNDM7ICAgICAgICAgICAgXSxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2Ugb2Zmc2V0IDEyIHUzMiBzZXQgMHgwODAwNDUwMCBwaXBlIGNzdW0gaXA0aCBjb250aW51ZVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtzY2FweVwmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtpZmFjZVwmIzM0OzogXCYjMzQ7JERFVjBcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2NvdW50XCYjMzQ7OiAxLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwYWNrZXRcJiMzNDs6IFwmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMyYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMyYjMzk7KS9JQ01QKClcJiMzNDtcbiYjNDM7ICAgICAgICB9LFxuJiM0MzsgICAgICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7aXB0YWJsZXMtc2F2ZSAtdCByYXcgLWMgfCBncmVwICYjMzk7Y3RzdGF0ZSBJTlZBTElEJiMzOTtcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDteXFxcXFsxOjI4XFxcXF1cJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtpcHRhYmxlcyAtdCByYXcgLUZcJiMzNDtcbiYjNDM7ICAgICAgICBdXG4gICAgIH1cbiBdXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxuaW5kZXggNTExZDY2YzM2YTJhMC4uMTliOGExZmQxYzcxNiAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxuQEAgLTYwMCw2ICYjNDM7NjAwLDE4IEBAIGRlZiBtcF9iaW5zKGFsbHRlc3RzKTpcbiBcbiAgICAgcmV0dXJuIChzZXJpYWwsIHBhcmFsbGVsKVxuIFxuJiM0MzttcF9wbSA9IE5vbmVcbiYjNDM7bXBfYXJncyA9IE5vbmVcbiYjNDM7XG4mIzQzO2RlZiBfX21wX2luaXRfXyhwbSwgYXJncyk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2Ugd2hlbiBlYWNoIHdvcmtlciBwcm9jZXNzIHN0YXJ0cy5cbiYjNDM7ICAgIEl0IHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MmIzM5O3MgbWVtb3J5IHNwYWNlLlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBnbG9iYWwgbXBfcG0sIG1wX2FyZ3NcbiYjNDM7ICAgIG1wX3BtID0gcG1cbiYjNDM7ICAgIG1wX2FyZ3MgPSBhcmdzXG4mIzQzO1xuIGRlZiBfX21wX3J1bm5lcih0ZXN0cyk6XG4gICAgIChfLCB0c3IpID0gdGVzdF9ydW5uZXIobXBfcG0sIG1wX2FyZ3MsIHRlc3RzKVxuICAgICByZXR1cm4gdHNyLl90ZXN0c3VpdGVcbkBAIC02MTUsMTQgJiM0Mzs2MjcsMTMgQEAgZGVmIHRlc3RfcnVubmVyX21wKHBtLCBhcmdzLCBhbGx0ZXN0cyk6XG4gICAgIHByaW50KFwmIzM0O0V4ZWN1dGluZyB7fSB0ZXN0cyBpbiBwYXJhbGxlbCBhbmQge30gaW4gc2VyaWFsXCYjMzQ7LmZvcm1hdChsZW4ocGFyYWxsZWwpLCBsZW4oc2VyaWFsKSkpXG4gICAgIHByaW50KFwmIzM0O1VzaW5nIHt9IGJhdGNoZXMgYW5kIHt9IHdvcmtlcnNcJiMzNDsuZm9ybWF0KGxlbihiYXRjaGVzKSwgYXJncy5tcCkpXG4gXG4tICAgICMgV2UgY2FuJiMzOTt0IHBpY2tsZSB0aGVzZSBvYmplY3RzIHNvIHdvcmthcm91bmQgdGhlbVxuLSAgICBnbG9iYWwgbXBfcG1cbi0gICAgbXBfcG0gPSBwbVxuLVxuLSAgICBnbG9iYWwgbXBfYXJnc1xuLSAgICBtcF9hcmdzID0gYXJnc1xuLVxuLSAgICB3aXRoIFBvb2woYXJncy5tcCkgYXMgcDpcbiYjNDM7ICAgICMgVXNlIHRoZSAmIzM5O2luaXRpYWxpemVyJiMzOTsgdG8gcGFzcyB0aGUgdW5waWNrbGVhYmxlL3NoYXJlZCBvYmplY3RzXG4mIzQzOyAgICAjIHRvIGVhY2ggd29ya2VyIHByb2Nlc3MgZXhhY3RseSBvbmNlIHVwb24gc3RhcnR1cC5cbiYjNDM7ICAgIHdpdGggUG9vbChcbiYjNDM7ICAgICAgICBwcm9jZXNzZXM9YXJncy5tcCxcbiYjNDM7ICAgICAgICBpbml0aWFsaXplcj1fX21wX2luaXRfXyxcbiYjNDM7ICAgICAgICBpbml0YXJncz0ocG0sIGFyZ3MpXG4mIzQzOyAgICApIGFzIHA6XG4gICAgICAgICBwcmVzID0gcC5tYXAoX19tcF9ydW5uZXIsIGJhdGNoZXMpXG4gXG4gICAgIHRzciA9IFRlc3RTdWl0ZVJlcG9ydCgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX05BVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX1BFRElUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX25hdF9hY3QmIzM0OywKICAgICYjMzQ7dGNmX3BlZGl0X2FjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGBuZl9yZXNldF9jdChza2IpYCB0byBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAgd2hlbiBMMy9MNCBoZWFkZXJzIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxpbmcgYWN0aW9ucyAoTkFUIGFuZCBwZWRpdCkgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgdHJhZmZpYyBjb250cm9sICh0YykgY29tbWFuZHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhOWNmZDc2ODhkY2QzNTQ0MjhkNWMwM2MzOWExYWQwMmJiMzFhYWY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTkgMjE6MDc6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X25hdC5jIGIvbmV0L3NjaGVkL2FjdF9uYXQuYwppbmRleCBhYmIzMzJkZWU4MzZkLi4wYzNkM2I4OWQzNDk5IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X25hdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfbmF0LmMKQEAgLTI1Nyw2ICYjNDM7MjU3LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9uYXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJfQogCiBvdXQ6CiYjNDM7CW5mX3Jlc2V0X2N0KHNrYik7CiAJcmV0dXJuIGFjdGlvbjsKIAogZHJvcDoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfcGVkaXQuYyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwppbmRleCBkNGQ0N2E5OTIxZjQ1Li5iMDc5MjU3YzJiN2I2IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCkBAIC0zODYsNiAmIzQzOzM4Niw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJc3RydWN0IHRjZl9wZWRpdCAqcCA9IHRvX3BlZGl0KGEpOwogCXN0cnVjdCB0Y2ZfcGVkaXRfa2V5X2V4ICp0a2V5X2V4OwogCXN0cnVjdCB0Y2ZfcGVkaXRfcGFybXMgKnBhcm1zOwomIzQzOwlib29sIGwzX2w0X2NoYW5nZWQgPSBmYWxzZTsKIAlzdHJ1Y3QgdGNfcGVkaXRfa2V5ICp0a2V5OwogCWludCBpOwogCkBAIC0zOTgsNyAmIzQzOzM5OSw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJdGtleV9leCA9IHBhcm1zLSZndDt0Y2ZwX2tleXNfZXg7CiAKIAlmb3IgKGkgPSBwYXJtcy0mZ3Q7dGNmcF9ua2V5czsgaSAmZ3Q7IDA7IGktLSwgdGtleSYjNDM7JiM0MzspIHsKLQkJaW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuOwomIzQzOwkJaW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuLCBud19vZmZzZXQ7CiAJCWludCBvZmZzZXQgPSB0a2V5LSZndDtvZmY7CiAJCWludCBob2Zmc2V0ID0gMDsKIAkJdTMyIGN1cl92YWwsIHZhbDsKQEAgLTQxOCw2ICYjNDM7NDE5LDggQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCWdvdG8gYmFkOwogCQl9CiAKJiM0MzsJCW53X29mZnNldCA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpOwomIzQzOwogCQlpZiAodGtleS0mZ3Q7b2ZmbWFzaykgewogCQkJdTggKmQsIF9kOwogCQkJaW50IGF0X29mZnNldDsKQEAgLTQ4NSw2ICYjNDM7NDg4LDE5IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJCX0KIAogCQlwdXRfdW5hbGlnbmVkKChjdXJfdmFsICZhbXA7IHRrZXktJmd0O21hc2spIF4gdmFsLCBwdHIpOwomIzQzOwomIzQzOwkJLyogVHJhY2sgaWYgTDMgb3IgTDQgaGVhZGVycyB3ZXJlIG1vZGlmaWVkOgomIzQzOwkJICogLSBEaXJlY3QgTDMvTDQgaGVhZGVyIHR5cGVzCiYjNDM7CQkgKiAtIEVUSCBoZWFkZXIgdHlwZSB3aXRoIG9mZnNldC9sZW5ndGggcmVhY2hpbmcgaW50byBMMy9MNAomIzQzOwkJICovCiYjNDM7CQlpZiAoaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9ORVRXT1JLIHx8CiYjNDM7CQkgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDQgfHwKJiM0MzsJCSAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX0lQNiB8fAomIzQzOwkJICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfVENQIHx8CiYjNDM7CQkgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9VRFAgfHwKJiM0MzsJCSAgICAoaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9FVEggJmFtcDsmYW1wOwomIzQzOwkJICAgICB3cml0ZV9vZmZzZXQgJiM0MzsgKGludClzaXplb2YoKnB0cikgJmd0OyBud19vZmZzZXQpKQomIzQzOwkJCWwzX2w0X2NoYW5nZWQgPSB0cnVlOwogCX0KIAogCWdvdG8gZG9uZTsKQEAgLTQ5Miw2ICYjNDM7NTA4LDkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIGJhZDoKIAl0Y2ZfYWN0aW9uX2luY19vdmVybGltaXRfcXN0YXRzKCZhbXA7cC0mZ3Q7Y29tbW9uKTsKIGRvbmU6CiYjNDM7CWlmIChsM19sNF9jaGFuZ2VkKQomIzQzOwkJbmZfcmVzZXRfY3Qoc2tiKTsKJiM0MzsKIAlyZXR1cm4gcGFybXMtJmd0O2FjdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbgppbmRleCA4YWI0OGRlZjg5YjZhLi4xOGE3NzM3NDgzNTgwIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbgomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbgpAQCAtNzQyLDUgJiM0Mzs3NDIsMTczIEBACiAgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwogICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBjbHNhY3QmIzM0OwogICAgICAgICBdCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDtjMmE5JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtWZXJpZnkgY29ubnRyYWNrIHJlc2V0IGFmdGVyIHBlZGl0IG1vZGlmaWVzIElQIHByb3RvY29sJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2N0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtwZWRpdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7c2NhcHkmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7bnNQbHVnaW4mIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtzY2FweVBsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICAgICAgXQomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgIFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIDAsCiYjNDM7ICAgICAgICAgICAgICAgIDEsCiYjNDM7ICAgICAgICAgICAgICAgIDIsCiYjNDM7ICAgICAgICAgICAgICAgIDI1NQomIzQzOyAgICAgICAgICAgIF0sCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBJTlZBTElEIC1qIERST1AmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIGlwIHByb3RvY29sIHNldCAxIHBpcGUgYWN0aW9uIGNzdW0gaXA0aCBjb250aW51ZSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtzY2FweSYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtpZmFjZSYjMzQ7OiAmIzM0OyRERVYwJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjb3VudCYjMzQ7OiAxLAomIzQzOyAgICAgICAgICAgICYjMzQ7cGFja2V0JiMzNDs6ICYjMzQ7RXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPSYjMzk7MTAuMC4wLjEwJiMzOTssZHN0PSYjMzk7MTAuMC4wLjIwJiMzOTsscHJvdG89NikvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9JiMzOTtTJiMzOTspJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIElOVkFMSUQmIzM5OyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDteXFxbMTo0MFxcXSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZDNiOCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBUQ1AgcG9ydCBtb2RpZmljYXRpb24mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y3QmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3BlZGl0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtzY2FweSYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtuc1BsdWdpbiYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3NjYXB5UGx1Z2luJiMzNDsKJiM0MzsgICAgICAgICAgICBdCiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgMCwKJiM0MzsgICAgICAgICAgICAgICAgMSwKJiM0MzsgICAgICAgICAgICAgICAgMiwKJiM0MzsgICAgICAgICAgICAgICAgMjU1CiYjNDM7ICAgICAgICAgICAgXSwKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgdGNwIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgaXBfcHJvdG8gdGNwIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgdGNwIHNwb3J0IHNldCA5OTk5IHBpcGUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7c2NhcHkmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7aWZhY2UmIzM0OzogJiMzNDskREVWMCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y291bnQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O3BhY2tldCYjMzQ7OiAmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMCYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMCYjMzk7KS9UQ1Aoc3BvcnQ9MTIzNCxkcG9ydD04MCxmbGFncz0mIzM5O1MmIzM5OykmIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0O2lwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAmIzM5O2N0c3RhdGUgSU5WQUxJRCYjMzk7JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O15cXFsxOjQwXFxdJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7CiYjNDM7ICAgICAgICBdCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDthMWIyJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtWZXJpZnkgY29ubnRyYWNrIE5PVCByZXNldCB3aGVuIHBlZGl0IG1vZGlmaWVzIG9ubHkgTUFDJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2N0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtwZWRpdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7c2NhcHkmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7bnNQbHVnaW4mIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtzY2FweVBsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICAgICAgXQomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgIFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIDAsCiYjNDM7ICAgICAgICAgICAgICAgIDEsCiYjNDM7ICAgICAgICAgICAgICAgIDIsCiYjNDM7ICAgICAgICAgICAgICAgIDI1NQomIzQzOyAgICAgICAgICAgIF0sCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBORVcgLWogRFJPUCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgZXRoIHNyYyBzZXQgMTE6MjI6MzM6NDQ6NTU6NjYgcGlwZSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtzY2FweSYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtpZmFjZSYjMzQ7OiAmIzM0OyRERVYwJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjb3VudCYjMzQ7OiAxLAomIzQzOyAgICAgICAgICAgICYjMzQ7cGFja2V0JiMzNDs6ICYjMzQ7RXRoZXIoc3JjPSYjMzk7YWE6YmI6Y2M6ZGQ6ZWU6ZmYmIzM5Oyx0eXBlPTB4ODAwKS9JUChzcmM9JiMzOTsxMC4wLjAuMTEmIzM5Oyxkc3Q9JiMzOTsxMC4wLjAuMjEmIzM5OykvSUNNUCgpJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIE5FVyYjMzk7JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O15cXFsxOjI4XFxdJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7CiYjNDM7ICAgICAgICBdCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDtiN2Y0JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtWZXJpZnkgY29ubnRyYWNrIHJlc2V0IHdoZW4gRVRIIHdyaXRlIGV4dGVuZHMgaW50byBJUCBsYXllciYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7cGVkaXQmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3NjYXB5JiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0O25zUGx1Z2luJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7c2NhcHlQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgICAgIF0KJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAwLAomIzQzOyAgICAgICAgICAgICAgICAxLAomIzQzOyAgICAgICAgICAgICAgICAyLAomIzQzOyAgICAgICAgICAgICAgICAyNTUKJiM0MzsgICAgICAgICAgICBdLAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2Ugb2Zmc2V0IDEyIHUzMiBzZXQgMHgwODAwNDUwMCBwaXBlIGNzdW0gaXA0aCBjb250aW51ZSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtzY2FweSYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtpZmFjZSYjMzQ7OiAmIzM0OyRERVYwJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjb3VudCYjMzQ7OiAxLAomIzQzOyAgICAgICAgICAgICYjMzQ7cGFja2V0JiMzNDs6ICYjMzQ7RXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPSYjMzk7MTAuMC4wLjEzJiMzOTssZHN0PSYjMzk7MTAuMC4wLjIzJiMzOTspL0lDTVAoKSYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7aXB0YWJsZXMtc2F2ZSAtdCByYXcgLWMgfCBncmVwICYjMzk7Y3RzdGF0ZSBJTlZBTElEJiMzOTsmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7XlxcWzE6MjhcXF0mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDsKJiM0MzsgICAgICAgIF0KICAgICB9CiBdCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5CmluZGV4IDUxMWQ2NmMzNmEyYTAuLjE5YjhhMWZkMWM3MTYgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5CkBAIC02MDAsNiAmIzQzOzYwMCwxOCBAQCBkZWYgbXBfYmlucyhhbGx0ZXN0cyk6CiAKICAgICByZXR1cm4gKHNlcmlhbCwgcGFyYWxsZWwpCiAKJiM0MzttcF9wbSA9IE5vbmUKJiM0MzttcF9hcmdzID0gTm9uZQomIzQzOwomIzQzO2RlZiBfX21wX2luaXRfXyhwbSwgYXJncyk6CiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIHdoZW4gZWFjaCB3b3JrZXIgcHJvY2VzcyBzdGFydHMuCiYjNDM7ICAgIEl0IHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MmIzM5O3MgbWVtb3J5IHNwYWNlLgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgZ2xvYmFsIG1wX3BtLCBtcF9hcmdzCiYjNDM7ICAgIG1wX3BtID0gcG0KJiM0MzsgICAgbXBfYXJncyA9IGFyZ3MKJiM0MzsKIGRlZiBfX21wX3J1bm5lcih0ZXN0cyk6CiAgICAgKF8sIHRzcikgPSB0ZXN0X3J1bm5lcihtcF9wbSwgbXBfYXJncywgdGVzdHMpCiAgICAgcmV0dXJuIHRzci5fdGVzdHN1aXRlCkBAIC02MTUsMTQgJiM0Mzs2MjcsMTMgQEAgZGVmIHRlc3RfcnVubmVyX21wKHBtLCBhcmdzLCBhbGx0ZXN0cyk6CiAgICAgcHJpbnQoJiMzNDtFeGVjdXRpbmcge30gdGVzdHMgaW4gcGFyYWxsZWwgYW5kIHt9IGluIHNlcmlhbCYjMzQ7LmZvcm1hdChsZW4ocGFyYWxsZWwpLCBsZW4oc2VyaWFsKSkpCiAgICAgcHJpbnQoJiMzNDtVc2luZyB7fSBiYXRjaGVzIGFuZCB7fSB3b3JrZXJzJiMzNDsuZm9ybWF0KGxlbihiYXRjaGVzKSwgYXJncy5tcCkpCiAKLSAgICAjIFdlIGNhbiYjMzk7dCBwaWNrbGUgdGhlc2Ugb2JqZWN0cyBzbyB3b3JrYXJvdW5kIHRoZW0KLSAgICBnbG9iYWwgbXBfcG0KLSAgICBtcF9wbSA9IHBtCi0KLSAgICBnbG9iYWwgbXBfYXJncwotICAgIG1wX2FyZ3MgPSBhcmdzCi0KLSAgICB3aXRoIFBvb2woYXJncy5tcCkgYXMgcDoKJiM0MzsgICAgIyBVc2UgdGhlICYjMzk7aW5pdGlhbGl6ZXImIzM5OyB0byBwYXNzIHRoZSB1bnBpY2tsZWFibGUvc2hhcmVkIG9iamVjdHMKJiM0MzsgICAgIyB0byBlYWNoIHdvcmtlciBwcm9jZXNzIGV4YWN0bHkgb25jZSB1cG9uIHN0YXJ0dXAuCiYjNDM7ICAgIHdpdGggUG9vbCgKJiM0MzsgICAgICAgIHByb2Nlc3Nlcz1hcmdzLm1wLAomIzQzOyAgICAgICAgaW5pdGlhbGl6ZXI9X19tcF9pbml0X18sCiYjNDM7ICAgICAgICBpbml0YXJncz0ocG0sIGFyZ3MpCiYjNDM7ICAgICkgYXMgcDoKICAgICAgICAgcHJlcyA9IHAubWFwKF9fbXBfcnVubmVyLCBiYXRjaGVzKQogCiAgICAgdHNyID0gVGVzdFN1aXRlUmVwb3J0KCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM5NwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBQYXRjaCBmb3IgTmV0d29yayBTY2hlZHVsaW5nIEFjdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtBaCwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIGBuZXQvc2NoZWQvYWN0X25hdC5jYCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AuJiMzNDsgSW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIGluamVjdGluZyBgbmZfcmVzZXRfY3Qoc2tiKTtgIGludG8gdGhlIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCBmdW5jdGlvbnMsIGJ1dCBvbmx5IGlmIEwzL0w0IGhlYWRlcnMgaGF2ZSBiZWVuIG1vZGlmaWVkLiBUaGlzIHRlbGxzIG1lIHdlJiMzOTtyZSBwb3RlbnRpYWxseSB0YWxraW5nIGFib3V0IGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gaG93IGNvbm5lY3Rpb24gdHJhY2tpbmcgaW50ZXJhY3RzIHdpdGggTkFUIGFuZCBwYWNrZXQgZWRpdGluZyB3aXRoaW4gdGhlIHRyYWZmaWMgY29udHJvbCBmcmFtZXdvcmsuIFRoaXMgaXMgaW1wb3J0YW50IHN0dWZmLCBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5LiBUaGVzZSBhcmUgZmVhdHVyZXMgZXhwb3NlZCB0aHJvdWdoIGB0Y2AsIHNvIHRoaXMgcGF0Y2ggY291bGQgaGF2ZSBzb21lIHByZXR0eSBicm9hZCBpbXBsaWNhdGlvbnMuCgpOZXh0IHN0ZXA6IGxldCYjMzk7cyBkaWcgaW50byBgbmV0L3NjaGVkL2FjdF9uYXQuY2AgYW5kIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgIHRvIGNvbmZpcm0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgbW9kaWZ5aW5nIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCwgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyB0b3VjaGVkIGhlcmUuIFJlYWNoaW5nIHRoZXNlIHZpYSBgdGNgIGNvbW1hbmRzLi4udGhhdCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGJlIGFibGUgdG8gbWFwIHRoZXNlIGNoYW5nZXMgdG8gaG93IHRoZXnigJlyZSBjb25maWd1cmVkLgoKVGltZSB0byBsb29rIHVwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0LCBgbmV0L3NjaGVkL2FjdF9uYXQuY2AgaXMgbGlua2VkIHRvIGBDT05GSUdfTkVUX0FDVF9OQVRgLCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AgaXMsIG5hdHVyYWxseSwgYENPTkZJR19ORVRfQUNUX1BFRElUYC4gTm93IEkgaGF2ZSB0byBnbyBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlnIG9wdGlvbnMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX05FVF9BQ1RfTkFUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MzU4PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjM1OTpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0zNjAtQ09ORklHX05FVF9BQ1RfQlBGPW1cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTM3ND1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzozNzU6Q09ORklHX05FVF9BQ1RfTkFUPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMzc2LUNPTkZJR19ORVRfQUNUX0JQRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MTczPUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzoxNzQ6Q09ORklHX05FVF9BQ1RfTkFUPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTE3NS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9Nzg9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjc5OkNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy04MC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc9NzQ9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjc1OkNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy03Ni1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTIwMT1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjIwMjpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTIwMy1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZz0yMDU9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MjA2OkNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwNy1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnPTIwMj1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjIwMzpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTIwNC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz0yNjc9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MjY4OkNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTI2OS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTQwNz1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjQwODpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTQwOS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTM5Nz1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjM5ODpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTM5OS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oPTQ3PXN0YXRpYyBpbmxpbmUgaW50IHRjX2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0xMDQtI2VuZGlmXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6MTA1OiNpZiBJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX05BVClcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0xMDYtXHRpZiAoYS1cdTAwM2VvcHMtXHUwMDNlYWN0ID09IHRjZl9uYXRfYWN0KVxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0yMDM9c3RhdGljIGlubGluZSB2b2lkIHRjX3dyYXBwZXJfaW5pdCh2b2lkKVxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0yMjgtXHRcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTVBMUykgJiM0MztcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDoyMjk6XHRcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTkFUKSAmIzQzO1xuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTIzMC1cdFx0SVNfQlVJTFRJTihDT05GSUdfTkVUX0FDVF9UVU5ORUxfS0VZKSAmIzQzO1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkVUX0FDVF9TQU1QTEUpXHQmIzQzOz0gYWN0X3NhbXBsZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05FVF9BQ1RfTkFUKVx0JiM0Mzs9IGFjdF9uYXQub1xubmV0L3NjaGVkL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVx0JiM0Mzs9IGFjdF9wZWRpdC5vXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc9ODg9Q09ORklHX05FVF9BQ1RfU0FNUExFPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnOjg5OkNPTkZJR19ORVRfQUNUX05BVD1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy05MC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ2MwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgQ09ORklHX05FVF9BQ1RfUEVESVRgKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgQ09ORklHX05FVF9BQ1RfUEVESVRgIG9wdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHdoYXQgdGhlIGN1cnJlbnQgc3RhdGUgaXMgYW5kIHdoYXQgaXQgY29udHJvbHMuIEkmIzM5O20gYXNzdW1pbmcgdGhpcyByZWxhdGVzIHRvIHRoZSBwYWNrZXQgZWRpdGluZyBhY3Rpb24sIGxpa2VseSB3aXRoaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcmssIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbi4gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGtlcm5lbCBjb25maWcgYW5kIGNyb3NzLXJlZmVyZW5jaW5nIHRoYXQgd2l0aCB0aGUgcmVsZXZhbnQgTmV0ZmlsdGVyIGRvY3VtZW50YXRpb24gb3IgY29kZS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbmFsaXR5IC0gZG9lcyBpdCBwcm92aWRlIGFyYml0cmFyeSBwYWNrZXQgbW9kaWZpY2F0aW9uLCBvciBpcyBpdCBtb3JlIGNvbnN0cmFpbmVkPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGlmIHRoaXMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZD8gU2VjdXJpdHkgaW1wbGljYXRpb25zIGFyZSBpbW1lZGlhdGVseSBhdCB0aGUgZm9yZWZyb250IG9mIG15IG1pbmQsIGFzIHBhY2tldCBtYW5pcHVsYXRpb24gaXMgYSBzZW5zaXRpdmUgYXJlYS4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBhdHRhY2sgc3VyZmFjZSB0aGF0IHRoaXMgb3B0aW9uIG1heSBleHBvc2UsIGlmIGFueS4gSXMgdGhlcmUgYW55IHBhcnRpY3VsYXIgaGFyZHdhcmUgdGhpcyBpcyBvcHRpbWl6ZWQgZm9yPwoKTmV4dCwgSSYjMzk7bGwgY29uc2lkZXIgaXRzIHJvbGUgaW4gdmFyaW91cyBuZXR3b3JrIHNldHVwcy4gSXMgaXQgY29tbW9ubHkgdXNlZCBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cywgb3IgaXMgaXQgbW9yZSBvZiBhIG5pY2hlIGZlYXR1cmU/IFdoYXQgYXJlIHRoZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucz8gRG9lcyBpdCBpbnRlZ3JhdGUgd2VsbCB3aXRoIG90aGVyIE5ldGZpbHRlciBjb21wb25lbnRzLCBsaWtlIGlwdGFibGVzIG9yIG5mdGFibGVzPyBJIHdhbnQgdG8gYXNzZXNzIGlmIGl0JiMzOTtzIGNvbnNpZGVyZWQgYSByZWxpYWJsZSBvcHRpb24uCgpJIGFsc28gd2FudCB0byBrbm93IHdoZXRoZXIgaXQgaGFzIGFueSBrbm93biBpc3N1ZXMgb3IgbGltaXRhdGlvbnMsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgY29uY3VycmVuY3kgb3IgZWRnZSBjYXNlcy4gQXJlIHRoZXJlIGFueSBrbm93biBleHBsb2l0cyBhc3NvY2lhdGVkIHdpdGggaXQsIG9yIGhhcyBpdCBiZWVuIHRoZSBzdWJqZWN0IG9mIGFueSB2dWxuZXJhYmlsaXR5IGRpc2Nsb3N1cmVzPwoKRmluYWxseSwgd2hhdCBhcmUgdGhlIHVzZS1jYXNlcyB3aGVyZSB0aGlzIG9wdGlvbiBpcyBlc3NlbnRpYWwgb3IgaGlnaGx5IGJlbmVmaWNpYWw/IFdoYXQgYXJlIHRoZSBhbHRlcm5hdGl2ZXMsIGFuZCBob3cgZG8gdGhleSBjb21wYXJlIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgYW5kIGZsZXhpYmlsaXR5PyBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBpbmZvcm1hdGlvbiBvbiB0aGUgTGludXggS2VybmVsIE1haWxpbmcgTGlzdCB0aGF0IG1heSBpbmRpY2F0ZSBhbnkgcHJvYmxlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX05FVF9BQ1RfUEVESVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MTc0PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzoxNzU6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMTc2LUNPTkZJR19ORVRfQUNUX1NJTVA9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTc5PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZzo4MDpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy04MS1DT05GSUdfTkVUX0FDVF9TS0JFRElUPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz03NT1DT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6NzY6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctNzctQ09ORklHX05FVF9BQ1RfU0tCRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTIwMj1DT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjIwMzpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMjA0LUNPTkZJR19ORVRfQUNUX1NJTVA9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9MjA2PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjIwNzpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwOC1DT05GSUdfTkVUX0FDVF9TSU1QPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MjAzPUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6MjA0OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0yMDUtQ09ORklHX05FVF9BQ1RfU0lNUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnPTk2PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG5hcmNoL21pcHMvY29uZmlncy9yYjUzMl9kZWZjb25maWc6OTc6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnLTk4LUNPTkZJR19NVEQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MjY4PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjI2OTpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTI3MC1DT05GSUdfTkVUX0FDVF9TSU1QPW1cbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9NDA4PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NDA5OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy00MTAtQ09ORklHX05FVF9BQ1RfU0lNUD1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTM5OD1DT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjM5OTpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNDAwLUNPTkZJR19ORVRfQUNUX1NJTVA9bVxuLS1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9MTM4PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjEzOTpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnLTE0MC1DT05GSUdfRldfTE9BREVSPW1cbi0tXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg9NDc9c3RhdGljIGlubGluZSBpbnQgdGNfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4tLVxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTYwLSNlbmRpZlxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjYxOiNpZiBJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX1BFRElUKVxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTYyLVx0aWYgKGEtXHUwMDNlb3BzLVx1MDAzZWFjdCA9PSB0Y2ZfcGVkaXRfYWN0KVxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0yMDM9c3RhdGljIGlubGluZSB2b2lkIHRjX3dyYXBwZXJfaW5pdCh2b2lkKVxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0yMTctXHRcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTUlSUkVEKSAmIzQzO1xuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjIxODpcdFx0SVNfQlVJTFRJTihDT05GSUdfTkVUX0FDVF9QRURJVCkgJiM0MztcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0yMTktXHRcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfU0tCRURJVCkgJiM0Mztcbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX05FVF9BQ1RfTkFUKVx0JiM0Mzs9IGFjdF9uYXQub1xubmV0L3NjaGVkL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVx0JiM0Mzs9IGFjdF9wZWRpdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX05FVF9BQ1RfU0lNUClcdCYjNDM7PSBhY3Rfc2ltcGxlLm9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTY5PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjcwOkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWctNzEtQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWT1tXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnPTIyPUNPTkZJR19ORVRfQUNUX01QTFM9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnOjIzOkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZy0yNC1DT05GSUdfTkVUX0FDVF9QT0xJQ0U9bVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc9MTU9Q09ORklHX05FVF9BQ1RfQ1NVTT1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnOjE2OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWctMTctQ09ORklHX05FVF9DTFNfQUNUPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZz04OT1DT05GSUdfTkVUX0FDVF9OQVQ9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc6OTA6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWctOTEtQ09ORklHX05FVF9BQ1RfU0lNUD1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUxNwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIE5ldHdvcmsgQWN0aW9uIE1vZHVsZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlc2UgbmV0d29yayBhY3Rpb24gbW9kdWxlcywgc3BlY2lmaWNhbGx5IGBORVRfQUNUX05BVGAgYW5kIGBORVRfQUNUX1BFRElUYC4gSSBrbm93IHRoZXJlIGFyZSBmdW5jdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0g4oCTIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCwgcmVzcGVjdGl2ZWx5LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQsIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2AgdG8gc2VlIGhvdyBgTkVUX0FDVF9OQVRgIGFuZCBgTkVUX0FDVF9QRURJVGAgYXJlIGRlZmluZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgbWlnaHQgaGF2ZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZWlyIGF2YWlsYWJpbGl0eSBhbmQgaG93IHRoZXkgY2FuIGJlIGNvbnRyb2xsZWQgZHVyaW5nIGtlcm5lbCBidWlsZHMsIHdoaWNoIGluIHR1cm4gaW5mb3JtcyBob3cgSSB1c2UgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0FDVF9OQVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NzUyPWNvbmZpZyBORVRfQUNUX1NBTVBMRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTc2My1cbm5ldC9zY2hlZC9LY29uZmlnOjc2NDpjb25maWcgTkVUX0FDVF9OQVRcbm5ldC9zY2hlZC9LY29uZmlnLTc2NS1cdHRyaXN0YXRlIFwmIzM0O1N0YXRlbGVzcyBOQVRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODU0CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQ2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIE5FVF9BQ1RfUEVESVQqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBgTkVUX0FDVF9QRURJVGAgaXMgZGVmaW5lZC4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cyB3aXRoIG5ldHdvcmtpbmcgcmVsYXRlZCBrZXJuZWwgZmVhdHVyZXMsIGlzIHRvIGxvb2sgaW4gdGhlIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgdXN1YWwgaG9tZSBmb3Igc2NoZWR1bGluZyBhbmQgdHJhZmZpYyBjb250cm9sIHJlbGF0ZWQgb3B0aW9ucy4gSSYjMzk7bSBhc3N1bWluZyBpdCBzaG91bGQgYmUgaW4gdGhlcmUsIGJ1dCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmU7IGEgcXVpY2sgY2hlY2sgd2lsbCBrZWVwIG1lIGZyb20gd2FzdGluZyB0aW1lIGlmIGl0JiMzOTtzIGJlZW4gbW92ZWQgZWxzZXdoZXJlIGluIGEgbGF0ZXIga2VybmVsIHZlcnNpb24gb3IgcmVuYW1lZC4gVGltZSB0byBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9BQ1RfUEVESVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTc3My1cbm5ldC9zY2hlZC9LY29uZmlnOjc3NDpjb25maWcgTkVUX0FDVF9QRURJVFxubmV0L3NjaGVkL0tjb25maWctNzc1LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEVkaXRpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTkVUX0FDVF9OQVQgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBndXRzIG9mIHRoZSBuZXR3b3JraW5nIHNjaGVkdWxlciBjb25maWd1cmF0aW9uLiBUaGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBzdXJyb3VuZGluZyBgTkVUX0FDVF9OQVRgLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGFscmVhZHkgaGF2ZSBhIGRlY2VudCBncmFzcCBvZiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIGJ1dCBhIHNwZWNpZmljIGRlcGVuZGVuY3kgY2hlY2sgaXMgYSBnb29kIHByYWN0aWNlIHRvIGVuc3VyZSB0aGUgc3lzdGVtIGlzIGJlaW5nIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgY3J1Y2lhbCBpbnRlcmNvbm5lY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHNjaGVkdWxpbmcgbG9naWMuIFNvLCBgbmV0L3NjaGVkL0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBUaGF0IGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGFuZCByZWxhdGlvbnNoaXBzIHRoYXQgZGVmaW5lIHdoZW4gYE5FVF9BQ1RfTkFUYCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQsIG1vcmUgaW1wb3J0YW50bHksICp3aHkqLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IG90aGVyIHJlbGF0ZWQgZmVhdHVyZXMsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgb3Iga2VybmVsIG1vZHVsZXMgdGhhdCBtaWdodCBoYXZlIGEgZGlyZWN0IGltcGFjdCBvbiB3aGV0aGVyIHRoaXMgc3BlY2lmaWMgYWN0aW9uIGlzIGF2YWlsYWJsZSBhbmQgd29ya2luZyBhcyBpbnRlbmRlZC4gVGhpcyBpcyBhYm91dCBtYWtpbmcgc3VyZSBhbGwgdGhlIHBpZWNlcyBmaXQgdG9nZXRoZXIgc2VhbWxlc3NseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzYwOlx0XG4gNzYxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA3NjI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9zYW1wbGUuXG4gNzYzOlx0XG4gNzY0Olx0Y29uZmlnIE5FVF9BQ1RfTkFUXG4gNzY1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTdGF0ZWxlc3MgTkFUXCYjMzQ7XG4gNzY2Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4gNzY3Olx0XHRoZWxwXG4gNzY4Olx0XHQgIFNheSBZIGhlcmUgdG8gZG8gc3RhdGVsZXNzIE5BVCBvbiBJUHY0IHBhY2tldHMuICBZb3Ugc2hvdWxkIHVzZVxuIDc2OTpcdFx0ICBuZXRmaWx0ZXIgZm9yIE5BVCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuIDc3MDpcdFxuIDc3MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNzcyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhY3RfbmF0LlxuIDc3MzpcdFxuIDc3NDpcdGNvbmZpZyBORVRfQUNUX1BFRElUXG4gNzc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRWRpdGluZ1wmIzM0O1xuIDc3NjpcdFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxuIDc3NzpcdFx0aGVscFxuIDc3ODpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIG1hbmdsZSB0aGUgY29udGVudCBvZiBwYWNrZXRzLlxuIDc3OTpcdFxuIDc4MDpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNzgxOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhY3RfcGVkaXQuXG4gNzgyOlx0XG4gNzgzOlx0Y29uZmlnIE5FVF9BQ1RfU0lNUFxuIDc4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltcGxlIEV4YW1wbGUgKERlYnVnKVwmIzM0O1xuIDc4NTpcdFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxuIDc4NjpcdFx0aGVscFxuIDc4NzpcdFx0ICBTYXkgWSBoZXJlIHRvIGFkZCBhIHNpbXBsZSBhY3Rpb24gZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuXG4gNzg4Olx0XHQgIEl0IGlzIG1lYW50IGFzIGFuIGV4YW1wbGUgYW5kIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuIEl0IHdpbGxcbiA3ODk6XHRcdCAgcHJpbnQgYSBjb25maWd1cmVkIHBvbGljeSBzdHJpbmcgZm9sbG93ZWQgYnkgdGhlIHBhY2tldCBjb3VudFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgzOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgRGVlcCBEaXZlKioKCkFscmlnaHQsIHRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGBORVRfQ0xTX0FDVGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSB6b29tIGluIG9uIGl0cyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmZWF0dXJlIG9yIG1vZHVsZSByZWxpZXMgdXBvbi4gQSBxdWljayBzY2FuIG9mIHRoZSBjb2RlLCBvciBwZXJoYXBzIGV2ZW4gYSBtZW50YWwgbWFwLCBzaG91bGQgcmV2ZWFsIHRoZSBjcnVjaWFsIGxpbmtzLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gYXNzZXNzICp0aG9zZSogZGVwZW5kZW5jaWVzLCBiZWNhdXNlIHRoZSByb290IHByb2JsZW0gaXMgbW9zdCBsaWtlbHkgc3RlbW1pbmcgZnJvbSBhbiB1bmRlcmx5aW5nIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgeWV0IGZ1bGx5IGNvbmZpZ3VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTX0FDVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAxLVxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzAzLVx0Ym9vbCBcJiMzNDtBY3Rpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYE5FVF9DTFNfQUNUYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRfQ0xTX0FDVGAuIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgdGhlIHJpZ2h0IHBsYWNlLCBidXQgYmV0dGVyIHRvIGJlIHN1cmUuIEkmIzM5O20gbG9va2luZyBmb3IgYW55IGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMgbGlrZSBvdGhlciBvcHRpb25zLCBzeW1ib2xzLCBvciBldmVuIG90aGVyIEtjb25maWcgZmlsZXMgdGhhdCBgTkVUX0NMU19BQ1RgIG1pZ2h0IHJlbHkgb24uIFRoaXMgaXMgbGlrZWx5IGEga2V5IGNvbXBvbmVudCBmb3IgdHJhZmZpYyBjbGFzc2lmaWNhdGlvbiBhbmQgYWN0aW9uLCBidXQgYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhbnkgbW9kaWZpY2F0aW9uIG9yIHRyb3VibGVzaG9vdGluZy4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoYXQgb3RoZXIgZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgdGhpcyBpcyBjb25uZWN0ZWQgdG8uIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCBsaWtlbHkgcG9pbnQgbWUgdG8gb3RoZXIgcmVsYXRlZCBvcHRpb25zIHRoYXQgbWF5IGhhdmUgYW4gZWZmZWN0IG9uIHRoaXMgZmVhdHVyZSwgb3Igb3RoZXIgbW9kdWxlcyB0aGF0IGFyZSBjbG9zZWx5IHJlbGF0ZWQuIFRoaXMgd2lsbCBwcm92aWRlIGNvbnRleHQsIGFuZCBoZWxwIGVuc3VyZSBJIGRvbiYjMzk7dCBicmVhayBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjk4Olx0XG4gNjk5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA3MDA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGVtX2lwdC5cbiA3MDE6XHRcbiA3MDI6XHRjb25maWcgTkVUX0NMU19BQ1RcbiA3MDM6XHRcdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xuIDcwNDpcdFx0c2VsZWN0IE5FVF9DTFNcbiA3MDU6XHRcdHNlbGVjdCBORVRfWEdSRVNTXG4gNzA2Olx0XHRoZWxwXG4gNzA3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRyYWZmaWMgY29udHJvbCBhY3Rpb25zLiBBY3Rpb25zXG4gNzA4Olx0XHQgIGdldCBhdHRhY2hlZCB0byBjbGFzc2lmaWVycyBhbmQgYXJlIGludm9rZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsXG4gNzA5Olx0XHQgIGNsYXNzaWZpY2F0aW9uLiBUaGV5IGFyZSB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgY2xhc3NpZmljYXRpb25cbiA3MTA6XHRcdCAgcmVzdWx0LCBpbnN0YW50bHkgZHJvcCBvciByZWRpcmVjdCBwYWNrZXRzLCBldGMuXG4gNzExOlx0XG4gNzEyOlx0XHQgIEEgcmVjZW50IHZlcnNpb24gb2YgdGhlIGlwcm91dGUyIHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gdXNlXG4gNzEzOlx0XHQgIGV4dGVuZGVkIG1hdGNoZXMuXG4gNzE0Olx0XG4gNzE1Olx0Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXG4gNzE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFBvbGljaW5nXCYjMzQ7XG4gNzE3Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjM1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKk5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gYE5FVF9DTFNfQUNUYCBpcyBhY3RpbmcgYXMgYSBCb29sZWFuIHN3aXRjaCwgZGVjaWRpbmcgd2hldGhlciB3ZSBlbmFibGUgYE5FVF9DTFNgIGFuZCBgTkVUX1hHUkVTU2AuIFRoaW5raW5nIGFib3V0IHdoYXQmIzM5O3MgYWN0dWFsbHkgbmVlZGVkIGluIHRoZSBicm9hZGVyIHBpY3R1cmUsIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlIHNlZW0gdG8gYmUgYE5FVF9BQ1RfTkFUYCwgYE5FVF9BQ1RfUEVESVRgLCBhbmQgb2YgY291cnNlLCBgTkVUX0NMU19BQ1RgIGl0c2VsZi4gTXkgZ3V0IHNheXMgd2UmIzM5O2xsIGFsc28gbmVlZCB0byBlbmFibGUgYE5FVF9TQ0hFRGAgdG8gZ2V0IHRoZSBzY2hlZHVsaW5nIGFzcGVjdHMgd29ya2luZy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgaGVhZGluZyBvdmVyIHRvIHRoZSB0b3Agb2YgYG5ldC9zY2hlZC9LY29uZmlnYCB0byBjb25maXJtIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsZXZhbnQgY29udGV4dCB0aGVyZS4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVHJhZmZpYyBjb250cm9sIGNvbmZpZ3VyYXRpb24uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkVUX1NDSEVEXG4gICA3Olx0XHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuICAgODpcdFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xuICAxMTpcdFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXG4gIDEyOlx0XHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXG4gIDEzOlx0XHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xuICAxNDpcdFx0ICBcJiMzNDtmYWlybHlcJiMzNDsgaGF2ZSBiZWVuIHByb3Bvc2VkLlxuICAxNTpcdFxuICAxNjpcdFx0ICBJZiB5b3Ugc2F5IE4gaGVyZSwgeW91IHdpbGwgZ2V0IHRoZSBzdGFuZGFyZCBwYWNrZXQgc2NoZWR1bGVyLCB3aGljaFxuICAxNzpcdFx0ICBpcyBhIEZJRk8gKGZpcnN0IGNvbWUsIGZpcnN0IHNlcnZlZCkuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZVxuICAxODpcdFx0ICBhYmxlIHRvIGNob29zZSBmcm9tIGFtb25nIHNldmVyYWwgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyB3aGljaCBjYW5cbiAgMTk6XHRcdCAgdGhlbiBiZSBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbmV0d29yayBkZXZpY2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3JcbiAgMjA6XHRcdCAgZXhhbXBsZSBpZiBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWFsIHRpbWUgZGV2aWNlcyB0aGF0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjIzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTmV0d29yayBTY2hlZHVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgZ29pbmcgdG8gaGluZ2Ugb24gYE5FVF9TQ0hFRGAuIFRoYXQmIzM5O3MgdGhlIGNvcmUuIFRvIGdldCB0aGlzIHRoaW5nIHdvcmtpbmcsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBORVRfU0NIRURgLCBhbmQgdGhlbiBJJiMzOTtsbCBkZWZpbml0ZWx5IHdhbnQgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfTkFUYCwgYW5kIGBORVRfQUNUX1BFRElUYCB0b28uIFRob3NlIGNvbmZpZ3MgYXJlIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhpcyB0eXBlIG9mIG5ldHdvcmsgdHJhZmZpYyBtYW5hZ2VtZW50LiBUaGUgdHdvIHByaW1hcnkgZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLiBUaGV5JiMzOTtyZSBwcm9iYWJseSB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkFUIGFuZCBwYWNrZXQgZWRpdGluZyBoYXBwZW4uCgpIb2xkIG9uLCBJIHNlZSBgbmZfcmVzZXRfY3Qoc2tiKWAgYmVpbmcgdXNlZC4gVGhhdCB0aHJvd3MgYSByZWQgZmxhZy4gSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgdXNlZCB0byByZXNldCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIHdvbiYjMzk7dCBjYXVzZSBhbnkgY29uZmxpY3RzIGFuZCBuZWVkcyB0byBiZSBzdXBwb3J0ZWQsIHdoYXQgTmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcz8gVGltZSB0byBkb3VibGUgY2hlY2sgdGhlIGluY2x1ZGVzLiBJcyBpdCBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAgb3IgYGluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaGAgdGhhdCBkZWZpbmVzIGl0PyBMZXQgbWUgY2hlY2sgdGhvc2UgZmlsZXMgZGlyZWN0bHksIGFuZCB2ZXJpZnkgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9yZXNldF9jdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9vdnBuL2lvLmM9MzU2PW5ldGRldl90eF90IG92cG5fbmV0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9vdnBuL2lvLmMtMzY2LVx0LyogcmVzZXQgbmV0ZmlsdGVyIHN0YXRlICovXG5kcml2ZXJzL25ldC9vdnBuL2lvLmM6MzY3Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvbmV0L292cG4vaW8uYy0zNjgtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjU2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNTc6XHRuZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNTgtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0zNTA9c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzc2LVx0XHRza2JfZHN0X2Ryb3Aoc2tiKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mzc3Olx0XHRuZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNzgtXHRcdHJldHVybiBza19yZWNlaXZlX3NrYihcdTAwMjZwby1cdTAwM2Vzaywgc2tiLCAwKTtcbi0tXG5kcml2ZXJzL25ldC90dW4uYz0xMDAzPXN0YXRpYyBuZXRkZXZfdHhfdCB0dW5fbmV0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC90dW4uYy0xMDYyLVxuZHJpdmVycy9uZXQvdHVuLmM6MTA2MzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5kcml2ZXJzL25ldC90dW4uYy0xMDY0LVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zMzM2PXN0YXRpYyBuZXRkZXZfdHhfdCBzdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTMzNzMtXHRcdHNrYl9kc3RfZHJvcChza2IpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjMzNzQ6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzM3NS1cdH1cbi0tXG5kcml2ZXJzL25ldC92cmYuYz0zODI9c3RhdGljIHZvaWQgdnJmX25mX3NldF91bnRyYWNrZWQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC92cmYuYy0zODctXG5kcml2ZXJzL25ldC92cmYuYzozODg6c3RhdGljIHZvaWQgdnJmX25mX3Jlc2V0X2N0KHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC92cmYuYy0zODkte1xuZHJpdmVycy9uZXQvdnJmLmMtMzkwLVx0aWYgKHNrYl9nZXRfbmZjdChza2IpID09IElQX0NUX1VOVFJBQ0tFRClcbmRyaXZlcnMvbmV0L3ZyZi5jOjM5MTpcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTM5Mi19XG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9Mzk1PXN0YXRpYyBpbnQgdnJmX2lwNl9sb2NhbF9vdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMzk5LVxuZHJpdmVycy9uZXQvdnJmLmM6NDAwOlx0dnJmX25mX3Jlc2V0X2N0KHNrYik7XG5kcml2ZXJzL25ldC92cmYuYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9NDc1PXN0YXRpYyBpbnQgdnJmX2lwX2xvY2FsX291dChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbi0tXG5kcml2ZXJzL25ldC92cmYuYy00NzktXG5kcml2ZXJzL25ldC92cmYuYzo0ODA6XHR2cmZfbmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTQ4MS1cbi0tXG5kcml2ZXJzL25ldC92cmYuYz01Nzc9c3RhdGljIHZvaWQgdnJmX2ZpbmlzaF9kaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC92cmYuYy01OTUtXG5kcml2ZXJzL25ldC92cmYuYzo1OTY6XHR2cmZfbmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTU5Ny19XG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9NjAxPXN0YXRpYyBpbnQgdnJmX2ZpbmlzaF9vdXRwdXQ2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTYwOS1cbmRyaXZlcnMvbmV0L3ZyZi5jOjYxMDpcdHZyZl9uZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvdnJmLmMtNjExLVxuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jPTc5Nj1zdGF0aWMgaW50IHZyZl9maW5pc2hfb3V0cHV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTgwNC1cbmRyaXZlcnMvbmV0L3ZyZi5jOjgwNTpcdHZyZl9uZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvdnJmLmMtODA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE5MDI9c3RhdGljIGJvb2wgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVfbm9fbmwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTk1NS1cdHNrYl9leHRfcmVzZXQoc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE5NTY6XHRuZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTk1Ny1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXR4LmM9MTI2PW5ldGRldl90eF90IGN2bV9vY3RfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQtdHguYy0zNTAtXHRza2JfZXh0X3Jlc2V0KHNrYik7XG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXR4LmM6MzUxOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQtdHguYy0zNTItXHRza2JfcmVzZXRfcmVkaXJlY3Qoc2tiKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTUxMzM9c3RhdGljIGlubGluZSBib29sIHNrYl9oYXNfZXh0ZW5zaW9ucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKSB7IHJldHVybiBmYWxzZTsgfVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTEzNS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NTEzNjpzdGF0aWMgaW5saW5lIHZvaWQgbmZfcmVzZXRfY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTEzNy17XG4tLVxubmV0L2JhdG1hbi1hZHYvbWVzaC1pbnRlcmZhY2UuYz00MDc9dm9pZCBiYXRhZHZfaW50ZXJmYWNlX3J4KHN0cnVjdCBuZXRfZGV2aWNlICptZXNoX2lmYWNlLFxuLS1cbm5ldC9iYXRtYW4tYWR2L21lc2gtaW50ZXJmYWNlLmMtNDI2LVx0ICovXG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jOjQyNzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jLTQyOC1cbi0tXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jPTU4NT1zdGF0aWMgdW5zaWduZWQgaW50IGJyX25mX2xvY2FsX2luKHZvaWQgKnByaXYsXG4tLVxubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYy01OTUtXHRpZiAocHJvbWlzYykge1xubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYzo1OTY6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTU5Ny1cdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTYwNy1cdGlmIChXQVJOX09OX09OQ0UocmVmY291bnRfcmVhZChcdTAwMjZuZmN0LVx1MDAzZXVzZSkgIT0gMSkpIHtcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6NjA4Olx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYy02MDktXHRcdHJldHVybiBORl9BQ0NFUFQ7XG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTIzOT1zdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjgyLVx0ZGVmYXVsdDpcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzoyODM6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjg0LVx0XHRuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO1xuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0yOTQ9c3RhdGljIHVuc2lnbmVkIGludCBuZl9jdF9icmlkZ2VfaW4odm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzAxLVx0aWYgKHByb21pc2MpIHtcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzozMDI6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzAzLVx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuLS1cbm5ldC9jb3JlL2dyby5jPTY1ND1zdGF0aWMgdm9pZCBuYXBpX3JldXNlX3NrYihzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2NvcmUvZ3JvLmMtNjgyLVx0XHRza2JfZXh0X3Jlc2V0KHNrYik7XG5uZXQvY29yZS9ncm8uYzo2ODM6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvY29yZS9ncm8uYy02ODQtXHRcdHNrYi1cdTAwM2VzbG93X2dybyA9IDA7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTE2OT12b2lkIHNrYl9yZWxlYXNlX2hlYWRfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xMTg3LVx0fVxubmV0L2NvcmUvc2tidWZmLmM6MTE4ODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvY29yZS9za2J1ZmYuYy0xMTg5LVx0c2tiX2V4dF9yZXNldChza2IpO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE0OTU9dm9pZCBuYXBpX3NrYl9mcmVlX3N0b2xlbl9oZWFkKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTQ5Ny1cdGlmICh1bmxpa2VseShza2ItXHUwMDNlc2xvd19ncm8pKSB7XG5uZXQvY29yZS9za2J1ZmYuYzoxNDk4Olx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2NvcmUvc2tidWZmLmMtMTQ5OS1cdFx0c2tiX2RzdF9kcm9wKHNrYik7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9NjI3OD12b2lkIHNrYl9zY3J1Yl9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCB4bmV0KVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTYyODQtXHRza2JfZXh0X3Jlc2V0KHNrYik7XG5uZXQvY29yZS9za2J1ZmYuYzo2Mjg1Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTYyODYtXHRuZl9yZXNldF90cmFjZShza2IpO1xuLS1cbm5ldC9pcHY0L2luZXRfZnJhZ21lbnQuYz00MzM9aW50IGluZXRfZnJhZ19xdWV1ZV9pbnNlcnQoc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMtNDkyLVx0aWYgKG9mZnNldClcbm5ldC9pcHY0L2luZXRfZnJhZ21lbnQuYzo0OTM6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMtNDk0LVxuLS1cbm5ldC9pcHY0L2lwX2lucHV0LmM9MTg5PXZvaWQgaXBfcHJvdG9jb2xfZGVsaXZlcl9yY3Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcHJvdG9jb2wpXG4tLVxubmV0L2lwdjQvaXBfaW5wdXQuYy0yMDQtXHRcdFx0fVxubmV0L2lwdjQvaXBfaW5wdXQuYzoyMDU6XHRcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY0L2lwX2lucHV0LmMtMjA2LVx0XHR9XG4tLVxubmV0L2lwdjQvaXBtci5jPTE4Mzg9c3RhdGljIHZvaWQgaXBfZW5jYXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L2lwbXIuYy0xODYxLVx0bWVtc2V0KFx1MDAyNihJUENCKHNrYiktXHUwMDNlb3B0KSwgMCwgc2l6ZW9mKElQQ0Ioc2tiKS1cdTAwM2VvcHQpKTtcbm5ldC9pcHY0L2lwbXIuYzoxODYyOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY0L2lwbXIuYy0xODYzLX1cbi0tXG5uZXQvaXB2NC9pcG1yLmM9MjE4OT1pbnQgaXBfbXJfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pcG1yLmMtMjIzOC1cdFx0XHRpZiAobXJvdXRlX3NrKSB7XG5uZXQvaXB2NC9pcG1yLmM6MjIzOTpcdFx0XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2NC9pcG1yLmMtMjI0MC1cdFx0XHRcdHJhd19yY3YobXJvdXRlX3NrLCBza2IpO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9kdXBfaXB2NC5jPTUxPXZvaWQgbmZfZHVwX2lwdjQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgaG9va251bSxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYy02OS1cdC8qIEF2b2lkIGNvdW50aW5nIGNsb25lZCBwYWNrZXRzIHRvd2FyZHMgdGhlIG9yaWdpbmFsIGNvbm5lY3Rpb24uICovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYzo3MDpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYy03MS1cdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XG4tLVxubmV0L2lwdjQvcmF3LmM9MzE4PWludCByYXdfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9yYXcuYy0zMjQtXHR9XG5uZXQvaXB2NC9yYXcuYzozMjU6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2lwdjQvcmF3LmMtMzI2LVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MjA3MD1pbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE4Mi1cdFx0fVxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMTgzOlx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0yMTg0LVx0XHRpZiAobnNrID09IHNrKSB7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMjIzLVxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMjI0Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjIyNS1cbi0tXG5uZXQvaXB2NC91ZHAuYz0yMzQ5PXN0YXRpYyBpbnQgdWRwX3F1ZXVlX3Jjdl9vbmVfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC91ZHAuYy0yMzYxLVx0fVxubmV0L2lwdjQvdWRwLmM6MjM2MjpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2NC91ZHAuYy0yMzYzLVxuLS1cbm5ldC9pcHY0L3VkcC5jPTI1ODg9aW50IHVkcF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC91ZHAuYy0yNjU0LVx0XHRnb3RvIGRyb3A7XG5uZXQvaXB2NC91ZHAuYzoyNjU1Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY0L3VkcC5jLTI2NTYtXG4tLVxubmV0L2lwdjYvaXA2X2lucHV0LmM9NDAzPXZvaWQgaXA2X3Byb3RvY29sX2RlbGl2ZXJfcmN1KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsXG4tLVxubmV0L2lwdjYvaXA2X2lucHV0LmMtNDc1LVx0XHRcdH1cbm5ldC9pcHY2L2lwNl9pbnB1dC5jOjQ3NjpcdFx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2lwdjYvaXA2X2lucHV0LmMtNDc3LVx0XHR9XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX2R1cF9pcHY2LmM9NDc9dm9pZCBuZl9kdXBfaXB2NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBob29rbnVtLFxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9kdXBfaXB2Ni5jLTU3LSNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9DT05OVFJBQ0spXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZHVwX2lwdjYuYzo1ODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZHVwX2lwdjYuYy01OS1cdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XG4tLVxubmV0L2lwdjYvcmF3LmM9Mzg4PWludCByYXd2Nl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3Jhdy5jLTM5Ny1cdH1cbm5ldC9pcHY2L3Jhdy5jOjM5ODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni9yYXcuYy0zOTktXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTM5Nj1zdGF0aWMgaW50IHNlZzZfZG9fc3JoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkc3RfZW50cnkgKmNhY2hlX2RzdClcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDY5LVx0c2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6NDcwOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy00NzEtXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTkyOT1zdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHg2KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTk0Mi1cdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjk0MzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtOTQ0LVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz05ODI9c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R4NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy05OTItXHRza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCBzaXplb2Yoc3RydWN0IGlwaGRyKSk7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6OTkzOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy05OTQtXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTExMzE9c3RhdGljIHN0cnVjdCBza19idWZmICplbmRfZHRfdnJmX2NvcmUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE2Ny1cdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIGhkcmxlbik7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTE2ODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE2OS1cbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTE3MzA9SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHRjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4MzgtXHRcdH1cbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTgzOTpcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTg0MC1cdFx0aWYgKG5zayA9PSBzaykge1xuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTg3OS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTg4MDpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4ODEtXG4tLVxubmV0L2lwdjYvdWRwLmM9ODA2PXN0YXRpYyBpbnQgdWRwdjZfcXVldWVfcmN2X29uZV9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3VkcC5jLTgxNS1cdH1cbm5ldC9pcHY2L3VkcC5jOjgxNjpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni91ZHAuYy04MTctXG4tLVxubmV0L2lwdjYvdWRwLmM9MTA2Nz1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdWRwdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdWRwLmMtMTE1Mi1cdFx0Z290byBkaXNjYXJkO1xubmV0L2lwdjYvdWRwLmM6MTE1MzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni91ZHAuYy0xMTU0LVxuLS1cbm5ldC9sMnRwL2wydHBfY29yZS5jPTEyMjU9c3RhdGljIGludCBsMnRwX3htaXRfY29yZShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgKmxlbilcbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjU0LVxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTI1NTpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjU2LVxuLS1cbm5ldC9sMnRwL2wydHBfZXRoLmM9MTA3PXN0YXRpYyB2b2lkIGwydHBfZXRoX2Rldl9yZWN2KHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIGludCBkYXRhX2xlbilcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTEyMy1cdHNrYl9kc3RfZHJvcChza2IpO1xubmV0L2wydHAvbDJ0cF9ldGguYzoxMjQ6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2wydHAvbDJ0cF9ldGguYy0xMjUtXG4tLVxubmV0L2wydHAvbDJ0cF9pcC5jPTEyNT1zdGF0aWMgaW50IGwydHBfaXBfcmVjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9sMnRwL2wydHBfaXAuYy0xOTctXG5uZXQvbDJ0cC9sMnRwX2lwLmM6MTk4Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9sMnRwL2wydHBfaXAuYy0xOTktXG4tLVxubmV0L2wydHAvbDJ0cF9pcDYuYz0xMzU9c3RhdGljIGludCBsMnRwX2lwNl9yZWN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2wydHAvbDJ0cF9pcDYuYy0yMDctXG5uZXQvbDJ0cC9sMnRwX2lwNi5jOjIwODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvbDJ0cC9sMnRwX2lwNi5jLTIwOS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTYzMz1zdGF0aWMgaW5saW5lIGludCBpcF92c190dW5uZWxfeG1pdF9wcmVwYXJlKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy02NDEtXHRpZiAocmV0ID09IE5GX0FDQ0VQVCkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzo2NDI6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTY0My1cdFx0c2tiX2ZvcndhcmRfY3N1bShza2IpO1xuLS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYz0xODY9c3RhdGljIGludCBpbnRlcm5hbF9kZXZfcmVjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYy0xOTYtXHRza2JfZHN0X2Ryb3Aoc2tiKTtcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzoxOTc6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTE5OC1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE4Njk9c3RhdGljIGludCBwYWNrZXRfcmN2X3Nwa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5MDYtXHQvKiBkcm9wIGNvbm50cmFjayByZWZlcmVuY2UgKi9cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTkwNzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5MDgtXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMTMzPXN0YXRpYyBpbnQgcGFja2V0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjIxOS1cdC8qIGRyb3AgY29ubnRyYWNrIHJlZmVyZW5jZSAqL1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMjIwOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjIyMS1cbi0tXG5uZXQvc2NoZWQvYWN0X21pcnJlZC5jPTI1ND1zdGF0aWMgaW50IHRjZl9taXJyZWRfdG9fZGV2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y2ZfbWlycmVkICptLFxuLS1cbm5ldC9zY2hlZC9hY3RfbWlycmVkLmMtMzAwLVx0LyogQWxsIG1pcnJlZC9yZWRpcmVjdGVkIHNrYnMgc2hvdWxkIGNsZWFyIHByZXZpb3VzIGN0IGluZm8gKi9cbm5ldC9zY2hlZC9hY3RfbWlycmVkLmM6MzAxOlx0bmZfcmVzZXRfY3Qoc2tiX3RvX3NlbmQpO1xubmV0L3NjaGVkL2FjdF9taXJyZWQuYy0zMDItXHRpZiAod2FudF9pbmdyZXNzIFx1MDAyNlx1MDAyNiAhYXRfaW5ncmVzcykgLyogZHJvcCBkc3QgZm9yIGVncmVzcyAtXHUwMDNlIGluZ3Jlc3MgKi9cbi0tXG5uZXQvc2NoZWQvYWN0X25hdC5jPTExNT1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX25hdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvYWN0X25hdC5jLTI1OS1vdXQ6XG5uZXQvc2NoZWQvYWN0X25hdC5jOjI2MDpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvc2NoZWQvYWN0X25hdC5jLTI2MS1cdHJldHVybiBhY3Rpb247XG4tLVxubmV0L3NjaGVkL2FjdF9wZWRpdC5jPTM4MD1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy01MTEtXHRpZiAobDNfbDRfY2hhbmdlZClcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYzo1MTI6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtNTEzLVxuLS1cbm5ldC9zY3RwL2lucHV0LmM9ODg9aW50IHNjdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjdHAvaW5wdXQuYy0xOTAtXHRcdGdvdG8gZGlzY2FyZF9yZWxlYXNlO1xubmV0L3NjdHAvaW5wdXQuYzoxOTE6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L3NjdHAvaW5wdXQuYy0xOTItXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTQ2Nj1pbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTczNi1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3Mzc6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L3hmcm0veGZybV9pbnB1dC5jLTczOC1cbi0tXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM9MjkzPXN0YXRpYyB2b2lkIHhmcm1pX3NjcnViX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIHhuZXQpXG4tLVxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTI5OS1cdHNrYl9kc3RfZHJvcChza2IpO1xubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jOjMwMDpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmMtMzAxLVx0bmZfcmVzZXRfdHJhY2Uoc2tiKTtcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jPTU5Mz1pbnQgeGZybV9vdXRwdXRfcmVzdW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTU5Ny1cdHdoaWxlIChsaWtlbHkoKGVyciA9IHhmcm1fb3V0cHV0X29uZShza2IsIGVycikpID09IDApKSB7XG5uZXQveGZybS94ZnJtX291dHB1dC5jOjU5ODpcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTk5LVxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIyPXN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjM1LVx0c2tiX2RzdF9zZXQoc2tiLCBkc3QpO1xubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MzY6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MzctXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODkwPXN0YXRpYyB2b2lkIHhmcm1fcG9saWN5X3F1ZXVlX3Byb2Nlc3Moc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTU5LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyOTYwOlx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTYxLVx0XHRza2JfZHN0X2Ryb3Aoc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3MDQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5mX3Jlc2V0X2N0YCwgd2hpY2ggSSBzZWUgaXMgZGVmaW5lZCBhcyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gd2l0aGluIGBpbmNsdWRlL2xpbnV4L3NrYnVmZi5oYC4gR29vZCwgc28gaXQmIzM5O3MgYSBzaW1wbGUgZnVuY3Rpb24gdG8gcmVzZXQgY29ubmVjdGlvbiB0cmFja2luZyBpbmZvcm1hdGlvbi4gSXQmIzM5O3Mgbm90IGNvbmRpdGlvbmFsIG9uIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIEhvd2V2ZXIsIGl0IHNlZW1zIHRoaXMgaXMgYmVpbmcgdXNlZCBpbiB0aGUgY29udGV4dCBvZiB0cmFmZmljIGNvbnRyb2wsIGdpdmVuIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLgoKTXkgaW1tZWRpYXRlIGZvY3VzLCB0aGVyZWZvcmUsIHNoaWZ0cyB0byB0aG9zZSB0d28gZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYG5ldC9zY2hlZC9hY3RfbmF0LmNgIGFuZCBgbmV0L3NjaGVkL2FjdF9wZWRpdC5jYCB0byB1bmRlcnN0YW5kIGhvdyBgbmZfcmVzZXRfY3RgIGlzIGJlaW5nIGluY29ycG9yYXRlZCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEZyb20gd2hhdCBJIGNhbiBzZWUgc28gZmFyLCB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfTkFUYCwgYW5kIGBORVRfQUNUX1BFRElUYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MgaW4gdGhpcyBhcmVhLiBTcGVjaWZpY2FsbHksIGBORVRfQUNUX05BVGAgYW5kIGBORVRfQUNUX1BFRElUYCBhcmUgZGVwZW5kZW50IG9uIGBORVRfQ0xTX0FDVGAsIHdoaWNoLCBpbiB0dXJuLCBkZXBlbmRzIG9uIGBORVRfU0NIRURgLiBTbyB3ZSBoYXZlIGEgY2xlYXIgZGVwZW5kZW5jeSBjaGFpbiBoZXJlOiBgTkVUX1NDSEVEYCAtJmd0OyBgTkVUX0NMU19BQ1RgIC0mZ3Q7IChgTkVUX0FDVF9OQVRgLCBgTkVUX0FDVF9QRURJVGApLiBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhlIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZmlsZSBhZ2FpbiB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBORVRfU0NIRUQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM4MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSBwcmV0dHkgc3VyZSBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBsb29raW5nIGF0LiBSaWdodCwgY29uZmlybWVkLiBOb3csIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFsbCBzZXQgdXAsIHRoZSBjb3JlIGNvbmZpZ3MgSSYjMzk7bSBlbmFibGluZyBoZXJlIGFyZSBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfTkFUYCwgYW5kIGBORVRfQUNUX1BFRElUYC4gVGhvc2Ugc2hvdWxkIGdpdmUgbWUgd2hhdCBJIG5lZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYE5FVF9BQ1RfTkFUYCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgdGhhdCBJJiMzOTttIG92ZXJsb29raW5nLiBObyBwb2ludCBpbiBtYWtpbmcgYXNzdW1wdGlvbnMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhpcyBsZXZlbCBvZiBjb25maWd1cmF0aW9uLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NjA6XHRcbiA3NjE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDc2MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X3NhbXBsZS5cbiA3NjM6XHRcbiA3NjQ6XHRjb25maWcgTkVUX0FDVF9OQVRcbiA3NjU6XHRcdHRyaXN0YXRlIFwmIzM0O1N0YXRlbGVzcyBOQVRcJiMzNDtcbiA3NjY6XHRcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcbiA3Njc6XHRcdGhlbHBcbiA3Njg6XHRcdCAgU2F5IFkgaGVyZSB0byBkbyBzdGF0ZWxlc3MgTkFUIG9uIElQdjQgcGFja2V0cy4gIFlvdSBzaG91bGQgdXNlXG4gNzY5Olx0XHQgIG5ldGZpbHRlciBmb3IgTkFUIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuXG4gNzcwOlx0XG4gNzcxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA3NzI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9uYXQuXG4gNzczOlx0XG4gNzc0Olx0Y29uZmlnIE5FVF9BQ1RfUEVESVRcbiA3NzU6XHRcdHRyaXN0YXRlIFwmIzM0O1BhY2tldCBFZGl0aW5nXCYjMzQ7XG4gNzc2Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4gNzc3Olx0XHRoZWxwXG4gNzc4Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gbWFuZ2xlIHRoZSBjb250ZW50IG9mIHBhY2tldHMuXG4gNzc5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTIxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIENvcmUgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGVyZSBhcmUgbm8gaGlkZGVuIGRlcGVuZGVuY2llcyBoZXJlLCB0aGF0JiMzOTtzIGdvb2QuIE15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggZG9jdW1lbnRhdGlvbiBjbGVhcmx5IGluZGljYXRlcyB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAuIFRoZXJlZm9yZSwgbXkgYEZvY3VzU3ltYm9sc2AgdmFyaWFibGUsIG9yIHdoYXRldmVyIGVxdWl2YWxlbnQgSSYjMzk7bSB1c2luZywgbmVlZHMgdG8gYmUgc2V0IHRvIHRob3NlIHR3byBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5LiBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAuIE5vdywgSSBqdXN0IG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlc2UgYXJlIGV4cG9ydGVkIHN5bWJvbHMgb3IgZGVmaW5lZCBhcyBzdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsIG1vZHVsZS4gSSBuZWVkIHRvIGtub3cgdGhlIHNjb3BlIG9mIHRoZWlyIHVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNmX25hdF9hY3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oPTM2PVRDX0lORElSRUNUX0FDVElPTl9ERUNMQVJFKHRjZl9tcGxzX2FjdCk7XG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6Mzc6VENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX25hdF9hY3QpO1xuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTM4LVRDX0lORElSRUNUX0FDVElPTl9ERUNMQVJFKHRjZl9wZWRpdF9hY3QpO1xuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD00Nz1zdGF0aWMgaW5saW5lIGludCB0Y19hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbi0tXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMTA1LSNpZiBJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX05BVClcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDoxMDY6XHRpZiAoYS1cdTAwM2VvcHMtXHUwMDNlYWN0ID09IHRjZl9uYXRfYWN0KVxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjEwNzpcdFx0cmV0dXJuIHRjZl9uYXRfYWN0KHNrYiwgYSwgcmVzKTtcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0xMDgtI2VuZGlmXG4tLVxubmV0L3NjaGVkL2FjdF9uYXQuYz0zNT1zdGF0aWMgaW50IHRjZl9uYXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IG5sYXR0ciAqZXN0LFxuLS1cbm5ldC9zY2hlZC9hY3RfbmF0LmMtMTE0LVxubmV0L3NjaGVkL2FjdF9uYXQuYzoxMTU6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9uYXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvc2NoZWQvYWN0X25hdC5jLTExNi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbi0tXG5uZXQvc2NoZWQvYWN0X25hdC5jPTMxNz1zdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X25hdF9vcHMgPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9uYXQuYy0zMjAtXHQub3duZXJcdFx0PVx0VEhJU19NT0RVTEUsXG5uZXQvc2NoZWQvYWN0X25hdC5jOjMyMTpcdC5hY3RcdFx0PVx0dGNmX25hdF9hY3QsXG5uZXQvc2NoZWQvYWN0X25hdC5jLTMyMi1cdC5kdW1wXHRcdD1cdHRjZl9uYXRfZHVtcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2NjQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgZm9ybWF0dGVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFuYWx5emluZyBWYXJpYWJsZSBTY29wZSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGVzZSB2YXJpYWJsZXMsIHNwZWNpZmljYWxseSBgVENfSU5ESVJFQ1RfU0NPUEUgaW50YCB0eXBlcy4gVGhhdCBtZWFucyB0aGVzZSBpbnRlZ2VycyBhcmVuJiMzOTt0IHN0YXRpYzsgdGhleSBoYXZlIHNvbWUgc29ydCBvZiBkeW5hbWljIG9yIGluZGlyZWN0IHNjb3BlLiBJdCYjMzk7cyBhIGNsdWUsIHBvdGVudGlhbGx5LCBhYm91dCBob3cgdGhleSYjMzk7cmUgdXNlZCBhbmQgaG93IHRoZWlyIHZhbHVlcyBhcmUgbWFuYWdlZCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyIGluIHRoZSBvdmVyYWxsIGNvZGUgZmxvdy4KCk5vdywgYHRjZl9wZWRpdF9hY3RgIGlzIGFsc28gZGVjbGFyZWQgd2l0aCB0aGUgc2FtZSBpbmRpcmVjdCBzY29wZS4gVGhpcyBtZWFucyBpdCBoYXMgc2ltaWxhciBjaGFyYWN0ZXJpc3RpY3MgaW4gdGVybXMgb2YgbGlmZXRpbWUgYW5kIGFjY2Vzc2liaWxpdHkuIEdpdmVuIHRoYXQgYm90aCBgVENfSU5ESVJFQ1RfU0NPUEUgaW50YCBhbmQgYHRjZl9wZWRpdF9hY3RgIHNoYXJlIHRoZSBzYW1lIHByb3BlcnRpZXMsIGEgZGVlcGVyIGxvb2sgaW50byBgdGNmX3BlZGl0X2FjdGAgaXMgcHJvYmFibHkgd2FycmFudGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGhvdyBpdHMgdmFsdWUgaXMgc2V0IGFuZCB1c2VkIGluIHJlbGF0aW9uIHRvIG90aGVyIHBpZWNlcyBvZiB0aGUgY29kZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfcGVkaXRfYWN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0zNz1UQ19JTkRJUkVDVF9BQ1RJT05fREVDTEFSRSh0Y2ZfbmF0X2FjdCk7XG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6Mzg6VENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX3BlZGl0X2FjdCk7XG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMzktVENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX3BvbGljZV9hY3QpO1xuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD00Nz1zdGF0aWMgaW5saW5lIGludCB0Y19hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbi0tXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtNjEtI2lmIElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfUEVESVQpXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6NjI6XHRpZiAoYS1cdTAwM2VvcHMtXHUwMDNlYWN0ID09IHRjZl9wZWRpdF9hY3QpXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6NjM6XHRcdHJldHVybiB0Y2ZfcGVkaXRfYWN0KHNrYiwgYSwgcmVzKTtcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC02NC0jZW5kaWZcbi0tXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmM9MzUwPXN0YXRpYyBpbnQgcGVkaXRfc2tiX2hkcl9vZmZzZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtMzc5LVxubmV0L3NjaGVkL2FjdF9wZWRpdC5jOjM4MDpUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3NjaGVkL2FjdF9wZWRpdC5jLTM4MS1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbm5ldC9zY2hlZC9hY3RfcGVkaXQuYz02NDg9c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9wZWRpdF9vcHMgPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9wZWRpdC5jLTY1MS1cdC5vd25lclx0XHQ9XHRUSElTX01PRFVMRSxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYzo2NTI6XHQuYWN0XHRcdD1cdHRjZl9wZWRpdF9hY3QsXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtNjUzLVx0LnN0YXRzX3VwZGF0ZVx0PVx0dGNmX3BlZGl0X3N0YXRzX3VwZGF0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NDcKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBqdXN0IGFuYWx5emVkIHRoaXMgcGF0Y2guIEZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGUgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSAqZnVuY3Rpb25hbCogYW5kLCBpbXBvcnRhbnRseSwgKnJlYWNoYWJsZSouIFRoZSB2ZXJkaWN0IGlzIGNsZWFyOiBXb3J0aEZ1enppbmc9dHJ1ZS4KClNwZWNpZmljYWxseSwgd2UmIzM5O3JlIGxvb2tpbmcgYXQgY2hhbmdlcyBpbnZvbHZpbmcgdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIC0gTkFUIGFuZCBwZWRpdCAtIGFzIHRoZSBjb25maWdzIGBORVRfU0NIRURgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9OQVRgLCBhbmQgYE5FVF9BQ1RfUEVESVRgIGluZGljYXRlLiBUaGUga2V5IHN5bWJvbHMgdGhhdCBjYXB0dXJlIG15IGF0dGVudGlvbiBhcmUgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIGFkZGluZyBgbmZfcmVzZXRfY3Qoc2tiKWAgdG8gdGhlc2UgYWN0aW9ucyB3aGVuIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IG9wZXJhdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIE5BVCBhbmQgcGVkaXQgYWN0aW9ucy4gQW5kLCBhcyB3ZSBrbm93LCBib3RoIE5BVCBhbmQgcGVkaXQgYXJlIHRyaWdnZXJlZCB0aHJvdWdoIHRyYWZmaWMgY29udHJvbCAodGMpIGNvbW1hbmRzLCBtZWFuaW5nIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVmaW5pdGVseSBhY2Nlc3NpYmxlLiBUaGlzIGlzIGEgcGVyZmVjdCBzY2VuYXJpbyBmb3IgaW5qZWN0aW5nIGNyYWZ0ZWQgcGFja2V0cyB0byB0cmlnZ2VyIHRoaXMgbW9kaWZpZWQgYmVoYXZpb3IgYW5kIGRpc2NvdmVyIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpMZXQmIzM5O3MgbG9nIHRoaXMgY2hhbmdlIGFzIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfTkFUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfbmF0X2FjdCYjMzQ7LAogICAgJiMzNDt0Y2ZfcGVkaXRfYWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCB3aGVuIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KSB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSB0cmFmZmljIGNvbnRyb2wgKHRjKSBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfTkFUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfbmF0X2FjdCYjMzQ7LAogICAgJiMzNDt0Y2ZfcGVkaXRfYWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCB3aGVuIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KSB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSB0cmFmZmljIGNvbnRyb2wgKHRjKSBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBjb25udHJhY2sgc3RhdGUgdHJhY2tpbmcgd2hlbiBwYWNrZXRzIGFyZSBtb2RpZmllZCBieSB0YyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KS4gSXQgZG9lcyBzbyBieSBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byBjbGVhciB0aGUgY29ubnRyYWNrIHN0YXRlIGlmIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcGFja2V0IG1ldGFkYXRhIChza2ItXHUwMDNlbmZjdCkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gc2tiIG1hbmlwdWxhdGlvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTljZmQ3Njg4ZGNkMzU0NDI4ZDVjMDNjMzlhMWFkMDJiYjMxYWFmNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDE5IDIxOjA3OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmMKaW5kZXggYWJiMzMyZGVlODM2ZC4uMGMzZDNiODlkMzQ5OSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9uYXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X25hdC5jCkBAIC0yNTcsNiAmIzQzOzI1Nyw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfbmF0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCX0KIAogb3V0OgomIzQzOwluZl9yZXNldF9jdChza2IpOwogCXJldHVybiBhY3Rpb247CiAKIGRyb3A6CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmMKaW5kZXggZDRkNDdhOTkyMWY0NS4uYjA3OTI1N2MyYjdiNiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwpAQCAtMzg2LDYgJiM0MzszODYsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXN0cnVjdCB0Y2ZfcGVkaXQgKnAgPSB0b19wZWRpdChhKTsKIAlzdHJ1Y3QgdGNmX3BlZGl0X2tleV9leCAqdGtleV9leDsKIAlzdHJ1Y3QgdGNmX3BlZGl0X3Bhcm1zICpwYXJtczsKJiM0MzsJYm9vbCBsM19sNF9jaGFuZ2VkID0gZmFsc2U7CiAJc3RydWN0IHRjX3BlZGl0X2tleSAqdGtleTsKIAlpbnQgaTsKIApAQCAtMzk4LDcgJiM0MzszOTksNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXRrZXlfZXggPSBwYXJtcy0mZ3Q7dGNmcF9rZXlzX2V4OwogCiAJZm9yIChpID0gcGFybXMtJmd0O3RjZnBfbmtleXM7IGkgJmd0OyAwOyBpLS0sIHRrZXkmIzQzOyYjNDM7KSB7Ci0JCWludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbjsKJiM0MzsJCWludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbiwgbndfb2Zmc2V0OwogCQlpbnQgb2Zmc2V0ID0gdGtleS0mZ3Q7b2ZmOwogCQlpbnQgaG9mZnNldCA9IDA7CiAJCXUzMiBjdXJfdmFsLCB2YWw7CkBAIC00MTgsNiAmIzQzOzQxOSw4IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJCQlnb3RvIGJhZDsKIAkJfQogCiYjNDM7CQlud19vZmZzZXQgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTsKJiM0MzsKIAkJaWYgKHRrZXktJmd0O29mZm1hc2spIHsKIAkJCXU4ICpkLCBfZDsKIAkJCWludCBhdF9vZmZzZXQ7CkBAIC00ODUsNiAmIzQzOzQ4OCwxOSBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQl9CiAKIAkJcHV0X3VuYWxpZ25lZCgoY3VyX3ZhbCAmYW1wOyB0a2V5LSZndDttYXNrKSBeIHZhbCwgcHRyKTsKJiM0MzsKJiM0MzsJCS8qIFRyYWNrIGlmIEwzIG9yIEw0IGhlYWRlcnMgd2VyZSBtb2RpZmllZDoKJiM0MzsJCSAqIC0gRGlyZWN0IEwzL0w0IGhlYWRlciB0eXBlcwomIzQzOwkJICogLSBFVEggaGVhZGVyIHR5cGUgd2l0aCBvZmZzZXQvbGVuZ3RoIHJlYWNoaW5nIGludG8gTDMvTDQKJiM0MzsJCSAqLwomIzQzOwkJaWYgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfTkVUV09SSyB8fAomIzQzOwkJICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfSVA0IHx8CiYjNDM7CQkgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDYgfHwKJiM0MzsJCSAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1RDUCB8fAomIzQzOwkJICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfVURQIHx8CiYjNDM7CQkgICAgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfRVRIICZhbXA7JmFtcDsKJiM0MzsJCSAgICAgd3JpdGVfb2Zmc2V0ICYjNDM7IChpbnQpc2l6ZW9mKCpwdHIpICZndDsgbndfb2Zmc2V0KSkKJiM0MzsJCQlsM19sNF9jaGFuZ2VkID0gdHJ1ZTsKIAl9CiAKIAlnb3RvIGRvbmU7CkBAIC00OTIsNiAmIzQzOzUwOCw5IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiBiYWQ6CiAJdGNmX2FjdGlvbl9pbmNfb3ZlcmxpbWl0X3FzdGF0cygmYW1wO3AtJmd0O2NvbW1vbik7CiBkb25lOgomIzQzOwlpZiAobDNfbDRfY2hhbmdlZCkKJiM0MzsJCW5mX3Jlc2V0X2N0KHNrYik7CiYjNDM7CiAJcmV0dXJuIHBhcm1zLSZndDthY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24KaW5kZXggOGFiNDhkZWY4OWI2YS4uMThhNzczNzQ4MzU4MCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24KQEAgLTc0Miw1ICYjNDM7NzQyLDE3MyBAQAogICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgY2xzYWN0JiMzNDsKICAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7YzJhOSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBwZWRpdCBtb2RpZmllcyBJUCBwcm90b2NvbCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7cGVkaXQmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3NjYXB5JiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0O25zUGx1Z2luJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7c2NhcHlQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgICAgIF0KJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAwLAomIzQzOyAgICAgICAgICAgICAgICAxLAomIzQzOyAgICAgICAgICAgICAgICAyLAomIzQzOyAgICAgICAgICAgICAgICAyNTUKJiM0MzsgICAgICAgICAgICBdLAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtcCBpY21wIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBpcCBwcm90b2NvbCBzZXQgMSBwaXBlIGFjdGlvbiBjc3VtIGlwNGggY29udGludWUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7c2NhcHkmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7aWZhY2UmIzM0OzogJiMzNDskREVWMCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y291bnQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O3BhY2tldCYjMzQ7OiAmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMCYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMCYjMzk7LHByb3RvPTYpL1RDUChzcG9ydD0xMjM0LGRwb3J0PTgwLGZsYWdzPSYjMzk7UyYjMzk7KSYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7aXB0YWJsZXMtc2F2ZSAtYyAtdCByYXcgfCBncmVwICYjMzk7Y3RzdGF0ZSBJTlZBTElEJiMzOTsmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7XlxcWzE6NDBcXF0mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDsKJiM0MzsgICAgICAgIF0KJiM0MzsgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2QzYjgmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O1ZlcmlmeSBjb25udHJhY2sgcmVzZXQgYWZ0ZXIgVENQIHBvcnQgbW9kaWZpY2F0aW9uJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2N0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtwZWRpdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7c2NhcHkmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7bnNQbHVnaW4mIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtzY2FweVBsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICAgICAgXQomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgIFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIDAsCiYjNDM7ICAgICAgICAgICAgICAgIDEsCiYjNDM7ICAgICAgICAgICAgICAgIDIsCiYjNDM7ICAgICAgICAgICAgICAgIDI1NQomIzQzOyAgICAgICAgICAgIF0sCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIHRjcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGlwX3Byb3RvIHRjcCBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIHRjcCBzcG9ydCBzZXQgOTk5OSBwaXBlJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3NjYXB5JiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O2lmYWNlJiMzNDs6ICYjMzQ7JERFVjAmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2NvdW50JiMzNDs6IDEsCiYjNDM7ICAgICAgICAgICAgJiMzNDtwYWNrZXQmIzM0OzogJiMzNDtFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JiMzOTsxMC4wLjAuMTAmIzM5Oyxkc3Q9JiMzOTsxMC4wLjAuMjAmIzM5OykvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9JiMzOTtTJiMzOTspJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIElOVkFMSUQmIzM5OyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDteXFxbMTo0MFxcXSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7YTFiMiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IGNvbm50cmFjayBOT1QgcmVzZXQgd2hlbiBwZWRpdCBtb2RpZmllcyBvbmx5IE1BQyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7cGVkaXQmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3NjYXB5JiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0O25zUGx1Z2luJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7c2NhcHlQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgICAgIF0KJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAwLAomIzQzOyAgICAgICAgICAgICAgICAxLAomIzQzOyAgICAgICAgICAgICAgICAyLAomIzQzOyAgICAgICAgICAgICAgICAyNTUKJiM0MzsgICAgICAgICAgICBdLAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtcCBpY21wIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgTkVXIC1qIERST1AmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIGV0aCBzcmMgc2V0IDExOjIyOjMzOjQ0OjU1OjY2IHBpcGUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7c2NhcHkmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7aWZhY2UmIzM0OzogJiMzNDskREVWMCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y291bnQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O3BhY2tldCYjMzQ7OiAmIzM0O0V0aGVyKHNyYz0mIzM5O2FhOmJiOmNjOmRkOmVlOmZmJiMzOTssdHlwZT0weDgwMCkvSVAoc3JjPSYjMzk7MTAuMC4wLjExJiMzOTssZHN0PSYjMzk7MTAuMC4wLjIxJiMzOTspL0lDTVAoKSYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7aXB0YWJsZXMtc2F2ZSAtYyAtdCByYXcgfCBncmVwICYjMzk7Y3RzdGF0ZSBORVcmIzM5OyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDteXFxbMToyOFxcXSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7YjdmNCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IGNvbm50cmFjayByZXNldCB3aGVuIEVUSCB3cml0ZSBleHRlbmRzIGludG8gSVAgbGF5ZXImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y3QmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3BlZGl0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtzY2FweSYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtuc1BsdWdpbiYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3NjYXB5UGx1Z2luJiMzNDsKJiM0MzsgICAgICAgICAgICBdCiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgMCwKJiM0MzsgICAgICAgICAgICAgICAgMSwKJiM0MzsgICAgICAgICAgICAgICAgMiwKJiM0MzsgICAgICAgICAgICAgICAgMjU1CiYjNDM7ICAgICAgICAgICAgXSwKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBJTlZBTElEIC1qIERST1AmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIG9mZnNldCAxMiB1MzIgc2V0IDB4MDgwMDQ1MDAgcGlwZSBjc3VtIGlwNGggY29udGludWUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7c2NhcHkmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7aWZhY2UmIzM0OzogJiMzNDskREVWMCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y291bnQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O3BhY2tldCYjMzQ7OiAmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMyYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMyYjMzk7KS9JQ01QKCkmIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0O2lwdGFibGVzLXNhdmUgLXQgcmF3IC1jIHwgZ3JlcCAmIzM5O2N0c3RhdGUgSU5WQUxJRCYjMzk7JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O15cXFsxOjI4XFxdJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7CiYjNDM7ICAgICAgICBdCiAgICAgfQogXQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weQppbmRleCA1MTFkNjZjMzZhMmEwLi4xOWI4YTFmZDFjNzE2IDEwMDc1NQotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weQpAQCAtNjAwLDYgJiM0Mzs2MDAsMTggQEAgZGVmIG1wX2JpbnMoYWxsdGVzdHMpOgogCiAgICAgcmV0dXJuIChzZXJpYWwsIHBhcmFsbGVsKQogCiYjNDM7bXBfcG0gPSBOb25lCiYjNDM7bXBfYXJncyA9IE5vbmUKJiM0MzsKJiM0MztkZWYgX19tcF9pbml0X18ocG0sIGFyZ3MpOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSB3aGVuIGVhY2ggd29ya2VyIHByb2Nlc3Mgc3RhcnRzLgomIzQzOyAgICBJdCBzZXRzIHRoZSBnbG9iYWwgdmFyaWFibGVzIGluIHRoZSBjaGlsZCBwcm9jZXNzJiMzOTtzIG1lbW9yeSBzcGFjZS4KJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIGdsb2JhbCBtcF9wbSwgbXBfYXJncwomIzQzOyAgICBtcF9wbSA9IHBtCiYjNDM7ICAgIG1wX2FyZ3MgPSBhcmdzCiYjNDM7CiBkZWYgX19tcF9ydW5uZXIodGVzdHMpOgogICAgIChfLCB0c3IpID0gdGVzdF9ydW5uZXIobXBfcG0sIG1wX2FyZ3MsIHRlc3RzKQogICAgIHJldHVybiB0c3IuX3Rlc3RzdWl0ZQpAQCAtNjE1LDE0ICYjNDM7NjI3LDEzIEBAIGRlZiB0ZXN0X3J1bm5lcl9tcChwbSwgYXJncywgYWxsdGVzdHMpOgogICAgIHByaW50KCYjMzQ7RXhlY3V0aW5nIHt9IHRlc3RzIGluIHBhcmFsbGVsIGFuZCB7fSBpbiBzZXJpYWwmIzM0Oy5mb3JtYXQobGVuKHBhcmFsbGVsKSwgbGVuKHNlcmlhbCkpKQogICAgIHByaW50KCYjMzQ7VXNpbmcge30gYmF0Y2hlcyBhbmQge30gd29ya2VycyYjMzQ7LmZvcm1hdChsZW4oYmF0Y2hlcyksIGFyZ3MubXApKQogCi0gICAgIyBXZSBjYW4mIzM5O3QgcGlja2xlIHRoZXNlIG9iamVjdHMgc28gd29ya2Fyb3VuZCB0aGVtCi0gICAgZ2xvYmFsIG1wX3BtCi0gICAgbXBfcG0gPSBwbQotCi0gICAgZ2xvYmFsIG1wX2FyZ3MKLSAgICBtcF9hcmdzID0gYXJncwotCi0gICAgd2l0aCBQb29sKGFyZ3MubXApIGFzIHA6CiYjNDM7ICAgICMgVXNlIHRoZSAmIzM5O2luaXRpYWxpemVyJiMzOTsgdG8gcGFzcyB0aGUgdW5waWNrbGVhYmxlL3NoYXJlZCBvYmplY3RzCiYjNDM7ICAgICMgdG8gZWFjaCB3b3JrZXIgcHJvY2VzcyBleGFjdGx5IG9uY2UgdXBvbiBzdGFydHVwLgomIzQzOyAgICB3aXRoIFBvb2woCiYjNDM7ICAgICAgICBwcm9jZXNzZXM9YXJncy5tcCwKJiM0MzsgICAgICAgIGluaXRpYWxpemVyPV9fbXBfaW5pdF9fLAomIzQzOyAgICAgICAgaW5pdGFyZ3M9KHBtLCBhcmdzKQomIzQzOyAgICApIGFzIHA6CiAgICAgICAgIHByZXMgPSBwLm1hcChfX21wX3J1bm5lciwgYmF0Y2hlcykKIAogICAgIHRzciA9IFRlc3RTdWl0ZVJlcG9ydCgpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mzk0CgkJCQkJCQlvdXRwdXQ6IDE1NAoJCQkJCQkJdGhvdWdodHM6IDUwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbm50cmFjayBTdGF0ZSBSZXNldCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLiBJdCBmb2N1c2VzIG9uIGBuZXQvc2NoZWQvYWN0X25hdC5jYCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AsIHNwZWNpZmljYWxseS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpbnZvbHZlcyBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCBpbiB0aG9zZSBhY3Rpb25zLiBJbiB0aGUgTkFUIGFjdGlvbiwgaXQmIzM5O3MgYSBkaXJlY3QgY2FsbCBiZWZvcmUgcmV0dXJuaW5nLiBGb3IgdGhlIHBlZGl0IGFjdGlvbiwgaXQmIzM5O3MgY29uZGl0aW9uYWwsIHRyaWdnZXJlZCBpZiBlaXRoZXIgTDMgb3IgTDQgaGVhZGVycyBoYXZlIGJlZW4gdG91Y2hlZCwgYmFzZWQgb24gY2hlY2tpbmcgYGh0eXBlYCBhbmQgYHdyaXRlX29mZnNldGAuIFRoZXkgYWxzbyB1cGRhdGVkIHNvbWUgdGVzdHMgYW5kIGZpeGVkIGEgbXVsdGlwcm9jZXNzaW5nIGlzc3VlIGluIHRoZSB0ZXN0aW5nIHNjcmlwdHMsIHdoaWNoIGlzIGFsd2F5cyBnb29kIHRvIHNlZS4KCk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzIHdpdGggYW55IGtlcm5lbCBwYXRjaCwgaXMgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSBhbmQgY2FuIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuIEJ1dCwgZGlnZ2luZyBkZWVwZXIsIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGlzIHBhdGNoIGlzICpub3QqIGludHJvZHVjaW5nIHN1Y2ggcmlza3MuIGBuZl9yZXNldF9jdChza2IpYCBzaW1wbHkgY2xlYXJzIHRoZSBjb25udHJhY2sgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBgc2tiYC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSByZXNldC4KClRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcywgbm8gbmV3IGFsbG9jYXRpb25zLCBub3RoaW5nIGJlaW5nIHNlbnQgdG8gdXNlcnNwYWNlLiBJdCBpcyBqdXN0IGRlYWxpbmcgd2l0aCBjb25udHJhY2sgc3RhdGUgY2hhbmdlcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiwgc28gaXQgc2hvdWxkIG5vdCBpbnRyb2R1Y2Ugcmlza3Mgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBjaGVja2VkIHRoZSBkZWZpbml0aW9uIG9mIGBuZl9yZXNldF9jdGAgKGl0JiMzOTtzIGVpdGhlciBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvc2tidWZmLmhgIG9yIHdpdGhpbiBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oYCkuIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIG9wZXJhdGlvbjogaXQgY2FsbHMgYG5mX2Nvbm50cmFja19wdXQoc2tiLSZndDtuZmN0KWAgYW5kIHRoZW4gc2V0cyBgc2tiLSZndDtuZmN0YCB0byBgTlVMTGAuIE5vIGZhbmN5IG1lbW9yeSBtYW5pcHVsYXRpb24gdGhlcmU7IGFsbCBvcGVyYXRpb25zIGludm9sdmUgc3RydWN0dXJlcyBhbHJlYWR5IG1hbmFnZWQgd2l0aGluIHRoZSBrZXJuZWwuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIHNob3VsZCAqbm90KiB0cmlnZ2VyIGEgYE5lZWRzS01TQU5gIGZsYWcuIEl0IGlzIHB1cmVseSBhIGxvZ2ljIGZpeCBmb3IgY29ubnRyYWNrIHN0YXRlIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zLiBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGUgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gc2tiIG1hbmlwdWxhdGlvbi4gSSB3aWxsIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIHRvIG1hcmsgdGhlIHBhdGNoIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBjb25udHJhY2sgc3RhdGUgdHJhY2tpbmcgd2hlbiBwYWNrZXRzIGFyZSBtb2RpZmllZCBieSB0YyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KS4gSXQgZG9lcyBzbyBieSBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byBjbGVhciB0aGUgY29ubnRyYWNrIHN0YXRlIGlmIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcGFja2V0IG1ldGFkYXRhIChza2ItXHUwMDNlbmZjdCkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gc2tiIG1hbmlwdWxhdGlvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNvbm50cmFjayBzdGF0ZSB0cmFja2luZyB3aGVuIHBhY2tldHMgYXJlIG1vZGlmaWVkIGJ5IHRjIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpLiBJdCBkb2VzIHNvIGJ5IGNhbGxpbmcgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGNsZWFyIHRoZSBjb25udHJhY2sgc3RhdGUgaWYgTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwYWNrZXQgbWV0YWRhdGEgKHNrYi1cdTAwM2VuZmN0KSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byBza2IgbWFuaXB1bGF0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowNzo1MS43NDAyNjM1MzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjczMjIxMjYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX05BVFwiLFxuICAgIFwiTkVUX0FDVF9QRURJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9uYXRfYWN0XCIsXG4gICAgXCJ0Y2ZfcGVkaXRfYWN0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBjb25udHJhY2sgc3RhdGUgdHJhY2tpbmcgd2hlbiBwYWNrZXRzIGFyZSBtb2RpZmllZCBieSB0YyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KS4gSXQgZG9lcyBzbyBieSBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byBjbGVhciB0aGUgY29ubnRyYWNrIHN0YXRlIGlmIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcGFja2V0IG1ldGFkYXRhIChza2ItXFx1MDAzZW5mY3QpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgYnVncyByZWxhdGVkIHRvIHNrYiBtYW5pcHVsYXRpb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBgbmZfcmVzZXRfY3Qoc2tiKWAgdG8gYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgIHdoZW4gTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzY2hlZHVsaW5nIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHRyYWZmaWMgY29udHJvbCAodGMpIGNvbW1hbmRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowNzo1MS43NDAyNzI1MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTgxNjY2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE5Y2ZkNzY4OGRjZDM1NDQyOGQ1YzAzYzM5YTFhZDAyYmIzMWFhZjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MDc6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmNcXG5pbmRleCBhYmIzMzJkZWU4MzZkLi4wYzNkM2I4OWQzNDk5IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9hY3RfbmF0LmNcXG4rKysgYi9uZXQvc2NoZWQvYWN0X25hdC5jXFxuQEAgLTI1Nyw2ICsyNTcsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX25hdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0fVxcbiBcXG4gb3V0OlxcbitcXHRuZl9yZXNldF9jdChza2IpO1xcbiBcXHRyZXR1cm4gYWN0aW9uO1xcbiBcXG4gZHJvcDpcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXFxuaW5kZXggZDRkNDdhOTkyMWY0NS4uYjA3OTI1N2MyYjdiNiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcXG4rKysgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcXG5AQCAtMzg2LDYgKzM4Niw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHN0cnVjdCB0Y2ZfcGVkaXQgKnAgPSB0b19wZWRpdChhKTtcXG4gXFx0c3RydWN0IHRjZl9wZWRpdF9rZXlfZXggKnRrZXlfZXg7XFxuIFxcdHN0cnVjdCB0Y2ZfcGVkaXRfcGFybXMgKnBhcm1zO1xcbitcXHRib29sIGwzX2w0X2NoYW5nZWQgPSBmYWxzZTtcXG4gXFx0c3RydWN0IHRjX3BlZGl0X2tleSAqdGtleTtcXG4gXFx0aW50IGk7XFxuIFxcbkBAIC0zOTgsNyArMzk5LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dGtleV9leCA9IHBhcm1zLVxcdTAwM2V0Y2ZwX2tleXNfZXg7XFxuIFxcbiBcXHRmb3IgKGkgPSBwYXJtcy1cXHUwMDNldGNmcF9ua2V5czsgaSBcXHUwMDNlIDA7IGktLSwgdGtleSsrKSB7XFxuLVxcdFxcdGludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbjtcXG4rXFx0XFx0aW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuLCBud19vZmZzZXQ7XFxuIFxcdFxcdGludCBvZmZzZXQgPSB0a2V5LVxcdTAwM2VvZmY7XFxuIFxcdFxcdGludCBob2Zmc2V0ID0gMDtcXG4gXFx0XFx0dTMyIGN1cl92YWwsIHZhbDtcXG5AQCAtNDE4LDYgKzQxOSw4IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdGdvdG8gYmFkO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHRud19vZmZzZXQgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTtcXG4rXFxuIFxcdFxcdGlmICh0a2V5LVxcdTAwM2VvZmZtYXNrKSB7XFxuIFxcdFxcdFxcdHU4ICpkLCBfZDtcXG4gXFx0XFx0XFx0aW50IGF0X29mZnNldDtcXG5AQCAtNDg1LDYgKzQ4OCwxOSBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRwdXRfdW5hbGlnbmVkKChjdXJfdmFsIFxcdTAwMjYgdGtleS1cXHUwMDNlbWFzaykgXiB2YWwsIHB0cik7XFxuK1xcbitcXHRcXHQvKiBUcmFjayBpZiBMMyBvciBMNCBoZWFkZXJzIHdlcmUgbW9kaWZpZWQ6XFxuK1xcdFxcdCAqIC0gRGlyZWN0IEwzL0w0IGhlYWRlciB0eXBlc1xcbitcXHRcXHQgKiAtIEVUSCBoZWFkZXIgdHlwZSB3aXRoIG9mZnNldC9sZW5ndGggcmVhY2hpbmcgaW50byBMMy9MNFxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfTkVUV09SSyB8fFxcbitcXHRcXHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDQgfHxcXG4rXFx0XFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfSVA2IHx8XFxuK1xcdFxcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1RDUCB8fFxcbitcXHRcXHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9VRFAgfHxcXG4rXFx0XFx0ICAgIChodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX0VUSCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgIHdyaXRlX29mZnNldCArIChpbnQpc2l6ZW9mKCpwdHIpIFxcdTAwM2Ugbndfb2Zmc2V0KSlcXG4rXFx0XFx0XFx0bDNfbDRfY2hhbmdlZCA9IHRydWU7XFxuIFxcdH1cXG4gXFxuIFxcdGdvdG8gZG9uZTtcXG5AQCAtNDkyLDYgKzUwOCw5IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuIGJhZDpcXG4gXFx0dGNmX2FjdGlvbl9pbmNfb3ZlcmxpbWl0X3FzdGF0cyhcXHUwMDI2cC1cXHUwMDNlY29tbW9uKTtcXG4gZG9uZTpcXG4rXFx0aWYgKGwzX2w0X2NoYW5nZWQpXFxuK1xcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuK1xcbiBcXHRyZXR1cm4gcGFybXMtXFx1MDAzZWFjdGlvbjtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvblxcbmluZGV4IDhhYjQ4ZGVmODliNmEuLjE4YTc3Mzc0ODM1ODAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvblxcbkBAIC03NDIsNSArNzQyLDE3MyBAQFxcbiAgICAgICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4gICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGNsc2FjdFxcXCJcXG4gICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJjMmE5XFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJWZXJpZnkgY29ubnRyYWNrIHJlc2V0IGFmdGVyIHBlZGl0IG1vZGlmaWVzIElQIHByb3RvY29sXFxcIixcXG4rICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgICAgICAgXFxcImN0XFxcIixcXG4rICAgICAgICAgICAgXFxcInBlZGl0XFxcIixcXG4rICAgICAgICAgICAgXFxcInNjYXB5XFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcInBsdWdpbnNcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJyZXF1aXJlc1xcXCI6IFtcXG4rICAgICAgICAgICAgICAgIFxcXCJuc1BsdWdpblxcXCIsXFxuKyAgICAgICAgICAgICAgICBcXFwic2NhcHlQbHVnaW5cXFwiXFxuKyAgICAgICAgICAgIF1cXG4rICAgICAgICB9LFxcbisgICAgICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgICAgICAgW1xcbisgICAgICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcXFwiLFxcbisgICAgICAgICAgICAgICAgMCxcXG4rICAgICAgICAgICAgICAgIDEsXFxuKyAgICAgICAgICAgICAgICAyLFxcbisgICAgICAgICAgICAgICAgMjU1XFxuKyAgICAgICAgICAgIF0sXFxuKyAgICAgICAgICAgIFxcXCJpcHRhYmxlcyAtdCByYXcgLUZcXFwiLFxcbisgICAgICAgICAgICBcXFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgaWNtcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgaXAgcHJvdG9jb2wgc2V0IDEgcGlwZSBhY3Rpb24gY3N1bSBpcDRoIGNvbnRpbnVlXFxcIixcXG4rICAgICAgICBcXFwic2NhcHlcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJpZmFjZVxcXCI6IFxcXCIkREVWMFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjb3VudFxcXCI6IDEsXFxuKyAgICAgICAgICAgIFxcXCJwYWNrZXRcXFwiOiBcXFwiRXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPScxMC4wLjAuMTAnLGRzdD0nMTAuMC4wLjIwJyxwcm90bz02KS9UQ1Aoc3BvcnQ9MTIzNCxkcG9ydD04MCxmbGFncz0nUycpXFxcIlxcbisgICAgICAgIH0sXFxuKyAgICAgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiaXB0YWJsZXMtc2F2ZSAtYyAtdCByYXcgfCBncmVwICdjdHN0YXRlIElOVkFMSUQnXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcIl5cXFxcXFxcXFsxOjQwXFxcXFxcXFxdXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtRlxcXCJcXG4rICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJkM2I4XFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJWZXJpZnkgY29ubnRyYWNrIHJlc2V0IGFmdGVyIFRDUCBwb3J0IG1vZGlmaWNhdGlvblxcXCIsXFxuKyAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICAgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJwZWRpdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJzY2FweVxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBbXFxuKyAgICAgICAgICAgICAgICBcXFwibnNQbHVnaW5cXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInNjYXB5UGx1Z2luXFxcIlxcbisgICAgICAgICAgICBdXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFtcXG4rICAgICAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgICAgIDAsXFxuKyAgICAgICAgICAgICAgICAxLFxcbisgICAgICAgICAgICAgICAgMixcXG4rICAgICAgICAgICAgICAgIDI1NVxcbisgICAgICAgICAgICBdLFxcbisgICAgICAgICAgICBcXFwiaXB0YWJsZXMgLXQgcmF3IC1GXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIHRjcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGlwX3Byb3RvIHRjcCBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIHRjcCBzcG9ydCBzZXQgOTk5OSBwaXBlXFxcIixcXG4rICAgICAgICBcXFwic2NhcHlcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJpZmFjZVxcXCI6IFxcXCIkREVWMFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjb3VudFxcXCI6IDEsXFxuKyAgICAgICAgICAgIFxcXCJwYWNrZXRcXFwiOiBcXFwiRXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPScxMC4wLjAuMTAnLGRzdD0nMTAuMC4wLjIwJykvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9J1MnKVxcXCJcXG4rICAgICAgICB9LFxcbisgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBJTlZBTElEJ1xcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJeXFxcXFxcXFxbMTo0MFxcXFxcXFxcXVxcXCIsXFxuKyAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJpcHRhYmxlcyAtdCByYXcgLUZcXFwiXFxuKyAgICAgICAgXVxcbisgICAgfSxcXG4rICAgIHtcXG4rICAgICAgICBcXFwiaWRcXFwiOiBcXFwiYTFiMlxcXCIsXFxuKyAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwiVmVyaWZ5IGNvbm50cmFjayBOT1QgcmVzZXQgd2hlbiBwZWRpdCBtb2RpZmllcyBvbmx5IE1BQ1xcXCIsXFxuKyAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICAgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJwZWRpdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJzY2FweVxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBbXFxuKyAgICAgICAgICAgICAgICBcXFwibnNQbHVnaW5cXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInNjYXB5UGx1Z2luXFxcIlxcbisgICAgICAgICAgICBdXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFtcXG4rICAgICAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgICAgIDAsXFxuKyAgICAgICAgICAgICAgICAxLFxcbisgICAgICAgICAgICAgICAgMixcXG4rICAgICAgICAgICAgICAgIDI1NVxcbisgICAgICAgICAgICBdLFxcbisgICAgICAgICAgICBcXFwiaXB0YWJsZXMgLXQgcmF3IC1GXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBORVcgLWogRFJPUFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgZXRoIHNyYyBzZXQgMTE6MjI6MzM6NDQ6NTU6NjYgcGlwZVxcXCIsXFxuKyAgICAgICAgXFxcInNjYXB5XFxcIjoge1xcbisgICAgICAgICAgICBcXFwiaWZhY2VcXFwiOiBcXFwiJERFVjBcXFwiLFxcbisgICAgICAgICAgICBcXFwiY291bnRcXFwiOiAxLFxcbisgICAgICAgICAgICBcXFwicGFja2V0XFxcIjogXFxcIkV0aGVyKHNyYz0nYWE6YmI6Y2M6ZGQ6ZWU6ZmYnLHR5cGU9MHg4MDApL0lQKHNyYz0nMTAuMC4wLjExJyxkc3Q9JzEwLjAuMC4yMScpL0lDTVAoKVxcXCJcXG4rICAgICAgICB9LFxcbisgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBORVcnXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcIl5cXFxcXFxcXFsxOjI4XFxcXFxcXFxdXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtRlxcXCJcXG4rICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJiN2Y0XFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJWZXJpZnkgY29ubnRyYWNrIHJlc2V0IHdoZW4gRVRIIHdyaXRlIGV4dGVuZHMgaW50byBJUCBsYXllclxcXCIsXFxuKyAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICAgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJwZWRpdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJzY2FweVxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBbXFxuKyAgICAgICAgICAgICAgICBcXFwibnNQbHVnaW5cXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInNjYXB5UGx1Z2luXFxcIlxcbisgICAgICAgICAgICBdXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFtcXG4rICAgICAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgICAgIDAsXFxuKyAgICAgICAgICAgICAgICAxLFxcbisgICAgICAgICAgICAgICAgMixcXG4rICAgICAgICAgICAgICAgIDI1NVxcbisgICAgICAgICAgICBdLFxcbisgICAgICAgICAgICBcXFwiaXB0YWJsZXMgLXQgcmF3IC1GXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXFxcIixcXG4rICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3NcXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBvZmZzZXQgMTIgdTMyIHNldCAweDA4MDA0NTAwIHBpcGUgY3N1bSBpcDRoIGNvbnRpbnVlXFxcIixcXG4rICAgICAgICBcXFwic2NhcHlcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJpZmFjZVxcXCI6IFxcXCIkREVWMFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjb3VudFxcXCI6IDEsXFxuKyAgICAgICAgICAgIFxcXCJwYWNrZXRcXFwiOiBcXFwiRXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPScxMC4wLjAuMTMnLGRzdD0nMTAuMC4wLjIzJykvSUNNUCgpXFxcIlxcbisgICAgICAgIH0sXFxuKyAgICAgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiaXB0YWJsZXMtc2F2ZSAtdCByYXcgLWMgfCBncmVwICdjdHN0YXRlIElOVkFMSUQnXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcIl5cXFxcXFxcXFsxOjI4XFxcXFxcXFxdXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtRlxcXCJcXG4rICAgICAgICBdXFxuICAgICB9XFxuIF1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxcbmluZGV4IDUxMWQ2NmMzNmEyYTAuLjE5YjhhMWZkMWM3MTYgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHlcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxcbkBAIC02MDAsNiArNjAwLDE4IEBAIGRlZiBtcF9iaW5zKGFsbHRlc3RzKTpcXG4gXFxuICAgICByZXR1cm4gKHNlcmlhbCwgcGFyYWxsZWwpXFxuIFxcbittcF9wbSA9IE5vbmVcXG4rbXBfYXJncyA9IE5vbmVcXG4rXFxuK2RlZiBfX21wX2luaXRfXyhwbSwgYXJncyk6XFxuKyAgICBcXFwiXFxcIlxcXCJcXG4rICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2Ugd2hlbiBlYWNoIHdvcmtlciBwcm9jZXNzIHN0YXJ0cy5cXG4rICAgIEl0IHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MncyBtZW1vcnkgc3BhY2UuXFxuKyAgICBcXFwiXFxcIlxcXCJcXG4rICAgIGdsb2JhbCBtcF9wbSwgbXBfYXJnc1xcbisgICAgbXBfcG0gPSBwbVxcbisgICAgbXBfYXJncyA9IGFyZ3NcXG4rXFxuIGRlZiBfX21wX3J1bm5lcih0ZXN0cyk6XFxuICAgICAoXywgdHNyKSA9IHRlc3RfcnVubmVyKG1wX3BtLCBtcF9hcmdzLCB0ZXN0cylcXG4gICAgIHJldHVybiB0c3IuX3Rlc3RzdWl0ZVxcbkBAIC02MTUsMTQgKzYyNywxMyBAQCBkZWYgdGVzdF9ydW5uZXJfbXAocG0sIGFyZ3MsIGFsbHRlc3RzKTpcXG4gICAgIHByaW50KFxcXCJFeGVjdXRpbmcge30gdGVzdHMgaW4gcGFyYWxsZWwgYW5kIHt9IGluIHNlcmlhbFxcXCIuZm9ybWF0KGxlbihwYXJhbGxlbCksIGxlbihzZXJpYWwpKSlcXG4gICAgIHByaW50KFxcXCJVc2luZyB7fSBiYXRjaGVzIGFuZCB7fSB3b3JrZXJzXFxcIi5mb3JtYXQobGVuKGJhdGNoZXMpLCBhcmdzLm1wKSlcXG4gXFxuLSAgICAjIFdlIGNhbid0IHBpY2tsZSB0aGVzZSBvYmplY3RzIHNvIHdvcmthcm91bmQgdGhlbVxcbi0gICAgZ2xvYmFsIG1wX3BtXFxuLSAgICBtcF9wbSA9IHBtXFxuLVxcbi0gICAgZ2xvYmFsIG1wX2FyZ3NcXG4tICAgIG1wX2FyZ3MgPSBhcmdzXFxuLVxcbi0gICAgd2l0aCBQb29sKGFyZ3MubXApIGFzIHA6XFxuKyAgICAjIFVzZSB0aGUgJ2luaXRpYWxpemVyJyB0byBwYXNzIHRoZSB1bnBpY2tsZWFibGUvc2hhcmVkIG9iamVjdHNcXG4rICAgICMgdG8gZWFjaCB3b3JrZXIgcHJvY2VzcyBleGFjdGx5IG9uY2UgdXBvbiBzdGFydHVwLlxcbisgICAgd2l0aCBQb29sKFxcbisgICAgICAgIHByb2Nlc3Nlcz1hcmdzLm1wLFxcbisgICAgICAgIGluaXRpYWxpemVyPV9fbXBfaW5pdF9fLFxcbisgICAgICAgIGluaXRhcmdzPShwbSwgYXJncylcXG4rICAgICkgYXMgcDpcXG4gICAgICAgICBwcmVzID0gcC5tYXAoX19tcF9ydW5uZXIsIGJhdGNoZXMpXFxuIFxcbiAgICAgdHNyID0gVGVzdFN1aXRlUmVwb3J0KClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDc6NTIuMzQzMDY0MjQ5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODE4NzA4NTM5NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkVUX0FDVF9OQVRcIixcbiAgICBcIk5FVF9BQ1RfUEVESVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfbmF0X2FjdFwiLFxuICAgIFwidGNmX3BlZGl0X2FjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCB3aGVuIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KSB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSB0cmFmZmljIGNvbnRyb2wgKHRjKSBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTljZmQ3Njg4ZGNkMzU0NDI4ZDVjMDNjMzlhMWFkMDJiYjMxYWFmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDIxOjA3OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmNcbmluZGV4IGFiYjMzMmRlZTgzNmQuLjBjM2QzYjg5ZDM0OTkgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X25hdC5jXG4rKysgYi9uZXQvc2NoZWQvYWN0X25hdC5jXG5AQCAtMjU3LDYgKzI1Nyw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfbmF0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0fVxuIFxuIG91dDpcbitcdG5mX3Jlc2V0X2N0KHNrYik7XG4gXHRyZXR1cm4gYWN0aW9uO1xuIFxuIGRyb3A6XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXG5pbmRleCBkNGQ0N2E5OTIxZjQ1Li5iMDc5MjU3YzJiN2I2IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXG4rKysgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbkBAIC0zODYsNiArMzg2LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCB0Y2ZfcGVkaXQgKnAgPSB0b19wZWRpdChhKTtcbiBcdHN0cnVjdCB0Y2ZfcGVkaXRfa2V5X2V4ICp0a2V5X2V4O1xuIFx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XG4rXHRib29sIGwzX2w0X2NoYW5nZWQgPSBmYWxzZTtcbiBcdHN0cnVjdCB0Y19wZWRpdF9rZXkgKnRrZXk7XG4gXHRpbnQgaTtcbiBcbkBAIC0zOTgsNyArMzk5LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHRrZXlfZXggPSBwYXJtcy1cdTAwM2V0Y2ZwX2tleXNfZXg7XG4gXG4gXHRmb3IgKGkgPSBwYXJtcy1cdTAwM2V0Y2ZwX25rZXlzOyBpIFx1MDAzZSAwOyBpLS0sIHRrZXkrKykge1xuLVx0XHRpbnQgd3JpdGVfb2Zmc2V0LCB3cml0ZV9sZW47XG4rXHRcdGludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbiwgbndfb2Zmc2V0O1xuIFx0XHRpbnQgb2Zmc2V0ID0gdGtleS1cdTAwM2VvZmY7XG4gXHRcdGludCBob2Zmc2V0ID0gMDtcbiBcdFx0dTMyIGN1cl92YWwsIHZhbDtcbkBAIC00MTgsNiArNDE5LDggQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRnb3RvIGJhZDtcbiBcdFx0fVxuIFxuK1x0XHRud19vZmZzZXQgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTtcbitcbiBcdFx0aWYgKHRrZXktXHUwMDNlb2ZmbWFzaykge1xuIFx0XHRcdHU4ICpkLCBfZDtcbiBcdFx0XHRpbnQgYXRfb2Zmc2V0O1xuQEAgLTQ4NSw2ICs0ODgsMTkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRwdXRfdW5hbGlnbmVkKChjdXJfdmFsIFx1MDAyNiB0a2V5LVx1MDAzZW1hc2spIF4gdmFsLCBwdHIpO1xuK1xuK1x0XHQvKiBUcmFjayBpZiBMMyBvciBMNCBoZWFkZXJzIHdlcmUgbW9kaWZpZWQ6XG4rXHRcdCAqIC0gRGlyZWN0IEwzL0w0IGhlYWRlciB0eXBlc1xuK1x0XHQgKiAtIEVUSCBoZWFkZXIgdHlwZSB3aXRoIG9mZnNldC9sZW5ndGggcmVhY2hpbmcgaW50byBMMy9MNFxuK1x0XHQgKi9cbitcdFx0aWYgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfTkVUV09SSyB8fFxuK1x0XHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDQgfHxcbitcdFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfSVA2IHx8XG4rXHRcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1RDUCB8fFxuK1x0XHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9VRFAgfHxcbitcdFx0ICAgIChodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX0VUSCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICB3cml0ZV9vZmZzZXQgKyAoaW50KXNpemVvZigqcHRyKSBcdTAwM2Ugbndfb2Zmc2V0KSlcbitcdFx0XHRsM19sNF9jaGFuZ2VkID0gdHJ1ZTtcbiBcdH1cbiBcbiBcdGdvdG8gZG9uZTtcbkBAIC00OTIsNiArNTA4LDkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBiYWQ6XG4gXHR0Y2ZfYWN0aW9uX2luY19vdmVybGltaXRfcXN0YXRzKFx1MDAyNnAtXHUwMDNlY29tbW9uKTtcbiBkb25lOlxuK1x0aWYgKGwzX2w0X2NoYW5nZWQpXG4rXHRcdG5mX3Jlc2V0X2N0KHNrYik7XG4rXG4gXHRyZXR1cm4gcGFybXMtXHUwMDNlYWN0aW9uO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uXG5pbmRleCA4YWI0OGRlZjg5YjZhLi4xOGE3NzM3NDgzNTgwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uXG5AQCAtNzQyLDUgKzc0MiwxNzMgQEBcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgY2xzYWN0XCJcbiAgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImMyYTlcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBjb25udHJhY2sgcmVzZXQgYWZ0ZXIgcGVkaXQgbW9kaWZpZXMgSVAgcHJvdG9jb2xcIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgICAgICAgIFwiY3RcIixcbisgICAgICAgICAgICBcInBlZGl0XCIsXG4rICAgICAgICAgICAgXCJzY2FweVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFtcbisgICAgICAgICAgICAgICAgXCJuc1BsdWdpblwiLFxuKyAgICAgICAgICAgICAgICBcInNjYXB5UGx1Z2luXCJcbisgICAgICAgICAgICBdXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgW1xuKyAgICAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICAgICAgMCxcbisgICAgICAgICAgICAgICAgMSxcbisgICAgICAgICAgICAgICAgMixcbisgICAgICAgICAgICAgICAgMjU1XG4rICAgICAgICAgICAgXSxcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgaWNtcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFwiLFxuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgaXAgcHJvdG9jb2wgc2V0IDEgcGlwZSBhY3Rpb24gY3N1bSBpcDRoIGNvbnRpbnVlXCIsXG4rICAgICAgICBcInNjYXB5XCI6IHtcbisgICAgICAgICAgICBcImlmYWNlXCI6IFwiJERFVjBcIixcbisgICAgICAgICAgICBcImNvdW50XCI6IDEsXG4rICAgICAgICAgICAgXCJwYWNrZXRcIjogXCJFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JzEwLjAuMC4xMCcsZHN0PScxMC4wLjAuMjAnLHByb3RvPTYpL1RDUChzcG9ydD0xMjM0LGRwb3J0PTgwLGZsYWdzPSdTJylcIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBJTlZBTElEJ1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJeXFxcXFsxOjQwXFxcXF1cIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCJcbisgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImQzYjhcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBjb25udHJhY2sgcmVzZXQgYWZ0ZXIgVENQIHBvcnQgbW9kaWZpY2F0aW9uXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImFjdGlvbnNcIixcbisgICAgICAgICAgICBcImN0XCIsXG4rICAgICAgICAgICAgXCJwZWRpdFwiLFxuKyAgICAgICAgICAgIFwic2NhcHlcIlxuKyAgICAgICAgXSxcbisgICAgICAgIFwicGx1Z2luc1wiOiB7XG4rICAgICAgICAgICAgXCJyZXF1aXJlc1wiOiBbXG4rICAgICAgICAgICAgICAgIFwibnNQbHVnaW5cIixcbisgICAgICAgICAgICAgICAgXCJzY2FweVBsdWdpblwiXG4rICAgICAgICAgICAgXVxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFtcbisgICAgICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgICAgIDAsXG4rICAgICAgICAgICAgICAgIDEsXG4rICAgICAgICAgICAgICAgIDIsXG4rICAgICAgICAgICAgICAgIDI1NVxuKyAgICAgICAgICAgIF0sXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIixcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIHRjcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFwiLFxuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGlwX3Byb3RvIHRjcCBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIHRjcCBzcG9ydCBzZXQgOTk5OSBwaXBlXCIsXG4rICAgICAgICBcInNjYXB5XCI6IHtcbisgICAgICAgICAgICBcImlmYWNlXCI6IFwiJERFVjBcIixcbisgICAgICAgICAgICBcImNvdW50XCI6IDEsXG4rICAgICAgICAgICAgXCJwYWNrZXRcIjogXCJFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JzEwLjAuMC4xMCcsZHN0PScxMC4wLjAuMjAnKS9UQ1Aoc3BvcnQ9MTIzNCxkcG9ydD04MCxmbGFncz0nUycpXCJcbisgICAgICAgIH0sXG4rICAgICAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICAgICAgXCJ2ZXJpZnlDbWRcIjogXCJpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJ2N0c3RhdGUgSU5WQUxJRCdcIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwiXlxcXFxbMTo0MFxcXFxdXCIsXG4rICAgICAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiXG4rICAgICAgICBdXG4rICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCJhMWIyXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJWZXJpZnkgY29ubnRyYWNrIE5PVCByZXNldCB3aGVuIHBlZGl0IG1vZGlmaWVzIG9ubHkgTUFDXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImFjdGlvbnNcIixcbisgICAgICAgICAgICBcImN0XCIsXG4rICAgICAgICAgICAgXCJwZWRpdFwiLFxuKyAgICAgICAgICAgIFwic2NhcHlcIlxuKyAgICAgICAgXSxcbisgICAgICAgIFwicGx1Z2luc1wiOiB7XG4rICAgICAgICAgICAgXCJyZXF1aXJlc1wiOiBbXG4rICAgICAgICAgICAgICAgIFwibnNQbHVnaW5cIixcbisgICAgICAgICAgICAgICAgXCJzY2FweVBsdWdpblwiXG4rICAgICAgICAgICAgXVxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFtcbisgICAgICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgICAgIDAsXG4rICAgICAgICAgICAgICAgIDEsXG4rICAgICAgICAgICAgICAgIDIsXG4rICAgICAgICAgICAgICAgIDI1NVxuKyAgICAgICAgICAgIF0sXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIixcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBORVcgLWogRFJPUFwiLFxuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgZXRoIHNyYyBzZXQgMTE6MjI6MzM6NDQ6NTU6NjYgcGlwZVwiLFxuKyAgICAgICAgXCJzY2FweVwiOiB7XG4rICAgICAgICAgICAgXCJpZmFjZVwiOiBcIiRERVYwXCIsXG4rICAgICAgICAgICAgXCJjb3VudFwiOiAxLFxuKyAgICAgICAgICAgIFwicGFja2V0XCI6IFwiRXRoZXIoc3JjPSdhYTpiYjpjYzpkZDplZTpmZicsdHlwZT0weDgwMCkvSVAoc3JjPScxMC4wLjAuMTEnLGRzdD0nMTAuMC4wLjIxJykvSUNNUCgpXCJcbisgICAgICAgIH0sXG4rICAgICAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICAgICAgXCJ2ZXJpZnlDbWRcIjogXCJpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJ2N0c3RhdGUgTkVXJ1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJeXFxcXFsxOjI4XFxcXF1cIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCJcbisgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImI3ZjRcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBjb25udHJhY2sgcmVzZXQgd2hlbiBFVEggd3JpdGUgZXh0ZW5kcyBpbnRvIElQIGxheWVyXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImFjdGlvbnNcIixcbisgICAgICAgICAgICBcImN0XCIsXG4rICAgICAgICAgICAgXCJwZWRpdFwiLFxuKyAgICAgICAgICAgIFwic2NhcHlcIlxuKyAgICAgICAgXSxcbisgICAgICAgIFwicGx1Z2luc1wiOiB7XG4rICAgICAgICAgICAgXCJyZXF1aXJlc1wiOiBbXG4rICAgICAgICAgICAgICAgIFwibnNQbHVnaW5cIixcbisgICAgICAgICAgICAgICAgXCJzY2FweVBsdWdpblwiXG4rICAgICAgICAgICAgXVxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFtcbisgICAgICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgICAgIDAsXG4rICAgICAgICAgICAgICAgIDEsXG4rICAgICAgICAgICAgICAgIDIsXG4rICAgICAgICAgICAgICAgIDI1NVxuKyAgICAgICAgICAgIF0sXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIixcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBvZmZzZXQgMTIgdTMyIHNldCAweDA4MDA0NTAwIHBpcGUgY3N1bSBpcDRoIGNvbnRpbnVlXCIsXG4rICAgICAgICBcInNjYXB5XCI6IHtcbisgICAgICAgICAgICBcImlmYWNlXCI6IFwiJERFVjBcIixcbisgICAgICAgICAgICBcImNvdW50XCI6IDEsXG4rICAgICAgICAgICAgXCJwYWNrZXRcIjogXCJFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JzEwLjAuMC4xMycsZHN0PScxMC4wLjAuMjMnKS9JQ01QKClcIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcImlwdGFibGVzLXNhdmUgLXQgcmF3IC1jIHwgZ3JlcCAnY3RzdGF0ZSBJTlZBTElEJ1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJeXFxcXFsxOjI4XFxcXF1cIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCJcbisgICAgICAgIF1cbiAgICAgfVxuIF1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5XG5pbmRleCA1MTFkNjZjMzZhMmEwLi4xOWI4YTFmZDFjNzE2IDEwMDc1NVxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHlcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5XG5AQCAtNjAwLDYgKzYwMCwxOCBAQCBkZWYgbXBfYmlucyhhbGx0ZXN0cyk6XG4gXG4gICAgIHJldHVybiAoc2VyaWFsLCBwYXJhbGxlbClcbiBcbittcF9wbSA9IE5vbmVcbittcF9hcmdzID0gTm9uZVxuK1xuK2RlZiBfX21wX2luaXRfXyhwbSwgYXJncyk6XG4rICAgIFwiXCJcIlxuKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIHdoZW4gZWFjaCB3b3JrZXIgcHJvY2VzcyBzdGFydHMuXG4rICAgIEl0IHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MncyBtZW1vcnkgc3BhY2UuXG4rICAgIFwiXCJcIlxuKyAgICBnbG9iYWwgbXBfcG0sIG1wX2FyZ3NcbisgICAgbXBfcG0gPSBwbVxuKyAgICBtcF9hcmdzID0gYXJnc1xuK1xuIGRlZiBfX21wX3J1bm5lcih0ZXN0cyk6XG4gICAgIChfLCB0c3IpID0gdGVzdF9ydW5uZXIobXBfcG0sIG1wX2FyZ3MsIHRlc3RzKVxuICAgICByZXR1cm4gdHNyLl90ZXN0c3VpdGVcbkBAIC02MTUsMTQgKzYyNywxMyBAQCBkZWYgdGVzdF9ydW5uZXJfbXAocG0sIGFyZ3MsIGFsbHRlc3RzKTpcbiAgICAgcHJpbnQoXCJFeGVjdXRpbmcge30gdGVzdHMgaW4gcGFyYWxsZWwgYW5kIHt9IGluIHNlcmlhbFwiLmZvcm1hdChsZW4ocGFyYWxsZWwpLCBsZW4oc2VyaWFsKSkpXG4gICAgIHByaW50KFwiVXNpbmcge30gYmF0Y2hlcyBhbmQge30gd29ya2Vyc1wiLmZvcm1hdChsZW4oYmF0Y2hlcyksIGFyZ3MubXApKVxuIFxuLSAgICAjIFdlIGNhbid0IHBpY2tsZSB0aGVzZSBvYmplY3RzIHNvIHdvcmthcm91bmQgdGhlbVxuLSAgICBnbG9iYWwgbXBfcG1cbi0gICAgbXBfcG0gPSBwbVxuLVxuLSAgICBnbG9iYWwgbXBfYXJnc1xuLSAgICBtcF9hcmdzID0gYXJnc1xuLVxuLSAgICB3aXRoIFBvb2woYXJncy5tcCkgYXMgcDpcbisgICAgIyBVc2UgdGhlICdpbml0aWFsaXplcicgdG8gcGFzcyB0aGUgdW5waWNrbGVhYmxlL3NoYXJlZCBvYmplY3RzXG4rICAgICMgdG8gZWFjaCB3b3JrZXIgcHJvY2VzcyBleGFjdGx5IG9uY2UgdXBvbiBzdGFydHVwLlxuKyAgICB3aXRoIFBvb2woXG4rICAgICAgICBwcm9jZXNzZXM9YXJncy5tcCxcbisgICAgICAgIGluaXRpYWxpemVyPV9fbXBfaW5pdF9fLFxuKyAgICAgICAgaW5pdGFyZ3M9KHBtLCBhcmdzKVxuKyAgICApIGFzIHA6XG4gICAgICAgICBwcmVzID0gcC5tYXAoX19tcF9ydW5uZXIsIGJhdGNoZXMpXG4gXG4gICAgIHRzciA9IFRlc3RTdWl0ZVJlcG9ydCgpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowNzo1Mi4zNDMwNjYwNjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDQwNzEzNzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIFBhdGNoIGZvciBOZXR3b3JrIFNjaGVkdWxpbmcgQWN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJBaCwgaXQncyBtZXNzaW5nIHdpdGggYG5ldC9zY2hlZC9hY3RfbmF0LmNgIGFuZCBgbmV0L3NjaGVkL2FjdF9wZWRpdC5jYC5cIiBJbW1lZGlhdGVseSwgSSBzZWUgaXQncyBpbmplY3RpbmcgYG5mX3Jlc2V0X2N0KHNrYik7YCBpbnRvIHRoZSBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAgZnVuY3Rpb25zLCBidXQgb25seSBpZiBMMy9MNCBoZWFkZXJzIGhhdmUgYmVlbiBtb2RpZmllZC4gVGhpcyB0ZWxscyBtZSB3ZSdyZSBwb3RlbnRpYWxseSB0YWxraW5nIGFib3V0IGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gaG93IGNvbm5lY3Rpb24gdHJhY2tpbmcgaW50ZXJhY3RzIHdpdGggTkFUIGFuZCBwYWNrZXQgZWRpdGluZyB3aXRoaW4gdGhlIHRyYWZmaWMgY29udHJvbCBmcmFtZXdvcmsuIFRoaXMgaXMgaW1wb3J0YW50IHN0dWZmLCBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5LiBUaGVzZSBhcmUgZmVhdHVyZXMgZXhwb3NlZCB0aHJvdWdoIGB0Y2AsIHNvIHRoaXMgcGF0Y2ggY291bGQgaGF2ZSBzb21lIHByZXR0eSBicm9hZCBpbXBsaWNhdGlvbnMuXG5cbk5leHQgc3RlcDogbGV0J3MgZGlnIGludG8gYG5ldC9zY2hlZC9hY3RfbmF0LmNgIGFuZCBgbmV0L3NjaGVkL2FjdF9wZWRpdC5jYCB0byBjb25maXJtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIG1vZGlmeWluZyBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAsIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgdG91Y2hlZCBoZXJlLiBSZWFjaGluZyB0aGVzZSB2aWEgYHRjYCBjb21tYW5kcy4uLnRoYXQgbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBiZSBhYmxlIHRvIG1hcCB0aGVzZSBjaGFuZ2VzIHRvIGhvdyB0aGV54oCZcmUgY29uZmlndXJlZC5cblxuVGltZSB0byBsb29rIHVwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0LCBgbmV0L3NjaGVkL2FjdF9uYXQuY2AgaXMgbGlua2VkIHRvIGBDT05GSUdfTkVUX0FDVF9OQVRgLCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AgaXMsIG5hdHVyYWxseSwgYENPTkZJR19ORVRfQUNUX1BFRElUYC4gTm93IEkgaGF2ZSB0byBnbyBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlnIG9wdGlvbnMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcncyBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM5NywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA3OjU4LjM4Mzc4MzA5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDUyODg5MTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORVRfQUNUX05BVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTM1OD1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6MzU5OkNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0zNjAtQ09ORklHX05FVF9BQ1RfQlBGPW1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Mzc0PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzozNzU6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTM3Ni1DT05GSUdfTkVUX0FDVF9CUEY9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MTczPUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MTc0OkNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMTc1LUNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTc4PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6Nzk6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy04MC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz03ND1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjc1OkNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctNzYtQ09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTIwMT1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzoyMDI6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMjAzLUNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9MjA1PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoyMDY6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwNy1DT05GSUdfTkVUX0FDVF9QRURJVD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MjAyPUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjIwMzpDT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0yMDQtQ09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz0yNjc9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjI2ODpDT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMjY5LUNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz00MDc9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NDA4OkNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTQwOS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9Mzk3PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjM5ODpDT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0zOTktQ09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oPTQ3PXN0YXRpYyBpbmxpbmUgaW50IHRjX2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTEwNC0jZW5kaWZcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6MTA1OiNpZiBJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX05BVClcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMTA2LVxcdGlmIChhLVxcdTAwM2VvcHMtXFx1MDAzZWFjdCA9PSB0Y2ZfbmF0X2FjdClcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0yMDM9c3RhdGljIGlubGluZSB2b2lkIHRjX3dyYXBwZXJfaW5pdCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTIyOC1cXHRcXHRJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX01QTFMpICtcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6MjI5OlxcdFxcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTkFUKSArXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTIzMC1cXHRcXHRJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX1RVTk5FTF9LRVkpICtcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkVUX0FDVF9TQU1QTEUpXFx0Kz0gYWN0X3NhbXBsZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19ORVRfQUNUX05BVClcXHQrPSBhY3RfbmF0Lm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTctb2JqLSQoQ09ORklHX05FVF9BQ1RfUEVESVQpXFx0Kz0gYWN0X3BlZGl0Lm9cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnPTg4PUNPTkZJR19ORVRfQUNUX1NBTVBMRT1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc6ODk6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy05MC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA4OjAwLjQzNjY4MTAyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTczMDMxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgQ09ORklHX05FVF9BQ1RfUEVESVRgKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYENPTkZJR19ORVRfQUNUX1BFRElUYCBvcHRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB3aGF0IHRoZSBjdXJyZW50IHN0YXRlIGlzIGFuZCB3aGF0IGl0IGNvbnRyb2xzLiBJJ20gYXNzdW1pbmcgdGhpcyByZWxhdGVzIHRvIHRoZSBwYWNrZXQgZWRpdGluZyBhY3Rpb24sIGxpa2VseSB3aXRoaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcmssIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbi4gSSdsbCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyB0aGUga2VybmVsIGNvbmZpZyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgdGhhdCB3aXRoIHRoZSByZWxldmFudCBOZXRmaWx0ZXIgZG9jdW1lbnRhdGlvbiBvciBjb2RlLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eSAtIGRvZXMgaXQgcHJvdmlkZSBhcmJpdHJhcnkgcGFja2V0IG1vZGlmaWNhdGlvbiwgb3IgaXMgaXQgbW9yZSBjb25zdHJhaW5lZD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBpZiB0aGlzIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQ/IFNlY3VyaXR5IGltcGxpY2F0aW9ucyBhcmUgaW1tZWRpYXRlbHkgYXQgdGhlIGZvcmVmcm9udCBvZiBteSBtaW5kLCBhcyBwYWNrZXQgbWFuaXB1bGF0aW9uIGlzIGEgc2Vuc2l0aXZlIGFyZWEuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgYXR0YWNrIHN1cmZhY2UgdGhhdCB0aGlzIG9wdGlvbiBtYXkgZXhwb3NlLCBpZiBhbnkuIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIGhhcmR3YXJlIHRoaXMgaXMgb3B0aW1pemVkIGZvcj9cblxuTmV4dCwgSSdsbCBjb25zaWRlciBpdHMgcm9sZSBpbiB2YXJpb3VzIG5ldHdvcmsgc2V0dXBzLiBJcyBpdCBjb21tb25seSB1c2VkIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzLCBvciBpcyBpdCBtb3JlIG9mIGEgbmljaGUgZmVhdHVyZT8gV2hhdCBhcmUgdGhlIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zPyBEb2VzIGl0IGludGVncmF0ZSB3ZWxsIHdpdGggb3RoZXIgTmV0ZmlsdGVyIGNvbXBvbmVudHMsIGxpa2UgaXB0YWJsZXMgb3IgbmZ0YWJsZXM/IEkgd2FudCB0byBhc3Nlc3MgaWYgaXQncyBjb25zaWRlcmVkIGEgcmVsaWFibGUgb3B0aW9uLlxuXG5JIGFsc28gd2FudCB0byBrbm93IHdoZXRoZXIgaXQgaGFzIGFueSBrbm93biBpc3N1ZXMgb3IgbGltaXRhdGlvbnMsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgY29uY3VycmVuY3kgb3IgZWRnZSBjYXNlcy4gQXJlIHRoZXJlIGFueSBrbm93biBleHBsb2l0cyBhc3NvY2lhdGVkIHdpdGggaXQsIG9yIGhhcyBpdCBiZWVuIHRoZSBzdWJqZWN0IG9mIGFueSB2dWxuZXJhYmlsaXR5IGRpc2Nsb3N1cmVzP1xuXG5GaW5hbGx5LCB3aGF0IGFyZSB0aGUgdXNlLWNhc2VzIHdoZXJlIHRoaXMgb3B0aW9uIGlzIGVzc2VudGlhbCBvciBoaWdobHkgYmVuZWZpY2lhbD8gV2hhdCBhcmUgdGhlIGFsdGVybmF0aXZlcywgYW5kIGhvdyBkbyB0aGV5IGNvbXBhcmUgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2UsIHNlY3VyaXR5LCBhbmQgZmxleGliaWxpdHk/IEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgaW5mb3JtYXRpb24gb24gdGhlIExpbnV4IEtlcm5lbCBNYWlsaW5nIExpc3QgdGhhdCBtYXkgaW5kaWNhdGUgYW55IHByb2JsZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDYzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MDQuNzMzOTg4MTI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzU5NDI3MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX05FVF9BQ1RfUEVESVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MTc0PUNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MTc1OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy0xNzYtQ09ORklHX05FVF9BQ1RfU0lNUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz03OT1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjgwOkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy04MS1DT05GSUdfTkVUX0FDVF9TS0JFRElUPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnPTc1PUNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6NzY6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnLTc3LUNPTkZJR19ORVRfQUNUX1NLQkVESVQ9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTIwMj1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzoyMDM6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yMDQtQ09ORklHX05FVF9BQ1RfU0lNUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTIwNj1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MjA3OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwOC1DT05GSUdfTkVUX0FDVF9TSU1QPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yMDM9Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6MjA0OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjA1LUNPTkZJR19ORVRfQUNUX1NJTVA9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnPTk2PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnOjk3OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9yYjUzMl9kZWZjb25maWctOTgtQ09ORklHX01URD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTI2OD1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MjY5OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTI3MC1DT05GSUdfTkVUX0FDVF9TSU1QPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz00MDg9Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NDA5OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctNDEwLUNPTkZJR19ORVRfQUNUX1NJTVA9bVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTM5OD1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzozOTk6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy00MDAtQ09ORklHX05FVF9BQ1RfU0lNUD1tXFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnPTEzOD1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc6MTM5OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnLTE0MC1DT05GSUdfRldfTE9BREVSPW1cXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD00Nz1zdGF0aWMgaW5saW5lIGludCB0Y19hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC02MC0jZW5kaWZcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6NjE6I2lmIElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfUEVESVQpXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTYyLVxcdGlmIChhLVxcdTAwM2VvcHMtXFx1MDAzZWFjdCA9PSB0Y2ZfcGVkaXRfYWN0KVxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oPTIwMz1zdGF0aWMgaW5saW5lIHZvaWQgdGNfd3JhcHBlcl9pbml0KHZvaWQpXFxuLS1cXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMjE3LVxcdFxcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTUlSUkVEKSArXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjIxODpcXHRcXHRJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX1BFRElUKSArXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTIxOS1cXHRcXHRJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX1NLQkVESVQpICtcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfTkVUX0FDVF9OQVQpXFx0Kz0gYWN0X25hdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVxcdCs9IGFjdF9wZWRpdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19ORVRfQUNUX1NJTVApXFx0Kz0gYWN0X3NpbXBsZS5vXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTY5PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZzo3MDpDT05GSUdfTkVUX0FDVF9QRURJVD1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZy03MS1DT05GSUdfTkVUX0FDVF9UVU5ORUxfS0VZPW1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZz0yMj1DT05GSUdfTkVUX0FDVF9NUExTPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWc6MjM6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZy0yNC1DT05GSUdfTkVUX0FDVF9QT0xJQ0U9bVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL2NvbmZpZz0xNT1DT05GSUdfTkVUX0FDVF9DU1VNPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnOjE2OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnLTE3LUNPTkZJR19ORVRfQ0xTX0FDVD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZz04OT1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnOjkwOkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy05MS1DT05GSUdfTkVUX0FDVF9TSU1QPW1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MDYuODY5OTQwN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTMyNDY2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgTmV0d29yayBBY3Rpb24gTW9kdWxlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlc2UgbmV0d29yayBhY3Rpb24gbW9kdWxlcywgc3BlY2lmaWNhbGx5IGBORVRfQUNUX05BVGAgYW5kIGBORVRfQUNUX1BFRElUYC4gSSBrbm93IHRoZXJlIGFyZSBmdW5jdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0g4oCTIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCwgcmVzcGVjdGl2ZWx5LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQsIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJ20gZ29pbmcgdG8gY2hlY2sgYG5ldC9zY2hlZC9LY29uZmlnYCB0byBzZWUgaG93IGBORVRfQUNUX05BVGAgYW5kIGBORVRfQUNUX1BFRElUYCBhcmUgZGVmaW5lZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBtaWdodCBoYXZlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlaXIgYXZhaWxhYmlsaXR5IGFuZCBob3cgdGhleSBjYW4gYmUgY29udHJvbGxlZCBkdXJpbmcga2VybmVsIGJ1aWxkcywgd2hpY2ggaW4gdHVybiBpbmZvcm1zIGhvdyBJIHVzZSB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTE3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MTAuMjYzMTk0Mzc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODM0MDU1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9BQ1RfTkFUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTc2My1cXG5uZXQvc2NoZWQvS2NvbmZpZzo3NjQ6Y29uZmlnIE5FVF9BQ1RfTkFUXFxubmV0L3NjaGVkL0tjb25maWctNzY1LVxcdHRyaXN0YXRlIFxcXCJTdGF0ZWxlc3MgTkFUXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODoxMi42NDY2MTE0MzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI2NjU5ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgTkVUX0FDVF9QRURJVCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgYE5FVF9BQ1RfUEVESVRgIGlzIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMgd2l0aCBuZXR3b3JraW5nIHJlbGF0ZWQga2VybmVsIGZlYXR1cmVzLCBpcyB0byBsb29rIGluIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgdXN1YWwgaG9tZSBmb3Igc2NoZWR1bGluZyBhbmQgdHJhZmZpYyBjb250cm9sIHJlbGF0ZWQgb3B0aW9ucy4gSSdtIGFzc3VtaW5nIGl0IHNob3VsZCBiZSBpbiB0aGVyZSwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlOyBhIHF1aWNrIGNoZWNrIHdpbGwga2VlcCBtZSBmcm9tIHdhc3RpbmcgdGltZSBpZiBpdCdzIGJlZW4gbW92ZWQgZWxzZXdoZXJlIGluIGEgbGF0ZXIga2VybmVsIHZlcnNpb24gb3IgcmVuYW1lZC4gVGltZSB0byBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg1NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA4OjE2LjQ3MzI3Nzg5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3NjA1MTIwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0FDVF9QRURJVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03NzMtXFxubmV0L3NjaGVkL0tjb25maWc6Nzc0OmNvbmZpZyBORVRfQUNUX1BFRElUXFxubmV0L3NjaGVkL0tjb25maWctNzc1LVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgRWRpdGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MTkuNjQ5MzQ4MDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDczMTMwMDEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTkVUX0FDVF9OQVQgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGUgbmV0d29ya2luZyBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgc3Vycm91bmRpbmcgYE5FVF9BQ1RfTkFUYC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBhbHJlYWR5IGhhdmUgYSBkZWNlbnQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBidXQgYSBzcGVjaWZpYyBkZXBlbmRlbmN5IGNoZWNrIGlzIGEgZ29vZCBwcmFjdGljZSB0byBlbnN1cmUgdGhlIHN5c3RlbSBpcyBiZWluZyBjb25maWd1cmVkIGNvcnJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgY3J1Y2lhbCBpbnRlcmNvbm5lY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsJ3Mgc2NoZWR1bGluZyBsb2dpYy4gU28sIGBuZXQvc2NoZWQvS2NvbmZpZ2AgaXMgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQuIFRoYXQgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgY29uZGl0aW9uYWwgbG9naWMgYW5kIHJlbGF0aW9uc2hpcHMgdGhhdCBkZWZpbmUgd2hlbiBgTkVUX0FDVF9OQVRgIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgKndoeSouIEknbSBsb29raW5nIGZvciBjbHVlcyBhYm91dCBvdGhlciByZWxhdGVkIGZlYXR1cmVzLCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9yIGtlcm5lbCBtb2R1bGVzIHRoYXQgbWlnaHQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gd2hldGhlciB0aGlzIHNwZWNpZmljIGFjdGlvbiBpcyBhdmFpbGFibGUgYW5kIHdvcmtpbmcgYXMgaW50ZW5kZWQuIFRoaXMgaXMgYWJvdXQgbWFraW5nIHN1cmUgYWxsIHRoZSBwaWVjZXMgZml0IHRvZ2V0aGVyIHNlYW1sZXNzbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTIzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MjQuMzgwNjU3OTA0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NjAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NjA6XFx0XFxuIDc2MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNzYyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9zYW1wbGUuXFxuIDc2MzpcXHRcXG4gNzY0OlxcdGNvbmZpZyBORVRfQUNUX05BVFxcbiA3NjU6XFx0XFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxuIDc2NjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxuIDc2NzpcXHRcXHRoZWxwXFxuIDc2ODpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZG8gc3RhdGVsZXNzIE5BVCBvbiBJUHY0IHBhY2tldHMuICBZb3Ugc2hvdWxkIHVzZVxcbiA3Njk6XFx0XFx0ICBuZXRmaWx0ZXIgZm9yIE5BVCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxcbiA3NzA6XFx0XFxuIDc3MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNzcyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9uYXQuXFxuIDc3MzpcXHRcXG4gNzc0OlxcdGNvbmZpZyBORVRfQUNUX1BFRElUXFxuIDc3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxuIDc3NjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxuIDc3NzpcXHRcXHRoZWxwXFxuIDc3ODpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gbWFuZ2xlIHRoZSBjb250ZW50IG9mIHBhY2tldHMuXFxuIDc3OTpcXHRcXG4gNzgwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA3ODE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X3BlZGl0LlxcbiA3ODI6XFx0XFxuIDc4MzpcXHRjb25maWcgTkVUX0FDVF9TSU1QXFxuIDc4NDpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltcGxlIEV4YW1wbGUgKERlYnVnKVxcXCJcXG4gNzg1OlxcdFxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG4gNzg2OlxcdFxcdGhlbHBcXG4gNzg3OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBhZGQgYSBzaW1wbGUgYWN0aW9uIGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzLlxcbiA3ODg6XFx0XFx0ICBJdCBpcyBtZWFudCBhcyBhbiBleGFtcGxlIGFuZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiBJdCB3aWxsXFxuIDc4OTpcXHRcXHQgIHByaW50IGEgY29uZmlndXJlZCBwb2xpY3kgc3RyaW5nIGZvbGxvd2VkIGJ5IHRoZSBwYWNrZXQgY291bnRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MjQuMzgwODgzMDg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjQyNTYwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlcGVuZGVuY2llcyBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBpc3N1ZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgTkVUX0NMU19BQ1RgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgem9vbSBpbiBvbiBpdHMgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmVhdHVyZSBvciBtb2R1bGUgcmVsaWVzIHVwb24uIEEgcXVpY2sgc2NhbiBvZiB0aGUgY29kZSwgb3IgcGVyaGFwcyBldmVuIGEgbWVudGFsIG1hcCwgc2hvdWxkIHJldmVhbCB0aGUgY3J1Y2lhbCBsaW5rcy4gSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBhc3Nlc3MgKnRob3NlKiBkZXBlbmRlbmNpZXMsIGJlY2F1c2UgdGhlIHJvb3QgcHJvYmxlbSBpcyBtb3N0IGxpa2VseSBzdGVtbWluZyBmcm9tIGFuIHVuZGVybHlpbmcgZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCB5ZXQgZnVsbHkgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MzksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA4OjI3LjQ0NTE0MzYyOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNjM0NzM3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0NMU19BQ1RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MjkuMzUxNTAxMDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDk4Mzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYE5FVF9DTFNfQUNUYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCdzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX0NMU19BQ1RgLiBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEknbSBhc3N1bWluZyBpdCdzIHRoZSByaWdodCBwbGFjZSwgYnV0IGJldHRlciB0byBiZSBzdXJlLiBJJ20gbG9va2luZyBmb3IgYW55IGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMgbGlrZSBvdGhlciBvcHRpb25zLCBzeW1ib2xzLCBvciBldmVuIG90aGVyIEtjb25maWcgZmlsZXMgdGhhdCBgTkVUX0NMU19BQ1RgIG1pZ2h0IHJlbHkgb24uIFRoaXMgaXMgbGlrZWx5IGEga2V5IGNvbXBvbmVudCBmb3IgdHJhZmZpYyBjbGFzc2lmaWNhdGlvbiBhbmQgYWN0aW9uLCBidXQgYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhbnkgbW9kaWZpY2F0aW9uIG9yIHRyb3VibGVzaG9vdGluZy4gSSdsbCBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyB0aGlzIGlzIGNvbm5lY3RlZCB0by4gSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgbGlrZWx5IHBvaW50IG1lIHRvIG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0aGF0IG1heSBoYXZlIGFuIGVmZmVjdCBvbiB0aGlzIGZlYXR1cmUsIG9yIG90aGVyIG1vZHVsZXMgdGhhdCBhcmUgY2xvc2VseSByZWxhdGVkLiBUaGlzIHdpbGwgcHJvdmlkZSBjb250ZXh0LCBhbmQgaGVscCBlbnN1cmUgSSBkb24ndCBicmVhayBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwODUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODozMi44MTI0OTAyOTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5OCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY5ODpcXHRcXG4gNjk5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA3MDA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZW1faXB0LlxcbiA3MDE6XFx0XFxuIDcwMjpcXHRjb25maWcgTkVUX0NMU19BQ1RcXG4gNzAzOlxcdFxcdGJvb2wgXFxcIkFjdGlvbnNcXFwiXFxuIDcwNDpcXHRcXHRzZWxlY3QgTkVUX0NMU1xcbiA3MDU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4gNzA2OlxcdFxcdGhlbHBcXG4gNzA3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbnMuIEFjdGlvbnNcXG4gNzA4OlxcdFxcdCAgZ2V0IGF0dGFjaGVkIHRvIGNsYXNzaWZpZXJzIGFuZCBhcmUgaW52b2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWxcXG4gNzA5OlxcdFxcdCAgY2xhc3NpZmljYXRpb24uIFRoZXkgYXJlIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBjbGFzc2lmaWNhdGlvblxcbiA3MTA6XFx0XFx0ICByZXN1bHQsIGluc3RhbnRseSBkcm9wIG9yIHJlZGlyZWN0IHBhY2tldHMsIGV0Yy5cXG4gNzExOlxcdFxcbiA3MTI6XFx0XFx0ICBBIHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBpcHJvdXRlMiBwYWNrYWdlIGlzIHJlcXVpcmVkIHRvIHVzZVxcbiA3MTM6XFx0XFx0ICBleHRlbmRlZCBtYXRjaGVzLlxcbiA3MTQ6XFx0XFxuIDcxNTpcXHRjb25maWcgTkVUX0FDVF9QT0xJQ0VcXG4gNzE2OlxcdFxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFBvbGljaW5nXFxcIlxcbiA3MTc6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODozMi44MTI2MjkwMDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3MTAyMjU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKk5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBgTkVUX0NMU19BQ1RgIGlzIGFjdGluZyBhcyBhIEJvb2xlYW4gc3dpdGNoLCBkZWNpZGluZyB3aGV0aGVyIHdlIGVuYWJsZSBgTkVUX0NMU2AgYW5kIGBORVRfWEdSRVNTYC4gVGhpbmtpbmcgYWJvdXQgd2hhdCdzIGFjdHVhbGx5IG5lZWRlZCBpbiB0aGUgYnJvYWRlciBwaWN0dXJlLCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBzZWVtIHRvIGJlIGBORVRfQUNUX05BVGAsIGBORVRfQUNUX1BFRElUYCwgYW5kIG9mIGNvdXJzZSwgYE5FVF9DTFNfQUNUYCBpdHNlbGYuIE15IGd1dCBzYXlzIHdlJ2xsIGFsc28gbmVlZCB0byBlbmFibGUgYE5FVF9TQ0hFRGAgdG8gZ2V0IHRoZSBzY2hlZHVsaW5nIGFzcGVjdHMgd29ya2luZy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgaGVhZGluZyBvdmVyIHRvIHRoZSB0b3Agb2YgYG5ldC9zY2hlZC9LY29uZmlnYCB0byBjb25maXJtIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsZXZhbnQgY29udGV4dCB0aGVyZS4gSXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIG5ldHdvcmsgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjM1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODozNi43ODM2NTUxODdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFRyYWZmaWMgY29udHJvbCBjb25maWd1cmF0aW9uLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIE5FVF9TQ0hFRFxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xcbiAgMTE6XFx0XFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXFxuICAxMjpcXHRcXHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXFxuICAxMzpcXHRcXHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xcbiAgMTQ6XFx0XFx0ICBcXFwiZmFpcmx5XFxcIiBoYXZlIGJlZW4gcHJvcG9zZWQuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgSWYgeW91IHNheSBOIGhlcmUsIHlvdSB3aWxsIGdldCB0aGUgc3RhbmRhcmQgcGFja2V0IHNjaGVkdWxlciwgd2hpY2hcXG4gIDE3OlxcdFxcdCAgaXMgYSBGSUZPIChmaXJzdCBjb21lLCBmaXJzdCBzZXJ2ZWQpLiBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmVcXG4gIDE4OlxcdFxcdCAgYWJsZSB0byBjaG9vc2UgZnJvbSBhbW9uZyBzZXZlcmFsIGFsdGVybmF0aXZlIGFsZ29yaXRobXMgd2hpY2ggY2FuXFxuICAxOTpcXHRcXHQgIHRoZW4gYmUgYXR0YWNoZWQgdG8gZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yXFxuICAyMDpcXHRcXHQgIGV4YW1wbGUgaWYgc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlcyBhcmUgcmVhbCB0aW1lIGRldmljZXMgdGhhdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODozNi43ODM3NjEwNzdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4MTQ5Njc4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5ldHdvcmsgU2NoZWR1bGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgZ29pbmcgdG8gaGluZ2Ugb24gYE5FVF9TQ0hFRGAuIFRoYXQncyB0aGUgY29yZS4gVG8gZ2V0IHRoaXMgdGhpbmcgd29ya2luZywgSSdsbCBuZWVkIHRvIGVuYWJsZSBgTkVUX1NDSEVEYCwgYW5kIHRoZW4gSSdsbCBkZWZpbml0ZWx5IHdhbnQgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfTkFUYCwgYW5kIGBORVRfQUNUX1BFRElUYCB0b28uIFRob3NlIGNvbmZpZ3MgYXJlIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhpcyB0eXBlIG9mIG5ldHdvcmsgdHJhZmZpYyBtYW5hZ2VtZW50LiBUaGUgdHdvIHByaW1hcnkgZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLiBUaGV5J3JlIHByb2JhYmx5IHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBOQVQgYW5kIHBhY2tldCBlZGl0aW5nIGhhcHBlbi5cblxuSG9sZCBvbiwgSSBzZWUgYG5mX3Jlc2V0X2N0KHNrYilgIGJlaW5nIHVzZWQuIFRoYXQgdGhyb3dzIGEgcmVkIGZsYWcuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVzZXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyB3b24ndCBjYXVzZSBhbnkgY29uZmxpY3RzIGFuZCBuZWVkcyB0byBiZSBzdXBwb3J0ZWQsIHdoYXQgTmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcz8gVGltZSB0byBkb3VibGUgY2hlY2sgdGhlIGluY2x1ZGVzLiBJcyBpdCBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAgb3IgYGluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaGAgdGhhdCBkZWZpbmVzIGl0PyBMZXQgbWUgY2hlY2sgdGhvc2UgZmlsZXMgZGlyZWN0bHksIGFuZCB2ZXJpZnkgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjIzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NDIuMzY1MjYxOTEyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA2MDI5NjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3Jlc2V0X2N0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L292cG4vaW8uYz0zNTY9bmV0ZGV2X3R4X3Qgb3Zwbl9uZXRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTM2Ni1cXHQvKiByZXNldCBuZXRmaWx0ZXIgc3RhdGUgKi9cXG5kcml2ZXJzL25ldC9vdnBuL2lvLmM6MzY3OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTM2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9MTQ5PXN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjU3OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTM1MD1zdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM3Ni1cXHRcXHRza2JfZHN0X2Ryb3Aoc2tiKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM3NzpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzc4LVxcdFxcdHJldHVybiBza19yZWNlaXZlX3NrYihcXHUwMDI2cG8tXFx1MDAzZXNrLCBza2IsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvdHVuLmM9MTAwMz1zdGF0aWMgbmV0ZGV2X3R4X3QgdHVuX25ldF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC90dW4uYy0xMDYyLVxcbmRyaXZlcnMvbmV0L3R1bi5jOjEwNjM6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5kcml2ZXJzL25ldC90dW4uYy0xMDY0LVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTMzMzY9c3RhdGljIG5ldGRldl90eF90IHN0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zMzczLVxcdFxcdHNrYl9kc3RfZHJvcChza2IpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozMzc0OlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTMzNzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmM9MzgyPXN0YXRpYyB2b2lkIHZyZl9uZl9zZXRfdW50cmFja2VkKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYy0zODctXFxuZHJpdmVycy9uZXQvdnJmLmM6Mzg4OnN0YXRpYyB2b2lkIHZyZl9uZl9yZXNldF9jdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTM4OS17XFxuZHJpdmVycy9uZXQvdnJmLmMtMzkwLVxcdGlmIChza2JfZ2V0X25mY3Qoc2tiKSA9PSBJUF9DVF9VTlRSQUNLRUQpXFxuZHJpdmVycy9uZXQvdnJmLmM6MzkxOlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvdnJmLmMtMzkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTM5NT1zdGF0aWMgaW50IHZyZl9pcDZfbG9jYWxfb3V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtMzk5LVxcbmRyaXZlcnMvbmV0L3ZyZi5jOjQwMDpcXHR2cmZfbmZfcmVzZXRfY3Qoc2tiKTtcXG5kcml2ZXJzL25ldC92cmYuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYz00NzU9c3RhdGljIGludCB2cmZfaXBfbG9jYWxfb3V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtNDc5LVxcbmRyaXZlcnMvbmV0L3ZyZi5jOjQ4MDpcXHR2cmZfbmZfcmVzZXRfY3Qoc2tiKTtcXG5kcml2ZXJzL25ldC92cmYuYy00ODEtXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYz01Nzc9c3RhdGljIHZvaWQgdnJmX2ZpbmlzaF9kaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTU5NS1cXG5kcml2ZXJzL25ldC92cmYuYzo1OTY6XFx0dnJmX25mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvdnJmLmMtNTk3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTYwMT1zdGF0aWMgaW50IHZyZl9maW5pc2hfb3V0cHV0NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTYwOS1cXG5kcml2ZXJzL25ldC92cmYuYzo2MTA6XFx0dnJmX25mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvdnJmLmMtNjExLVxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmM9Nzk2PXN0YXRpYyBpbnQgdnJmX2ZpbmlzaF9vdXRwdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYy04MDQtXFxuZHJpdmVycy9uZXQvdnJmLmM6ODA1OlxcdHZyZl9uZl9yZXNldF9jdChza2IpO1xcbmRyaXZlcnMvbmV0L3ZyZi5jLTgwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE5MDI9c3RhdGljIGJvb2wgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVfbm9fbmwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xOTU1LVxcdHNrYl9leHRfcmVzZXQoc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxOTU2OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTk1Ny1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQtdHguYz0xMjY9bmV0ZGV2X3R4X3QgY3ZtX29jdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXR4LmMtMzUwLVxcdHNrYl9leHRfcmVzZXQoc2tiKTtcXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXR4LmM6MzUxOlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC10eC5jLTM1Mi1cXHRza2JfcmVzZXRfcmVkaXJlY3Qoc2tiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NTEzMz1zdGF0aWMgaW5saW5lIGJvb2wgc2tiX2hhc19leHRlbnNpb25zKHN0cnVjdCBza19idWZmICpza2IpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTUxMzUtXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo1MTM2OnN0YXRpYyBpbmxpbmUgdm9pZCBuZl9yZXNldF9jdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTEzNy17XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jPTQwNz12b2lkIGJhdGFkdl9pbnRlcmZhY2Vfcngoc3RydWN0IG5ldF9kZXZpY2UgKm1lc2hfaWZhY2UsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jLTQyNi1cXHQgKi9cXG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jOjQyNzpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9iYXRtYW4tYWR2L21lc2gtaW50ZXJmYWNlLmMtNDI4LVxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYz01ODU9c3RhdGljIHVuc2lnbmVkIGludCBicl9uZl9sb2NhbF9pbih2b2lkICpwcml2LFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYy01OTUtXFx0aWYgKHByb21pc2MpIHtcXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jOjU5NjpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmMtNTk3LVxcdFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTYwNy1cXHRpZiAoV0FSTl9PTl9PTkNFKHJlZmNvdW50X3JlYWQoXFx1MDAyNm5mY3QtXFx1MDAzZXVzZSkgIT0gMSkpIHtcXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jOjYwODpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmMtNjA5LVxcdFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9MjM5PXN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTI4Mi1cXHRkZWZhdWx0Olxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzoyODM6XFx0XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjg0LVxcdFxcdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9Mjk0PXN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX2luKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzAxLVxcdGlmIChwcm9taXNjKSB7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjMwMjpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zMDMtXFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4tLVxcbm5ldC9jb3JlL2dyby5jPTY1ND1zdGF0aWMgdm9pZCBuYXBpX3JldXNlX3NrYihzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvY29yZS9ncm8uYy02ODItXFx0XFx0c2tiX2V4dF9yZXNldChza2IpO1xcbm5ldC9jb3JlL2dyby5jOjY4MzpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9jb3JlL2dyby5jLTY4NC1cXHRcXHRza2ItXFx1MDAzZXNsb3dfZ3JvID0gMDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTExNjk9dm9pZCBza2JfcmVsZWFzZV9oZWFkX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0xMTg3LVxcdH1cXG5uZXQvY29yZS9za2J1ZmYuYzoxMTg4OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2NvcmUvc2tidWZmLmMtMTE4OS1cXHRza2JfZXh0X3Jlc2V0KHNrYik7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xNDk1PXZvaWQgbmFwaV9za2JfZnJlZV9zdG9sZW5faGVhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTQ5Ny1cXHRpZiAodW5saWtlbHkoc2tiLVxcdTAwM2VzbG93X2dybykpIHtcXG5uZXQvY29yZS9za2J1ZmYuYzoxNDk4OlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2NvcmUvc2tidWZmLmMtMTQ5OS1cXHRcXHRza2JfZHN0X2Ryb3Aoc2tiKTtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTYyNzg9dm9pZCBza2Jfc2NydWJfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgeG5ldClcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTYyODQtXFx0c2tiX2V4dF9yZXNldChza2IpO1xcbm5ldC9jb3JlL3NrYnVmZi5jOjYyODU6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvY29yZS9za2J1ZmYuYy02Mjg2LVxcdG5mX3Jlc2V0X3RyYWNlKHNrYik7XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmM9NDMzPWludCBpbmV0X2ZyYWdfcXVldWVfaW5zZXJ0KHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMtNDkyLVxcdGlmIChvZmZzZXQpXFxubmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jOjQ5MzpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L2luZXRfZnJhZ21lbnQuYy00OTQtXFxuLS1cXG5uZXQvaXB2NC9pcF9pbnB1dC5jPTE4OT12b2lkIGlwX3Byb3RvY29sX2RlbGl2ZXJfcmN1KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByb3RvY29sKVxcbi0tXFxubmV0L2lwdjQvaXBfaW5wdXQuYy0yMDQtXFx0XFx0XFx0fVxcbm5ldC9pcHY0L2lwX2lucHV0LmM6MjA1OlxcdFxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjQvaXBfaW5wdXQuYy0yMDYtXFx0XFx0fVxcbi0tXFxubmV0L2lwdjQvaXBtci5jPTE4Mzg9c3RhdGljIHZvaWQgaXBfZW5jYXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvaXBtci5jLTE4NjEtXFx0bWVtc2V0KFxcdTAwMjYoSVBDQihza2IpLVxcdTAwM2VvcHQpLCAwLCBzaXplb2YoSVBDQihza2IpLVxcdTAwM2VvcHQpKTtcXG5uZXQvaXB2NC9pcG1yLmM6MTg2MjpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L2lwbXIuYy0xODYzLX1cXG4tLVxcbm5ldC9pcHY0L2lwbXIuYz0yMTg5PWludCBpcF9tcl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBtci5jLTIyMzgtXFx0XFx0XFx0aWYgKG1yb3V0ZV9zaykge1xcbm5ldC9pcHY0L2lwbXIuYzoyMjM5OlxcdFxcdFxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjQvaXBtci5jLTIyNDAtXFx0XFx0XFx0XFx0cmF3X3Jjdihtcm91dGVfc2ssIHNrYik7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYz01MT12b2lkIG5mX2R1cF9pcHY0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhvb2tudW0sXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYy02OS1cXHQvKiBBdm9pZCBjb3VudGluZyBjbG9uZWQgcGFja2V0cyB0b3dhcmRzIHRoZSBvcmlnaW5hbCBjb25uZWN0aW9uLiAqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9kdXBfaXB2NC5jOjcwOlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX2R1cF9pcHY0LmMtNzEtXFx0bmZfY3Rfc2V0KHNrYiwgTlVMTCwgSVBfQ1RfVU5UUkFDS0VEKTtcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jPTMxOD1pbnQgcmF3X3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYy0zMjQtXFx0fVxcbm5ldC9pcHY0L3Jhdy5jOjMyNTpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L3Jhdy5jLTMyNi1cXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MjA3MD1pbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMTgyLVxcdFxcdH1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjIxODM6XFx0XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIxODQtXFx0XFx0aWYgKG5zayA9PSBzaykge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMjIzLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjIyNDpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjIyNS1cXG4tLVxcbm5ldC9pcHY0L3VkcC5jPTIzNDk9c3RhdGljIGludCB1ZHBfcXVldWVfcmN2X29uZV9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdWRwLmMtMjM2MS1cXHR9XFxubmV0L2lwdjQvdWRwLmM6MjM2MjpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L3VkcC5jLTIzNjMtXFxuLS1cXG5uZXQvaXB2NC91ZHAuYz0yNTg4PWludCB1ZHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC91ZHAuYy0yNjU0LVxcdFxcdGdvdG8gZHJvcDtcXG5uZXQvaXB2NC91ZHAuYzoyNjU1OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjQvdWRwLmMtMjY1Ni1cXG4tLVxcbm5ldC9pcHY2L2lwNl9pbnB1dC5jPTQwMz12b2lkIGlwNl9wcm90b2NvbF9kZWxpdmVyX3JjdShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLFxcbi0tXFxubmV0L2lwdjYvaXA2X2lucHV0LmMtNDc1LVxcdFxcdFxcdH1cXG5uZXQvaXB2Ni9pcDZfaW5wdXQuYzo0NzY6XFx0XFx0XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2Ni9pcDZfaW5wdXQuYy00NzctXFx0XFx0fVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX2R1cF9pcHY2LmM9NDc9dm9pZCBuZl9kdXBfaXB2NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBob29rbnVtLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX2R1cF9pcHY2LmMtNTctI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZHVwX2lwdjYuYzo1ODpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9kdXBfaXB2Ni5jLTU5LVxcdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XFxuLS1cXG5uZXQvaXB2Ni9yYXcuYz0zODg9aW50IHJhd3Y2X3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni9yYXcuYy0zOTctXFx0fVxcbm5ldC9pcHY2L3Jhdy5jOjM5ODpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY2L3Jhdy5jLTM5OS1cXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz0zOTY9c3RhdGljIGludCBzZWc2X2RvX3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZHN0X2VudHJ5ICpjYWNoZV9kc3QpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDY5LVxcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo0NzA6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDcxLVxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTkyOT1zdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHg2KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtOTQyLVxcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzo5NDM6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtOTQ0LVxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTk4Mj1zdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHg0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtOTkyLVxcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKTtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6OTkzOlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTk5NC1cXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMTMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZW5kX2R0X3ZyZl9jb3JlKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE2Ny1cXHRza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCBoZHJsZW4pO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMTY4OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExNjktXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTE3MzA9SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHRjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTgzOC1cXHRcXHR9XFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxODM5OlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODQwLVxcdFxcdGlmIChuc2sgPT0gc2spIHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTg3OS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE4ODA6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4ODEtXFxuLS1cXG5uZXQvaXB2Ni91ZHAuYz04MDY9c3RhdGljIGludCB1ZHB2Nl9xdWV1ZV9yY3Zfb25lX3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni91ZHAuYy04MTUtXFx0fVxcbm5ldC9pcHY2L3VkcC5jOjgxNjpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY2L3VkcC5jLTgxNy1cXG4tLVxcbm5ldC9pcHY2L3VkcC5jPTEwNjc9SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHVkcHY2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvdWRwLmMtMTE1Mi1cXHRcXHRnb3RvIGRpc2NhcmQ7XFxubmV0L2lwdjYvdWRwLmM6MTE1MzpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY2L3VkcC5jLTExNTQtXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMjI1PXN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpsZW4pXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjU0LVxcbm5ldC9sMnRwL2wydHBfY29yZS5jOjEyNTU6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjU2LVxcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYz0xMDc9c3RhdGljIHZvaWQgbDJ0cF9ldGhfZGV2X3JlY3Yoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGRhdGFfbGVuKVxcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYy0xMjMtXFx0c2tiX2RzdF9kcm9wKHNrYik7XFxubmV0L2wydHAvbDJ0cF9ldGguYzoxMjQ6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTEyNS1cXG4tLVxcbm5ldC9sMnRwL2wydHBfaXAuYz0xMjU9c3RhdGljIGludCBsMnRwX2lwX3JlY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sMnRwL2wydHBfaXAuYy0xOTctXFxubmV0L2wydHAvbDJ0cF9pcC5jOjE5ODpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9sMnRwL2wydHBfaXAuYy0xOTktXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2lwNi5jPTEzNT1zdGF0aWMgaW50IGwydHBfaXA2X3JlY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sMnRwL2wydHBfaXA2LmMtMjA3LVxcbm5ldC9sMnRwL2wydHBfaXA2LmM6MjA4OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2wydHAvbDJ0cF9pcDYuYy0yMDktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTYzMz1zdGF0aWMgaW5saW5lIGludCBpcF92c190dW5uZWxfeG1pdF9wcmVwYXJlKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTY0MS1cXHRpZiAocmV0ID09IE5GX0FDQ0VQVCkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NjQyOlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy02NDMtXFx0XFx0c2tiX2ZvcndhcmRfY3N1bShza2IpO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jPTE4Nj1zdGF0aWMgaW50IGludGVybmFsX2Rldl9yZWN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtMTk2LVxcdHNrYl9kc3RfZHJvcChza2IpO1xcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzoxOTc6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtMTk4LVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xODY5PXN0YXRpYyBpbnQgcGFja2V0X3Jjdl9zcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5MDYtXFx0LyogZHJvcCBjb25udHJhY2sgcmVmZXJlbmNlICovXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTA3OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTA4LVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMTMzPXN0YXRpYyBpbnQgcGFja2V0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMjE5LVxcdC8qIGRyb3AgY29ubnRyYWNrIHJlZmVyZW5jZSAqL1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjIyMDpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjIyMS1cXG4tLVxcbm5ldC9zY2hlZC9hY3RfbWlycmVkLmM9MjU0PXN0YXRpYyBpbnQgdGNmX21pcnJlZF90b19kZXYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjZl9taXJyZWQgKm0sXFxuLS1cXG5uZXQvc2NoZWQvYWN0X21pcnJlZC5jLTMwMC1cXHQvKiBBbGwgbWlycmVkL3JlZGlyZWN0ZWQgc2ticyBzaG91bGQgY2xlYXIgcHJldmlvdXMgY3QgaW5mbyAqL1xcbm5ldC9zY2hlZC9hY3RfbWlycmVkLmM6MzAxOlxcdG5mX3Jlc2V0X2N0KHNrYl90b19zZW5kKTtcXG5uZXQvc2NoZWQvYWN0X21pcnJlZC5jLTMwMi1cXHRpZiAod2FudF9pbmdyZXNzIFxcdTAwMjZcXHUwMDI2ICFhdF9pbmdyZXNzKSAvKiBkcm9wIGRzdCBmb3IgZWdyZXNzIC1cXHUwMDNlIGluZ3Jlc3MgKi9cXG4tLVxcbm5ldC9zY2hlZC9hY3RfbmF0LmM9MTE1PVRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfbmF0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0yNTktb3V0Olxcbm5ldC9zY2hlZC9hY3RfbmF0LmM6MjYwOlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L3NjaGVkL2FjdF9uYXQuYy0yNjEtXFx0cmV0dXJuIGFjdGlvbjtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYz0zODA9VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy01MTEtXFx0aWYgKGwzX2w0X2NoYW5nZWQpXFxubmV0L3NjaGVkL2FjdF9wZWRpdC5jOjUxMjpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy01MTMtXFxuLS1cXG5uZXQvc2N0cC9pbnB1dC5jPTg4PWludCBzY3RwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3NjdHAvaW5wdXQuYy0xOTAtXFx0XFx0Z290byBkaXNjYXJkX3JlbGVhc2U7XFxubmV0L3NjdHAvaW5wdXQuYzoxOTE6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvc2N0cC9pbnB1dC5jLTE5Mi1cXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYz00NjY9aW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTczNi1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NzM3OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTczOC1cXG4tLVxcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYz0yOTM9c3RhdGljIHZvaWQgeGZybWlfc2NydWJfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgeG5ldClcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYy0yOTktXFx0c2tiX2RzdF9kcm9wKHNrYik7XFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jOjMwMDpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYy0zMDEtXFx0bmZfcmVzZXRfdHJhY2Uoc2tiKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NTkzPWludCB4ZnJtX291dHB1dF9yZXN1bWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy01OTctXFx0d2hpbGUgKGxpa2VseSgoZXJyID0geGZybV9vdXRwdXRfb25lKHNrYiwgZXJyKSkgPT0gMCkpIHtcXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjU5ODpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTk5LVxcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYz02MjI9c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTYzNS1cXHRza2JfZHN0X3NldChza2IsIGRzdCk7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MzY6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTYzNy1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9Mjg5MD1zdGF0aWMgdm9pZCB4ZnJtX3BvbGljeV9xdWV1ZV9wcm9jZXNzKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTU5LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mjk2MDpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjk2MS1cXHRcXHRza2JfZHN0X2Ryb3Aoc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NDQuNTcxMzA0NTc1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MDI0MzkyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmZfcmVzZXRfY3RgLCB3aGljaCBJIHNlZSBpcyBkZWZpbmVkIGFzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiB3aXRoaW4gYGluY2x1ZGUvbGludXgvc2tidWZmLmhgLiBHb29kLCBzbyBpdCdzIGEgc2ltcGxlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbm5lY3Rpb24gdHJhY2tpbmcgaW5mb3JtYXRpb24uIEl0J3Mgbm90IGNvbmRpdGlvbmFsIG9uIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIEhvd2V2ZXIsIGl0IHNlZW1zIHRoaXMgaXMgYmVpbmcgdXNlZCBpbiB0aGUgY29udGV4dCBvZiB0cmFmZmljIGNvbnRyb2wsIGdpdmVuIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMsIHRoZXJlZm9yZSwgc2hpZnRzIHRvIHRob3NlIHR3byBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBuZXQvc2NoZWQvYWN0X25hdC5jYCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AgdG8gdW5kZXJzdGFuZCBob3cgYG5mX3Jlc2V0X2N0YCBpcyBiZWluZyBpbmNvcnBvcmF0ZWQgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gRnJvbSB3aGF0IEkgY2FuIHNlZSBzbyBmYXIsIHdlJ3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX0FDVGAsIGBORVRfQUNUX05BVGAsIGFuZCBgTkVUX0FDVF9QRURJVGAuIEkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIGluIHRoaXMgYXJlYS4gU3BlY2lmaWNhbGx5LCBgTkVUX0FDVF9OQVRgIGFuZCBgTkVUX0FDVF9QRURJVGAgYXJlIGRlcGVuZGVudCBvbiBgTkVUX0NMU19BQ1RgLCB3aGljaCwgaW4gdHVybiwgZGVwZW5kcyBvbiBgTkVUX1NDSEVEYC4gU28gd2UgaGF2ZSBhIGNsZWFyIGRlcGVuZGVuY3kgY2hhaW4gaGVyZTogYE5FVF9TQ0hFRGAgLVx1MDAzZSBgTkVUX0NMU19BQ1RgIC1cdTAwM2UgKGBORVRfQUNUX05BVGAsIGBORVRfQUNUX1BFRElUYCkuIEknbGwgZG91YmxlIGNoZWNrIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUgYWdhaW4gdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzA0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA4OjUwLjI3Mzc0OTA4N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3NjMzNDY4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIE5FVF9TQ0hFRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NTMuMDUwMDk2MzQxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDk4NzY0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBsb29raW5nIGF0LiBSaWdodCwgY29uZmlybWVkLiBOb3csIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFsbCBzZXQgdXAsIHRoZSBjb3JlIGNvbmZpZ3MgSSdtIGVuYWJsaW5nIGhlcmUgYXJlIGBORVRfU0NIRURgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9OQVRgLCBhbmQgYE5FVF9BQ1RfUEVESVRgLiBUaG9zZSBzaG91bGQgZ2l2ZSBtZSB3aGF0IEkgbmVlZC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBORVRfQUNUX05BVGAgZG9lc24ndCBpbnRyb2R1Y2UgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgdGhhdCBJJ20gb3Zlcmxvb2tpbmcuIE5vIHBvaW50IGluIG1ha2luZyBhc3N1bXB0aW9ucywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGlzIGxldmVsIG9mIGNvbmZpZ3VyYXRpb24uIEJldHRlciBzYWZlIHRoYW4gc29ycnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzgwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NTcuNjk5OTc2OTE3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NjA6XFx0XFxuIDc2MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNzYyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9zYW1wbGUuXFxuIDc2MzpcXHRcXG4gNzY0OlxcdGNvbmZpZyBORVRfQUNUX05BVFxcbiA3NjU6XFx0XFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxuIDc2NjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxuIDc2NzpcXHRcXHRoZWxwXFxuIDc2ODpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZG8gc3RhdGVsZXNzIE5BVCBvbiBJUHY0IHBhY2tldHMuICBZb3Ugc2hvdWxkIHVzZVxcbiA3Njk6XFx0XFx0ICBuZXRmaWx0ZXIgZm9yIE5BVCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxcbiA3NzA6XFx0XFxuIDc3MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNzcyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9uYXQuXFxuIDc3MzpcXHRcXG4gNzc0OlxcdGNvbmZpZyBORVRfQUNUX1BFRElUXFxuIDc3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxuIDc3NjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxuIDc3NzpcXHRcXHRoZWxwXFxuIDc3ODpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gbWFuZ2xlIHRoZSBjb250ZW50IG9mIHBhY2tldHMuXFxuIDc3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NTcuNzAwMDk0Njc3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjI4Mjg0MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIENvcmUgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIHRoZXJlIGFyZSBubyBoaWRkZW4gZGVwZW5kZW5jaWVzIGhlcmUsIHRoYXQncyBnb29kLiBNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucy4gVGhlIHBhdGNoIGRvY3VtZW50YXRpb24gY2xlYXJseSBpbmRpY2F0ZXMgdGhhdCB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLiBUaGVyZWZvcmUsIG15IGBGb2N1c1N5bWJvbHNgIHZhcmlhYmxlLCBvciB3aGF0ZXZlciBlcXVpdmFsZW50IEknbSB1c2luZywgbmVlZHMgdG8gYmUgc2V0IHRvIHRob3NlIHR3byBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5LiBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAuIE5vdywgSSBqdXN0IG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlc2UgYXJlIGV4cG9ydGVkIHN5bWJvbHMgb3IgZGVmaW5lZCBhcyBzdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsIG1vZHVsZS4gSSBuZWVkIHRvIGtub3cgdGhlIHNjb3BlIG9mIHRoZWlyIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5MjEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA5OjAxLjAyMjkyNjUyM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNDUwMzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfbmF0X2FjdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC90Y193cmFwcGVyLmg9MzY9VENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX21wbHNfYWN0KTtcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6Mzc6VENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX25hdF9hY3QpO1xcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0zOC1UQ19JTkRJUkVDVF9BQ1RJT05fREVDTEFSRSh0Y2ZfcGVkaXRfYWN0KTtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD00Nz1zdGF0aWMgaW5saW5lIGludCB0Y19hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0xMDUtI2lmIElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTkFUKVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDoxMDY6XFx0aWYgKGEtXFx1MDAzZW9wcy1cXHUwMDNlYWN0ID09IHRjZl9uYXRfYWN0KVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDoxMDc6XFx0XFx0cmV0dXJuIHRjZl9uYXRfYWN0KHNrYiwgYSwgcmVzKTtcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMTA4LSNlbmRpZlxcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYz0zNT1zdGF0aWMgaW50IHRjZl9uYXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IG5sYXR0ciAqZXN0LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0xMTQtXFxubmV0L3NjaGVkL2FjdF9uYXQuYzoxMTU6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9uYXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0xMTYtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYz0zMTc9c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9uYXRfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0zMjAtXFx0Lm93bmVyXFx0XFx0PVxcdFRISVNfTU9EVUxFLFxcbm5ldC9zY2hlZC9hY3RfbmF0LmM6MzIxOlxcdC5hY3RcXHRcXHQ9XFx0dGNmX25hdF9hY3QsXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0zMjItXFx0LmR1bXBcXHRcXHQ9XFx0dGNmX25hdF9kdW1wLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowOTowMy4yMjc0MzY5ODVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2MzQ0MDQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBmb3JtYXR0ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBbmFseXppbmcgVmFyaWFibGUgU2NvcGUqKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZXNlIHZhcmlhYmxlcywgc3BlY2lmaWNhbGx5IGBUQ19JTkRJUkVDVF9TQ09QRSBpbnRgIHR5cGVzLiBUaGF0IG1lYW5zIHRoZXNlIGludGVnZXJzIGFyZW4ndCBzdGF0aWM7IHRoZXkgaGF2ZSBzb21lIHNvcnQgb2YgZHluYW1pYyBvciBpbmRpcmVjdCBzY29wZS4gSXQncyBhIGNsdWUsIHBvdGVudGlhbGx5LCBhYm91dCBob3cgdGhleSdyZSB1c2VkIGFuZCBob3cgdGhlaXIgdmFsdWVzIGFyZSBtYW5hZ2VkLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uc2lkZXIgaW4gdGhlIG92ZXJhbGwgY29kZSBmbG93LlxuXG5Ob3csIGB0Y2ZfcGVkaXRfYWN0YCBpcyBhbHNvIGRlY2xhcmVkIHdpdGggdGhlIHNhbWUgaW5kaXJlY3Qgc2NvcGUuIFRoaXMgbWVhbnMgaXQgaGFzIHNpbWlsYXIgY2hhcmFjdGVyaXN0aWNzIGluIHRlcm1zIG9mIGxpZmV0aW1lIGFuZCBhY2Nlc3NpYmlsaXR5LiBHaXZlbiB0aGF0IGJvdGggYFRDX0lORElSRUNUX1NDT1BFIGludGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCBzaGFyZSB0aGUgc2FtZSBwcm9wZXJ0aWVzLCBhIGRlZXBlciBsb29rIGludG8gYHRjZl9wZWRpdF9hY3RgIGlzIHByb2JhYmx5IHdhcnJhbnRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXRzIHZhbHVlIGlzIHNldCBhbmQgdXNlZCBpbiByZWxhdGlvbiB0byBvdGhlciBwaWVjZXMgb2YgdGhlIGNvZGUuIExldCdzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY2NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA5OjA3LjA5MDg4MjQyNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3OTc4NjM0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfcGVkaXRfYWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0zNz1UQ19JTkRJUkVDVF9BQ1RJT05fREVDTEFSRSh0Y2ZfbmF0X2FjdCk7XFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjM4OlRDX0lORElSRUNUX0FDVElPTl9ERUNMQVJFKHRjZl9wZWRpdF9hY3QpO1xcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0zOS1UQ19JTkRJUkVDVF9BQ1RJT05fREVDTEFSRSh0Y2ZfcG9saWNlX2FjdCk7XFxuLS1cXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg9NDc9c3RhdGljIGlubGluZSBpbnQgdGNfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXFxuLS1cXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtNjEtI2lmIElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfUEVESVQpXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjYyOlxcdGlmIChhLVxcdTAwM2VvcHMtXFx1MDAzZWFjdCA9PSB0Y2ZfcGVkaXRfYWN0KVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDo2MzpcXHRcXHRyZXR1cm4gdGNmX3BlZGl0X2FjdChza2IsIGEsIHJlcyk7XFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTY0LSNlbmRpZlxcbi0tXFxubmV0L3NjaGVkL2FjdF9wZWRpdC5jPTM1MD1zdGF0aWMgaW50IHBlZGl0X3NrYl9oZHJfb2Zmc2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtMzc5LVxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYzozODA6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtMzgxLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9wZWRpdC5jPTY0OD1zdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X3BlZGl0X29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy02NTEtXFx0Lm93bmVyXFx0XFx0PVxcdFRISVNfTU9EVUxFLFxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYzo2NTI6XFx0LmFjdFxcdFxcdD1cXHR0Y2ZfcGVkaXRfYWN0LFxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy02NTMtXFx0LnN0YXRzX3VwZGF0ZVxcdD1cXHR0Y2ZfcGVkaXRfc3RhdHNfdXBkYXRlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowOTowOC45NzA2NzkzOTdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzNTY5Njk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGp1c3QgYW5hbHl6ZWQgdGhpcyBwYXRjaC4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5ICpmdW5jdGlvbmFsKiBhbmQsIGltcG9ydGFudGx5LCAqcmVhY2hhYmxlKi4gVGhlIHZlcmRpY3QgaXMgY2xlYXI6IFdvcnRoRnV6emluZz10cnVlLlxuXG5TcGVjaWZpY2FsbHksIHdlJ3JlIGxvb2tpbmcgYXQgY2hhbmdlcyBpbnZvbHZpbmcgdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIC0gTkFUIGFuZCBwZWRpdCAtIGFzIHRoZSBjb25maWdzIGBORVRfU0NIRURgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9OQVRgLCBhbmQgYE5FVF9BQ1RfUEVESVRgIGluZGljYXRlLiBUaGUga2V5IHN5bWJvbHMgdGhhdCBjYXB0dXJlIG15IGF0dGVudGlvbiBhcmUgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgaW4gYWRkaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byB0aGVzZSBhY3Rpb25zIHdoZW4gTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb3BlcmF0aW9uYWwgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgTkFUIGFuZCBwZWRpdCBhY3Rpb25zLiBBbmQsIGFzIHdlIGtub3csIGJvdGggTkFUIGFuZCBwZWRpdCBhcmUgdHJpZ2dlcmVkIHRocm91Z2ggdHJhZmZpYyBjb250cm9sICh0YykgY29tbWFuZHMsIG1lYW5pbmcgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IGFjY2Vzc2libGUuIFRoaXMgaXMgYSBwZXJmZWN0IHNjZW5hcmlvIGZvciBpbmplY3RpbmcgY3JhZnRlZCBwYWNrZXRzIHRvIHRyaWdnZXIgdGhpcyBtb2RpZmllZCBiZWhhdmlvciBhbmQgZGlzY292ZXIgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuTGV0J3MgbG9nIHRoaXMgY2hhbmdlIGFzIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQ0NywiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDk6MTQuMTA2MzgxMTc5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTMyODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX05BVFwiLFxuICAgIFwiTkVUX0FDVF9QRURJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9uYXRfYWN0XCIsXG4gICAgXCJ0Y2ZfcGVkaXRfYWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBgbmZfcmVzZXRfY3Qoc2tiKWAgdG8gYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgIHdoZW4gTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzY2hlZHVsaW5nIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHRyYWZmaWMgY29udHJvbCAodGMpIGNvbW1hbmRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9BQ1RfTkFUXCIsXG4gICAgXCJORVRfQUNUX1BFRElUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX25hdF9hY3RcIixcbiAgICBcInRjZl9wZWRpdF9hY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGBuZl9yZXNldF9jdChza2IpYCB0byBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAgd2hlbiBMMy9MNCBoZWFkZXJzIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxpbmcgYWN0aW9ucyAoTkFUIGFuZCBwZWRpdCkgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgdHJhZmZpYyBjb250cm9sICh0YykgY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA5OjE0LjIxMzkyMzA5NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNTg1NDEzNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowOToxNC4yMTQ1MzI0NzVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAyNTc5MjY0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGNvbm50cmFjayBzdGF0ZSB0cmFja2luZyB3aGVuIHBhY2tldHMgYXJlIG1vZGlmaWVkIGJ5IHRjIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpLiBJdCBkb2VzIHNvIGJ5IGNhbGxpbmcgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGNsZWFyIHRoZSBjb25udHJhY2sgc3RhdGUgaWYgTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwYWNrZXQgbWV0YWRhdGEgKHNrYi1cXHUwMDNlbmZjdCkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gc2tiIG1hbmlwdWxhdGlvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOWNmZDc2ODhkY2QzNTQ0MjhkNWMwM2MzOWExYWQwMmJiMzFhYWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MDc6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X25hdC5jIGIvbmV0L3NjaGVkL2FjdF9uYXQuY1xuaW5kZXggYWJiMzMyZGVlODM2ZC4uMGMzZDNiODlkMzQ5OSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfbmF0LmNcbisrKyBiL25ldC9zY2hlZC9hY3RfbmF0LmNcbkBAIC0yNTcsNiArMjU3LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9uYXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHR9XG4gXG4gb3V0OlxuK1x0bmZfcmVzZXRfY3Qoc2tiKTtcbiBcdHJldHVybiBhY3Rpb247XG4gXG4gZHJvcDpcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbmluZGV4IGQ0ZDQ3YTk5MjFmNDUuLmIwNzkyNTdjMmI3YjYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbisrKyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xuQEAgLTM4Niw2ICszODYsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c3RydWN0IHRjZl9wZWRpdCAqcCA9IHRvX3BlZGl0KGEpO1xuIFx0c3RydWN0IHRjZl9wZWRpdF9rZXlfZXggKnRrZXlfZXg7XG4gXHRzdHJ1Y3QgdGNmX3BlZGl0X3Bhcm1zICpwYXJtcztcbitcdGJvb2wgbDNfbDRfY2hhbmdlZCA9IGZhbHNlO1xuIFx0c3RydWN0IHRjX3BlZGl0X2tleSAqdGtleTtcbiBcdGludCBpO1xuIFxuQEAgLTM5OCw3ICszOTksNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dGtleV9leCA9IHBhcm1zLVx1MDAzZXRjZnBfa2V5c19leDtcbiBcbiBcdGZvciAoaSA9IHBhcm1zLVx1MDAzZXRjZnBfbmtleXM7IGkgXHUwMDNlIDA7IGktLSwgdGtleSsrKSB7XG4tXHRcdGludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbjtcbitcdFx0aW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuLCBud19vZmZzZXQ7XG4gXHRcdGludCBvZmZzZXQgPSB0a2V5LVx1MDAzZW9mZjtcbiBcdFx0aW50IGhvZmZzZXQgPSAwO1xuIFx0XHR1MzIgY3VyX3ZhbCwgdmFsO1xuQEAgLTQxOCw2ICs0MTksOCBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdGdvdG8gYmFkO1xuIFx0XHR9XG4gXG4rXHRcdG53X29mZnNldCA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpO1xuK1xuIFx0XHRpZiAodGtleS1cdTAwM2VvZmZtYXNrKSB7XG4gXHRcdFx0dTggKmQsIF9kO1xuIFx0XHRcdGludCBhdF9vZmZzZXQ7XG5AQCAtNDg1LDYgKzQ4OCwxOSBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR9XG4gXG4gXHRcdHB1dF91bmFsaWduZWQoKGN1cl92YWwgXHUwMDI2IHRrZXktXHUwMDNlbWFzaykgXiB2YWwsIHB0cik7XG4rXG4rXHRcdC8qIFRyYWNrIGlmIEwzIG9yIEw0IGhlYWRlcnMgd2VyZSBtb2RpZmllZDpcbitcdFx0ICogLSBEaXJlY3QgTDMvTDQgaGVhZGVyIHR5cGVzXG4rXHRcdCAqIC0gRVRIIGhlYWRlciB0eXBlIHdpdGggb2Zmc2V0L2xlbmd0aCByZWFjaGluZyBpbnRvIEwzL0w0XG4rXHRcdCAqL1xuK1x0XHRpZiAoaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9ORVRXT1JLIHx8XG4rXHRcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX0lQNCB8fFxuK1x0XHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDYgfHxcbitcdFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfVENQIHx8XG4rXHRcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1VEUCB8fFxuK1x0XHQgICAgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfRVRIIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIHdyaXRlX29mZnNldCArIChpbnQpc2l6ZW9mKCpwdHIpIFx1MDAzZSBud19vZmZzZXQpKVxuK1x0XHRcdGwzX2w0X2NoYW5nZWQgPSB0cnVlO1xuIFx0fVxuIFxuIFx0Z290byBkb25lO1xuQEAgLTQ5Miw2ICs1MDgsOSBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIGJhZDpcbiBcdHRjZl9hY3Rpb25faW5jX292ZXJsaW1pdF9xc3RhdHMoXHUwMDI2cC1cdTAwM2Vjb21tb24pO1xuIGRvbmU6XG4rXHRpZiAobDNfbDRfY2hhbmdlZClcbitcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbitcbiBcdHJldHVybiBwYXJtcy1cdTAwM2VhY3Rpb247XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cbmluZGV4IDhhYjQ4ZGVmODliNmEuLjE4YTc3Mzc0ODM1ODAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvblxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cbkBAIC03NDIsNSArNzQyLDE3MyBAQFxuICAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4gICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBjbHNhY3RcIlxuICAgICAgICAgXVxuKyAgICB9LFxuKyAgICB7XG4rICAgICAgICBcImlkXCI6IFwiYzJhOVwiLFxuKyAgICAgICAgXCJuYW1lXCI6IFwiVmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBwZWRpdCBtb2RpZmllcyBJUCBwcm90b2NvbFwiLFxuKyAgICAgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgICAgICAgXCJjdFwiLFxuKyAgICAgICAgICAgIFwicGVkaXRcIixcbisgICAgICAgICAgICBcInNjYXB5XCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogW1xuKyAgICAgICAgICAgICAgICBcIm5zUGx1Z2luXCIsXG4rICAgICAgICAgICAgICAgIFwic2NhcHlQbHVnaW5cIlxuKyAgICAgICAgICAgIF1cbisgICAgICAgIH0sXG4rICAgICAgICBcInNldHVwXCI6IFtcbisgICAgICAgICAgICBbXG4rICAgICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgICAgICAwLFxuKyAgICAgICAgICAgICAgICAxLFxuKyAgICAgICAgICAgICAgICAyLFxuKyAgICAgICAgICAgICAgICAyNTVcbisgICAgICAgICAgICBdLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCIsXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtcCBpY21wIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBpcCBwcm90b2NvbCBzZXQgMSBwaXBlIGFjdGlvbiBjc3VtIGlwNGggY29udGludWVcIixcbisgICAgICAgIFwic2NhcHlcIjoge1xuKyAgICAgICAgICAgIFwiaWZhY2VcIjogXCIkREVWMFwiLFxuKyAgICAgICAgICAgIFwiY291bnRcIjogMSxcbisgICAgICAgICAgICBcInBhY2tldFwiOiBcIkV0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0nMTAuMC4wLjEwJyxkc3Q9JzEwLjAuMC4yMCcscHJvdG89NikvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9J1MnKVwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiaXB0YWJsZXMtc2F2ZSAtYyAtdCByYXcgfCBncmVwICdjdHN0YXRlIElOVkFMSUQnXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcIl5cXFxcWzE6NDBcXFxcXVwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuKyAgICB7XG4rICAgICAgICBcImlkXCI6IFwiZDNiOFwiLFxuKyAgICAgICAgXCJuYW1lXCI6IFwiVmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBUQ1AgcG9ydCBtb2RpZmljYXRpb25cIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgICAgICAgIFwiY3RcIixcbisgICAgICAgICAgICBcInBlZGl0XCIsXG4rICAgICAgICAgICAgXCJzY2FweVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFtcbisgICAgICAgICAgICAgICAgXCJuc1BsdWdpblwiLFxuKyAgICAgICAgICAgICAgICBcInNjYXB5UGx1Z2luXCJcbisgICAgICAgICAgICBdXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgW1xuKyAgICAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICAgICAgMCxcbisgICAgICAgICAgICAgICAgMSxcbisgICAgICAgICAgICAgICAgMixcbisgICAgICAgICAgICAgICAgMjU1XG4rICAgICAgICAgICAgXSxcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgdGNwIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgaXBfcHJvdG8gdGNwIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgdGNwIHNwb3J0IHNldCA5OTk5IHBpcGVcIixcbisgICAgICAgIFwic2NhcHlcIjoge1xuKyAgICAgICAgICAgIFwiaWZhY2VcIjogXCIkREVWMFwiLFxuKyAgICAgICAgICAgIFwiY291bnRcIjogMSxcbisgICAgICAgICAgICBcInBhY2tldFwiOiBcIkV0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0nMTAuMC4wLjEwJyxkc3Q9JzEwLjAuMC4yMCcpL1RDUChzcG9ydD0xMjM0LGRwb3J0PTgwLGZsYWdzPSdTJylcIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBJTlZBTElEJ1wiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJeXFxcXFsxOjQwXFxcXF1cIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCJcbisgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImExYjJcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBjb25udHJhY2sgTk9UIHJlc2V0IHdoZW4gcGVkaXQgbW9kaWZpZXMgb25seSBNQUNcIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgICAgICAgIFwiY3RcIixcbisgICAgICAgICAgICBcInBlZGl0XCIsXG4rICAgICAgICAgICAgXCJzY2FweVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFtcbisgICAgICAgICAgICAgICAgXCJuc1BsdWdpblwiLFxuKyAgICAgICAgICAgICAgICBcInNjYXB5UGx1Z2luXCJcbisgICAgICAgICAgICBdXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgW1xuKyAgICAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICAgICAgMCxcbisgICAgICAgICAgICAgICAgMSxcbisgICAgICAgICAgICAgICAgMixcbisgICAgICAgICAgICAgICAgMjU1XG4rICAgICAgICAgICAgXSxcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgaWNtcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIE5FVyAtaiBEUk9QXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBldGggc3JjIHNldCAxMToyMjozMzo0NDo1NTo2NiBwaXBlXCIsXG4rICAgICAgICBcInNjYXB5XCI6IHtcbisgICAgICAgICAgICBcImlmYWNlXCI6IFwiJERFVjBcIixcbisgICAgICAgICAgICBcImNvdW50XCI6IDEsXG4rICAgICAgICAgICAgXCJwYWNrZXRcIjogXCJFdGhlcihzcmM9J2FhOmJiOmNjOmRkOmVlOmZmJyx0eXBlPTB4ODAwKS9JUChzcmM9JzEwLjAuMC4xMScsZHN0PScxMC4wLjAuMjEnKS9JQ01QKClcIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBORVcnXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcIl5cXFxcWzE6MjhcXFxcXVwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuKyAgICB7XG4rICAgICAgICBcImlkXCI6IFwiYjdmNFwiLFxuKyAgICAgICAgXCJuYW1lXCI6IFwiVmVyaWZ5IGNvbm50cmFjayByZXNldCB3aGVuIEVUSCB3cml0ZSBleHRlbmRzIGludG8gSVAgbGF5ZXJcIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgICAgICAgIFwiY3RcIixcbisgICAgICAgICAgICBcInBlZGl0XCIsXG4rICAgICAgICAgICAgXCJzY2FweVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFtcbisgICAgICAgICAgICAgICAgXCJuc1BsdWdpblwiLFxuKyAgICAgICAgICAgICAgICBcInNjYXB5UGx1Z2luXCJcbisgICAgICAgICAgICBdXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgW1xuKyAgICAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICAgICAgMCxcbisgICAgICAgICAgICAgICAgMSxcbisgICAgICAgICAgICAgICAgMixcbisgICAgICAgICAgICAgICAgMjU1XG4rICAgICAgICAgICAgXSxcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBJTlZBTElEIC1qIERST1BcIixcbisgICAgICAgICAgICBcIiRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3NcIlxuKyAgICAgICAgXSxcbisgICAgICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIG9mZnNldCAxMiB1MzIgc2V0IDB4MDgwMDQ1MDAgcGlwZSBjc3VtIGlwNGggY29udGludWVcIixcbisgICAgICAgIFwic2NhcHlcIjoge1xuKyAgICAgICAgICAgIFwiaWZhY2VcIjogXCIkREVWMFwiLFxuKyAgICAgICAgICAgIFwiY291bnRcIjogMSxcbisgICAgICAgICAgICBcInBhY2tldFwiOiBcIkV0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0nMTAuMC4wLjEzJyxkc3Q9JzEwLjAuMC4yMycpL0lDTVAoKVwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiaXB0YWJsZXMtc2F2ZSAtdCByYXcgLWMgfCBncmVwICdjdHN0YXRlIElOVkFMSUQnXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcIl5cXFxcWzE6MjhcXFxcXVwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIlxuKyAgICAgICAgXVxuICAgICB9XG4gXVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHlcbmluZGV4IDUxMWQ2NmMzNmEyYTAuLjE5YjhhMWZkMWM3MTYgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHlcbkBAIC02MDAsNiArNjAwLDE4IEBAIGRlZiBtcF9iaW5zKGFsbHRlc3RzKTpcbiBcbiAgICAgcmV0dXJuIChzZXJpYWwsIHBhcmFsbGVsKVxuIFxuK21wX3BtID0gTm9uZVxuK21wX2FyZ3MgPSBOb25lXG4rXG4rZGVmIF9fbXBfaW5pdF9fKHBtLCBhcmdzKTpcbisgICAgXCJcIlwiXG4rICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2Ugd2hlbiBlYWNoIHdvcmtlciBwcm9jZXNzIHN0YXJ0cy5cbisgICAgSXQgc2V0cyB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBpbiB0aGUgY2hpbGQgcHJvY2VzcydzIG1lbW9yeSBzcGFjZS5cbisgICAgXCJcIlwiXG4rICAgIGdsb2JhbCBtcF9wbSwgbXBfYXJnc1xuKyAgICBtcF9wbSA9IHBtXG4rICAgIG1wX2FyZ3MgPSBhcmdzXG4rXG4gZGVmIF9fbXBfcnVubmVyKHRlc3RzKTpcbiAgICAgKF8sIHRzcikgPSB0ZXN0X3J1bm5lcihtcF9wbSwgbXBfYXJncywgdGVzdHMpXG4gICAgIHJldHVybiB0c3IuX3Rlc3RzdWl0ZVxuQEAgLTYxNSwxNCArNjI3LDEzIEBAIGRlZiB0ZXN0X3J1bm5lcl9tcChwbSwgYXJncywgYWxsdGVzdHMpOlxuICAgICBwcmludChcIkV4ZWN1dGluZyB7fSB0ZXN0cyBpbiBwYXJhbGxlbCBhbmQge30gaW4gc2VyaWFsXCIuZm9ybWF0KGxlbihwYXJhbGxlbCksIGxlbihzZXJpYWwpKSlcbiAgICAgcHJpbnQoXCJVc2luZyB7fSBiYXRjaGVzIGFuZCB7fSB3b3JrZXJzXCIuZm9ybWF0KGxlbihiYXRjaGVzKSwgYXJncy5tcCkpXG4gXG4tICAgICMgV2UgY2FuJ3QgcGlja2xlIHRoZXNlIG9iamVjdHMgc28gd29ya2Fyb3VuZCB0aGVtXG4tICAgIGdsb2JhbCBtcF9wbVxuLSAgICBtcF9wbSA9IHBtXG4tXG4tICAgIGdsb2JhbCBtcF9hcmdzXG4tICAgIG1wX2FyZ3MgPSBhcmdzXG4tXG4tICAgIHdpdGggUG9vbChhcmdzLm1wKSBhcyBwOlxuKyAgICAjIFVzZSB0aGUgJ2luaXRpYWxpemVyJyB0byBwYXNzIHRoZSB1bnBpY2tsZWFibGUvc2hhcmVkIG9iamVjdHNcbisgICAgIyB0byBlYWNoIHdvcmtlciBwcm9jZXNzIGV4YWN0bHkgb25jZSB1cG9uIHN0YXJ0dXAuXG4rICAgIHdpdGggUG9vbChcbisgICAgICAgIHByb2Nlc3Nlcz1hcmdzLm1wLFxuKyAgICAgICAgaW5pdGlhbGl6ZXI9X19tcF9pbml0X18sXG4rICAgICAgICBpbml0YXJncz0ocG0sIGFyZ3MpXG4rICAgICkgYXMgcDpcbiAgICAgICAgIHByZXMgPSBwLm1hcChfX21wX3J1bm5lciwgYmF0Y2hlcylcbiBcbiAgICAgdHNyID0gVGVzdFN1aXRlUmVwb3J0KClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA5OjE0LjIxNDUzNDE4NVoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI1Nzg5MjkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbm50cmFjayBTdGF0ZSBSZXNldCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIG92ZXIgdGhpcyBwYXRjaC4gSXQgZm9jdXNlcyBvbiBgbmV0L3NjaGVkL2FjdF9uYXQuY2AgYW5kIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgY2FsbGluZyBgbmZfcmVzZXRfY3Qoc2tiKWAgaW4gdGhvc2UgYWN0aW9ucy4gSW4gdGhlIE5BVCBhY3Rpb24sIGl0J3MgYSBkaXJlY3QgY2FsbCBiZWZvcmUgcmV0dXJuaW5nLiBGb3IgdGhlIHBlZGl0IGFjdGlvbiwgaXQncyBjb25kaXRpb25hbCwgdHJpZ2dlcmVkIGlmIGVpdGhlciBMMyBvciBMNCBoZWFkZXJzIGhhdmUgYmVlbiB0b3VjaGVkLCBiYXNlZCBvbiBjaGVja2luZyBgaHR5cGVgIGFuZCBgd3JpdGVfb2Zmc2V0YC4gVGhleSBhbHNvIHVwZGF0ZWQgc29tZSB0ZXN0cyBhbmQgZml4ZWQgYSBtdWx0aXByb2Nlc3NpbmcgaXNzdWUgaW4gdGhlIHRlc3Rpbmcgc2NyaXB0cywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgdG8gc2VlLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cyB3aXRoIGFueSBrZXJuZWwgcGF0Y2gsIGlzIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEgYW5kIGNhbiBsZWFkIHRvIHNlcmlvdXMgdnVsbmVyYWJpbGl0aWVzLiBCdXQsIGRpZ2dpbmcgZGVlcGVyLCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhpcyBwYXRjaCBpcyAqbm90KiBpbnRyb2R1Y2luZyBzdWNoIHJpc2tzLiBgbmZfcmVzZXRfY3Qoc2tiKWAgc2ltcGx5IGNsZWFycyB0aGUgY29ubnRyYWNrIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgYHNrYmAuIEl0J3MgZXNzZW50aWFsbHkgYSByZXNldC5cblxuVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzLCBubyBuZXcgYWxsb2NhdGlvbnMsIG5vdGhpbmcgYmVpbmcgc2VudCB0byB1c2Vyc3BhY2UuIEl0IGlzIGp1c3QgZGVhbGluZyB3aXRoIGNvbm50cmFjayBzdGF0ZSBjaGFuZ2VzLiBUaGF0J3MgYSBnb29kIHNpZ24sIHNvIGl0IHNob3VsZCBub3QgaW50cm9kdWNlIHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBjaGVja2VkIHRoZSBkZWZpbml0aW9uIG9mIGBuZl9yZXNldF9jdGAgKGl0J3MgZWl0aGVyIGlubGluZSBpbiBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAgb3Igd2l0aGluIGBpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLmhgKS4gSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBvcGVyYXRpb246IGl0IGNhbGxzIGBuZl9jb25udHJhY2tfcHV0KHNrYi1cdTAwM2VuZmN0KWAgYW5kIHRoZW4gc2V0cyBgc2tiLVx1MDAzZW5mY3RgIHRvIGBOVUxMYC4gTm8gZmFuY3kgbWVtb3J5IG1hbmlwdWxhdGlvbiB0aGVyZTsgYWxsIG9wZXJhdGlvbnMgaW52b2x2ZSBzdHJ1Y3R1cmVzIGFscmVhZHkgbWFuYWdlZCB3aXRoaW4gdGhlIGtlcm5lbC5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBzaG91bGQgKm5vdCogdHJpZ2dlciBhIGBOZWVkc0tNU0FOYCBmbGFnLiBJdCBpcyBwdXJlbHkgYSBsb2dpYyBmaXggZm9yIGNvbm50cmFjayBzdGF0ZSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zLiBJJ20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byBza2IgbWFuaXB1bGF0aW9uLiBJIHdpbGwgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gbWFyayB0aGUgcGF0Y2ggYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzOTQsIk91dHB1dFRva2VucyI6MTU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDk6MjQuNDcyNDMxMzc2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBjb25udHJhY2sgc3RhdGUgdHJhY2tpbmcgd2hlbiBwYWNrZXRzIGFyZSBtb2RpZmllZCBieSB0YyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KS4gSXQgZG9lcyBzbyBieSBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byBjbGVhciB0aGUgY29ubnRyYWNrIHN0YXRlIGlmIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcGFja2V0IG1ldGFkYXRhIChza2ItXFx1MDAzZW5mY3QpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgYnVncyByZWxhdGVkIHRvIHNrYiBtYW5pcHVsYXRpb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgY29ubnRyYWNrIHN0YXRlIHRyYWNraW5nIHdoZW4gcGFja2V0cyBhcmUgbW9kaWZpZWQgYnkgdGMgYWN0aW9ucyAoTkFUIGFuZCBwZWRpdCkuIEl0IGRvZXMgc28gYnkgY2FsbGluZyBgbmZfcmVzZXRfY3Qoc2tiKWAgdG8gY2xlYXIgdGhlIGNvbm50cmFjayBzdGF0ZSBpZiBMMy9MNCBoZWFkZXJzIGFyZSBtb2RpZmllZC4gVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBhY2tldCBtZXRhZGF0YSAoc2tiLVxcdTAwM2VuZmN0KSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byBza2IgbWFuaXB1bGF0aW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-19 20:49:31 +0000 UTC FinishedAt: 2026-08-19 21:09:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT", "NET_ACT_NAT", "NET_ACT_PEDIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_ACT", "NET_ACT_NAT", "NET_ACT_PEDIT" ], "series_id": "3c039f83-8cb5-47ad-ba4b-fe051ee2c90d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_nat_act", "tcf_pedit_act" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX05BVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX1BFRElUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX25hdF9hY3QmIzM0OywKICAgICYjMzQ7dGNmX3BlZGl0X2FjdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNvbm50cmFjayBzdGF0ZSB0cmFja2luZyB3aGVuIHBhY2tldHMgYXJlIG1vZGlmaWVkIGJ5IHRjIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpLiBJdCBkb2VzIHNvIGJ5IGNhbGxpbmcgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGNsZWFyIHRoZSBjb25udHJhY2sgc3RhdGUgaWYgTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwYWNrZXQgbWV0YWRhdGEgKHNrYi1cdTAwM2VuZmN0KSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byBza2IgbWFuaXB1bGF0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGBuZl9yZXNldF9jdChza2IpYCB0byBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAgd2hlbiBMMy9MNCBoZWFkZXJzIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxpbmcgYWN0aW9ucyAoTkFUIGFuZCBwZWRpdCkgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgdHJhZmZpYyBjb250cm9sICh0YykgY29tbWFuZHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhOWNmZDc2ODhkY2QzNTQ0MjhkNWMwM2MzOWExYWQwMmJiMzFhYWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MDc6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmNcbmluZGV4IGFiYjMzMmRlZTgzNmQuLjBjM2QzYjg5ZDM0OTkgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X25hdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X25hdC5jXG5AQCAtMjU3LDYgJiM0MzsyNTcsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX25hdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdH1cbiBcbiBvdXQ6XG4mIzQzO1x0bmZfcmVzZXRfY3Qoc2tiKTtcbiBcdHJldHVybiBhY3Rpb247XG4gXG4gZHJvcDpcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbmluZGV4IGQ0ZDQ3YTk5MjFmNDUuLmIwNzkyNTdjMmI3YjYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xuQEAgLTM4Niw2ICYjNDM7Mzg2LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCB0Y2ZfcGVkaXQgKnAgPSB0b19wZWRpdChhKTtcbiBcdHN0cnVjdCB0Y2ZfcGVkaXRfa2V5X2V4ICp0a2V5X2V4O1xuIFx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XG4mIzQzO1x0Ym9vbCBsM19sNF9jaGFuZ2VkID0gZmFsc2U7XG4gXHRzdHJ1Y3QgdGNfcGVkaXRfa2V5ICp0a2V5O1xuIFx0aW50IGk7XG4gXG5AQCAtMzk4LDcgJiM0MzszOTksNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dGtleV9leCA9IHBhcm1zLVx1MDAzZXRjZnBfa2V5c19leDtcbiBcbiBcdGZvciAoaSA9IHBhcm1zLVx1MDAzZXRjZnBfbmtleXM7IGkgXHUwMDNlIDA7IGktLSwgdGtleSYjNDM7JiM0MzspIHtcbi1cdFx0aW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuO1xuJiM0MztcdFx0aW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuLCBud19vZmZzZXQ7XG4gXHRcdGludCBvZmZzZXQgPSB0a2V5LVx1MDAzZW9mZjtcbiBcdFx0aW50IGhvZmZzZXQgPSAwO1xuIFx0XHR1MzIgY3VyX3ZhbCwgdmFsO1xuQEAgLTQxOCw2ICYjNDM7NDE5LDggQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRnb3RvIGJhZDtcbiBcdFx0fVxuIFxuJiM0MztcdFx0bndfb2Zmc2V0ID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNrYik7XG4mIzQzO1xuIFx0XHRpZiAodGtleS1cdTAwM2VvZmZtYXNrKSB7XG4gXHRcdFx0dTggKmQsIF9kO1xuIFx0XHRcdGludCBhdF9vZmZzZXQ7XG5AQCAtNDg1LDYgJiM0Mzs0ODgsMTkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRwdXRfdW5hbGlnbmVkKChjdXJfdmFsIFx1MDAyNiB0a2V5LVx1MDAzZW1hc2spIF4gdmFsLCBwdHIpO1xuJiM0MztcbiYjNDM7XHRcdC8qIFRyYWNrIGlmIEwzIG9yIEw0IGhlYWRlcnMgd2VyZSBtb2RpZmllZDpcbiYjNDM7XHRcdCAqIC0gRGlyZWN0IEwzL0w0IGhlYWRlciB0eXBlc1xuJiM0MztcdFx0ICogLSBFVEggaGVhZGVyIHR5cGUgd2l0aCBvZmZzZXQvbGVuZ3RoIHJlYWNoaW5nIGludG8gTDMvTDRcbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfTkVUV09SSyB8fFxuJiM0MztcdFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfSVA0IHx8XG4mIzQzO1x0XHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDYgfHxcbiYjNDM7XHRcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1RDUCB8fFxuJiM0MztcdFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfVURQIHx8XG4mIzQzO1x0XHQgICAgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfRVRIIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICB3cml0ZV9vZmZzZXQgJiM0MzsgKGludClzaXplb2YoKnB0cikgXHUwMDNlIG53X29mZnNldCkpXG4mIzQzO1x0XHRcdGwzX2w0X2NoYW5nZWQgPSB0cnVlO1xuIFx0fVxuIFxuIFx0Z290byBkb25lO1xuQEAgLTQ5Miw2ICYjNDM7NTA4LDkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBiYWQ6XG4gXHR0Y2ZfYWN0aW9uX2luY19vdmVybGltaXRfcXN0YXRzKFx1MDAyNnAtXHUwMDNlY29tbW9uKTtcbiBkb25lOlxuJiM0MztcdGlmIChsM19sNF9jaGFuZ2VkKVxuJiM0MztcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbiYjNDM7XG4gXHRyZXR1cm4gcGFybXMtXHUwMDNlYWN0aW9uO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uXG5pbmRleCA4YWI0OGRlZjg5YjZhLi4xOGE3NzM3NDgzNTgwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uXG5AQCAtNzQyLDUgJiM0Mzs3NDIsMTczIEBAXG4gICAgICAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuICAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGNsc2FjdFwmIzM0O1xuICAgICAgICAgXVxuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7YzJhOVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtWZXJpZnkgY29ubnRyYWNrIHJlc2V0IGFmdGVyIHBlZGl0IG1vZGlmaWVzIElQIHByb3RvY29sXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2N0XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwZWRpdFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7c2NhcHlcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O3BsdWdpbnNcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cmVxdWlyZXNcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O25zUGx1Z2luXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7c2NhcHlQbHVnaW5cJiMzNDtcbiYjNDM7ICAgICAgICAgICAgXVxuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgW1xuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIDAsXG4mIzQzOyAgICAgICAgICAgICAgICAxLFxuJiM0MzsgICAgICAgICAgICAgICAgMixcbiYjNDM7ICAgICAgICAgICAgICAgIDI1NVxuJiM0MzsgICAgICAgICAgICBdLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtpcHRhYmxlcyAtdCByYXcgLUZcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBJTlZBTElEIC1qIERST1BcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3NcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIGlwIHByb3RvY29sIHNldCAxIHBpcGUgYWN0aW9uIGNzdW0gaXA0aCBjb250aW51ZVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtzY2FweVwmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtpZmFjZVwmIzM0OzogXCYjMzQ7JERFVjBcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2NvdW50XCYjMzQ7OiAxLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwYWNrZXRcJiMzNDs6IFwmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMCYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMCYjMzk7LHByb3RvPTYpL1RDUChzcG9ydD0xMjM0LGRwb3J0PTgwLGZsYWdzPSYjMzk7UyYjMzk7KVwmIzM0O1xuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIElOVkFMSUQmIzM5O1wmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O15cXFxcWzE6NDBcXFxcXVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2lwdGFibGVzIC10IHJhdyAtRlwmIzM0O1xuJiM0MzsgICAgICAgIF1cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB7XG4mIzQzOyAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2QzYjhcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7VmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBUQ1AgcG9ydCBtb2RpZmljYXRpb25cJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7Y3RcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3BlZGl0XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtzY2FweVwmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7cGx1Z2luc1wmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtyZXF1aXJlc1wmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7bnNQbHVnaW5cJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtzY2FweVBsdWdpblwmIzM0O1xuJiM0MzsgICAgICAgICAgICBdXG4mIzQzOyAgICAgICAgfSxcbiYjNDM7ICAgICAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBbXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgMCxcbiYjNDM7ICAgICAgICAgICAgICAgIDEsXG4mIzQzOyAgICAgICAgICAgICAgICAyLFxuJiM0MzsgICAgICAgICAgICAgICAgMjU1XG4mIzQzOyAgICAgICAgICAgIF0sXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2lwdGFibGVzIC10IHJhdyAtRlwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgdGNwIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCYjMzQ7XG4mIzQzOyAgICAgICAgXSxcbiYjNDM7ICAgICAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgaXBfcHJvdG8gdGNwIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgdGNwIHNwb3J0IHNldCA5OTk5IHBpcGVcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7c2NhcHlcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aWZhY2VcJiMzNDs6IFwmIzM0OyRERVYwXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtjb3VudFwmIzM0OzogMSxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cGFja2V0XCYjMzQ7OiBcJiMzNDtFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JiMzOTsxMC4wLjAuMTAmIzM5Oyxkc3Q9JiMzOTsxMC4wLjAuMjAmIzM5OykvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9JiMzOTtTJiMzOTspXCYjMzQ7XG4mIzQzOyAgICAgICAgfSxcbiYjNDM7ICAgICAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0O2lwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAmIzM5O2N0c3RhdGUgSU5WQUxJRCYjMzk7XCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDteXFxcXFsxOjQwXFxcXF1cJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GXCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7YTFiMlwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtWZXJpZnkgY29ubnRyYWNrIE5PVCByZXNldCB3aGVuIHBlZGl0IG1vZGlmaWVzIG9ubHkgTUFDXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2N0XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwZWRpdFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7c2NhcHlcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O3BsdWdpbnNcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cmVxdWlyZXNcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O25zUGx1Z2luXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7c2NhcHlQbHVnaW5cJiMzNDtcbiYjNDM7ICAgICAgICAgICAgXVxuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgW1xuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIDAsXG4mIzQzOyAgICAgICAgICAgICAgICAxLFxuJiM0MzsgICAgICAgICAgICAgICAgMixcbiYjNDM7ICAgICAgICAgICAgICAgIDI1NVxuJiM0MzsgICAgICAgICAgICBdLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtpcHRhYmxlcyAtdCByYXcgLUZcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBORVcgLWogRFJPUFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgZXRoIHNyYyBzZXQgMTE6MjI6MzM6NDQ6NTU6NjYgcGlwZVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtzY2FweVwmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtpZmFjZVwmIzM0OzogXCYjMzQ7JERFVjBcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2NvdW50XCYjMzQ7OiAxLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwYWNrZXRcJiMzNDs6IFwmIzM0O0V0aGVyKHNyYz0mIzM5O2FhOmJiOmNjOmRkOmVlOmZmJiMzOTssdHlwZT0weDgwMCkvSVAoc3JjPSYjMzk7MTAuMC4wLjExJiMzOTssZHN0PSYjMzk7MTAuMC4wLjIxJiMzOTspL0lDTVAoKVwmIzM0O1xuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIE5FVyYjMzk7XCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7XlxcXFxbMToyOFxcXFxdXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GXCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7YjdmNFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtWZXJpZnkgY29ubnRyYWNrIHJlc2V0IHdoZW4gRVRIIHdyaXRlIGV4dGVuZHMgaW50byBJUCBsYXllclwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtjdFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cGVkaXRcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3NjYXB5XCYjMzQ7XG4mIzQzOyAgICAgICAgXSxcbiYjNDM7ICAgICAgICBcJiMzNDtwbHVnaW5zXCYjMzQ7OiB7XG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3JlcXVpcmVzXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtuc1BsdWdpblwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O3NjYXB5UGx1Z2luXCYjMzQ7XG4mIzQzOyAgICAgICAgICAgIF1cbiYjNDM7ICAgICAgICB9LFxuJiM0MzsgICAgICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFtcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICAwLFxuJiM0MzsgICAgICAgICAgICAgICAgMSxcbiYjNDM7ICAgICAgICAgICAgICAgIDIsXG4mIzQzOyAgICAgICAgICAgICAgICAyNTVcbiYjNDM7ICAgICAgICAgICAgXSxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2Ugb2Zmc2V0IDEyIHUzMiBzZXQgMHgwODAwNDUwMCBwaXBlIGNzdW0gaXA0aCBjb250aW51ZVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtzY2FweVwmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtpZmFjZVwmIzM0OzogXCYjMzQ7JERFVjBcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2NvdW50XCYjMzQ7OiAxLFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwYWNrZXRcJiMzNDs6IFwmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMyYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMyYjMzk7KS9JQ01QKClcJiMzNDtcbiYjNDM7ICAgICAgICB9LFxuJiM0MzsgICAgICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7aXB0YWJsZXMtc2F2ZSAtdCByYXcgLWMgfCBncmVwICYjMzk7Y3RzdGF0ZSBJTlZBTElEJiMzOTtcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDteXFxcXFsxOjI4XFxcXF1cJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtpcHRhYmxlcyAtdCByYXcgLUZcJiMzNDtcbiYjNDM7ICAgICAgICBdXG4gICAgIH1cbiBdXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxuaW5kZXggNTExZDY2YzM2YTJhMC4uMTliOGExZmQxYzcxNiAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxuQEAgLTYwMCw2ICYjNDM7NjAwLDE4IEBAIGRlZiBtcF9iaW5zKGFsbHRlc3RzKTpcbiBcbiAgICAgcmV0dXJuIChzZXJpYWwsIHBhcmFsbGVsKVxuIFxuJiM0MzttcF9wbSA9IE5vbmVcbiYjNDM7bXBfYXJncyA9IE5vbmVcbiYjNDM7XG4mIzQzO2RlZiBfX21wX2luaXRfXyhwbSwgYXJncyk6XG4mIzQzOyAgICBcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7ICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2Ugd2hlbiBlYWNoIHdvcmtlciBwcm9jZXNzIHN0YXJ0cy5cbiYjNDM7ICAgIEl0IHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MmIzM5O3MgbWVtb3J5IHNwYWNlLlxuJiM0MzsgICAgXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzOyAgICBnbG9iYWwgbXBfcG0sIG1wX2FyZ3NcbiYjNDM7ICAgIG1wX3BtID0gcG1cbiYjNDM7ICAgIG1wX2FyZ3MgPSBhcmdzXG4mIzQzO1xuIGRlZiBfX21wX3J1bm5lcih0ZXN0cyk6XG4gICAgIChfLCB0c3IpID0gdGVzdF9ydW5uZXIobXBfcG0sIG1wX2FyZ3MsIHRlc3RzKVxuICAgICByZXR1cm4gdHNyLl90ZXN0c3VpdGVcbkBAIC02MTUsMTQgJiM0Mzs2MjcsMTMgQEAgZGVmIHRlc3RfcnVubmVyX21wKHBtLCBhcmdzLCBhbGx0ZXN0cyk6XG4gICAgIHByaW50KFwmIzM0O0V4ZWN1dGluZyB7fSB0ZXN0cyBpbiBwYXJhbGxlbCBhbmQge30gaW4gc2VyaWFsXCYjMzQ7LmZvcm1hdChsZW4ocGFyYWxsZWwpLCBsZW4oc2VyaWFsKSkpXG4gICAgIHByaW50KFwmIzM0O1VzaW5nIHt9IGJhdGNoZXMgYW5kIHt9IHdvcmtlcnNcJiMzNDsuZm9ybWF0KGxlbihiYXRjaGVzKSwgYXJncy5tcCkpXG4gXG4tICAgICMgV2UgY2FuJiMzOTt0IHBpY2tsZSB0aGVzZSBvYmplY3RzIHNvIHdvcmthcm91bmQgdGhlbVxuLSAgICBnbG9iYWwgbXBfcG1cbi0gICAgbXBfcG0gPSBwbVxuLVxuLSAgICBnbG9iYWwgbXBfYXJnc1xuLSAgICBtcF9hcmdzID0gYXJnc1xuLVxuLSAgICB3aXRoIFBvb2woYXJncy5tcCkgYXMgcDpcbiYjNDM7ICAgICMgVXNlIHRoZSAmIzM5O2luaXRpYWxpemVyJiMzOTsgdG8gcGFzcyB0aGUgdW5waWNrbGVhYmxlL3NoYXJlZCBvYmplY3RzXG4mIzQzOyAgICAjIHRvIGVhY2ggd29ya2VyIHByb2Nlc3MgZXhhY3RseSBvbmNlIHVwb24gc3RhcnR1cC5cbiYjNDM7ICAgIHdpdGggUG9vbChcbiYjNDM7ICAgICAgICBwcm9jZXNzZXM9YXJncy5tcCxcbiYjNDM7ICAgICAgICBpbml0aWFsaXplcj1fX21wX2luaXRfXyxcbiYjNDM7ICAgICAgICBpbml0YXJncz0ocG0sIGFyZ3MpXG4mIzQzOyAgICApIGFzIHA6XG4gICAgICAgICBwcmVzID0gcC5tYXAoX19tcF9ydW5uZXIsIGJhdGNoZXMpXG4gXG4gICAgIHRzciA9IFRlc3RTdWl0ZVJlcG9ydCgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX05BVCYjMzQ7LAogICAgJiMzNDtORVRfQUNUX1BFRElUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX25hdF9hY3QmIzM0OywKICAgICYjMzQ7dGNmX3BlZGl0X2FjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGBuZl9yZXNldF9jdChza2IpYCB0byBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAgd2hlbiBMMy9MNCBoZWFkZXJzIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxpbmcgYWN0aW9ucyAoTkFUIGFuZCBwZWRpdCkgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgdHJhZmZpYyBjb250cm9sICh0YykgY29tbWFuZHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhOWNmZDc2ODhkY2QzNTQ0MjhkNWMwM2MzOWExYWQwMmJiMzFhYWY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTkgMjE6MDc6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X25hdC5jIGIvbmV0L3NjaGVkL2FjdF9uYXQuYwppbmRleCBhYmIzMzJkZWU4MzZkLi4wYzNkM2I4OWQzNDk5IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X25hdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfbmF0LmMKQEAgLTI1Nyw2ICYjNDM7MjU3LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9uYXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJfQogCiBvdXQ6CiYjNDM7CW5mX3Jlc2V0X2N0KHNrYik7CiAJcmV0dXJuIGFjdGlvbjsKIAogZHJvcDoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfcGVkaXQuYyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwppbmRleCBkNGQ0N2E5OTIxZjQ1Li5iMDc5MjU3YzJiN2I2IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCkBAIC0zODYsNiAmIzQzOzM4Niw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJc3RydWN0IHRjZl9wZWRpdCAqcCA9IHRvX3BlZGl0KGEpOwogCXN0cnVjdCB0Y2ZfcGVkaXRfa2V5X2V4ICp0a2V5X2V4OwogCXN0cnVjdCB0Y2ZfcGVkaXRfcGFybXMgKnBhcm1zOwomIzQzOwlib29sIGwzX2w0X2NoYW5nZWQgPSBmYWxzZTsKIAlzdHJ1Y3QgdGNfcGVkaXRfa2V5ICp0a2V5OwogCWludCBpOwogCkBAIC0zOTgsNyAmIzQzOzM5OSw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJdGtleV9leCA9IHBhcm1zLSZndDt0Y2ZwX2tleXNfZXg7CiAKIAlmb3IgKGkgPSBwYXJtcy0mZ3Q7dGNmcF9ua2V5czsgaSAmZ3Q7IDA7IGktLSwgdGtleSYjNDM7JiM0MzspIHsKLQkJaW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuOwomIzQzOwkJaW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuLCBud19vZmZzZXQ7CiAJCWludCBvZmZzZXQgPSB0a2V5LSZndDtvZmY7CiAJCWludCBob2Zmc2V0ID0gMDsKIAkJdTMyIGN1cl92YWwsIHZhbDsKQEAgLTQxOCw2ICYjNDM7NDE5LDggQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCWdvdG8gYmFkOwogCQl9CiAKJiM0MzsJCW53X29mZnNldCA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpOwomIzQzOwogCQlpZiAodGtleS0mZ3Q7b2ZmbWFzaykgewogCQkJdTggKmQsIF9kOwogCQkJaW50IGF0X29mZnNldDsKQEAgLTQ4NSw2ICYjNDM7NDg4LDE5IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJCX0KIAogCQlwdXRfdW5hbGlnbmVkKChjdXJfdmFsICZhbXA7IHRrZXktJmd0O21hc2spIF4gdmFsLCBwdHIpOwomIzQzOwomIzQzOwkJLyogVHJhY2sgaWYgTDMgb3IgTDQgaGVhZGVycyB3ZXJlIG1vZGlmaWVkOgomIzQzOwkJICogLSBEaXJlY3QgTDMvTDQgaGVhZGVyIHR5cGVzCiYjNDM7CQkgKiAtIEVUSCBoZWFkZXIgdHlwZSB3aXRoIG9mZnNldC9sZW5ndGggcmVhY2hpbmcgaW50byBMMy9MNAomIzQzOwkJICovCiYjNDM7CQlpZiAoaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9ORVRXT1JLIHx8CiYjNDM7CQkgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDQgfHwKJiM0MzsJCSAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX0lQNiB8fAomIzQzOwkJICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfVENQIHx8CiYjNDM7CQkgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9VRFAgfHwKJiM0MzsJCSAgICAoaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9FVEggJmFtcDsmYW1wOwomIzQzOwkJICAgICB3cml0ZV9vZmZzZXQgJiM0MzsgKGludClzaXplb2YoKnB0cikgJmd0OyBud19vZmZzZXQpKQomIzQzOwkJCWwzX2w0X2NoYW5nZWQgPSB0cnVlOwogCX0KIAogCWdvdG8gZG9uZTsKQEAgLTQ5Miw2ICYjNDM7NTA4LDkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIGJhZDoKIAl0Y2ZfYWN0aW9uX2luY19vdmVybGltaXRfcXN0YXRzKCZhbXA7cC0mZ3Q7Y29tbW9uKTsKIGRvbmU6CiYjNDM7CWlmIChsM19sNF9jaGFuZ2VkKQomIzQzOwkJbmZfcmVzZXRfY3Qoc2tiKTsKJiM0MzsKIAlyZXR1cm4gcGFybXMtJmd0O2FjdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbgppbmRleCA4YWI0OGRlZjg5YjZhLi4xOGE3NzM3NDgzNTgwIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbgomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbgpAQCAtNzQyLDUgJiM0Mzs3NDIsMTczIEBACiAgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwogICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBjbHNhY3QmIzM0OwogICAgICAgICBdCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDtjMmE5JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtWZXJpZnkgY29ubnRyYWNrIHJlc2V0IGFmdGVyIHBlZGl0IG1vZGlmaWVzIElQIHByb3RvY29sJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2N0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtwZWRpdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7c2NhcHkmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7bnNQbHVnaW4mIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtzY2FweVBsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICAgICAgXQomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgIFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIDAsCiYjNDM7ICAgICAgICAgICAgICAgIDEsCiYjNDM7ICAgICAgICAgICAgICAgIDIsCiYjNDM7ICAgICAgICAgICAgICAgIDI1NQomIzQzOyAgICAgICAgICAgIF0sCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBJTlZBTElEIC1qIERST1AmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIGlwIHByb3RvY29sIHNldCAxIHBpcGUgYWN0aW9uIGNzdW0gaXA0aCBjb250aW51ZSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtzY2FweSYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtpZmFjZSYjMzQ7OiAmIzM0OyRERVYwJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjb3VudCYjMzQ7OiAxLAomIzQzOyAgICAgICAgICAgICYjMzQ7cGFja2V0JiMzNDs6ICYjMzQ7RXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPSYjMzk7MTAuMC4wLjEwJiMzOTssZHN0PSYjMzk7MTAuMC4wLjIwJiMzOTsscHJvdG89NikvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9JiMzOTtTJiMzOTspJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIElOVkFMSUQmIzM5OyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDteXFxbMTo0MFxcXSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZDNiOCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBUQ1AgcG9ydCBtb2RpZmljYXRpb24mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y3QmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3BlZGl0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtzY2FweSYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtuc1BsdWdpbiYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3NjYXB5UGx1Z2luJiMzNDsKJiM0MzsgICAgICAgICAgICBdCiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgMCwKJiM0MzsgICAgICAgICAgICAgICAgMSwKJiM0MzsgICAgICAgICAgICAgICAgMiwKJiM0MzsgICAgICAgICAgICAgICAgMjU1CiYjNDM7ICAgICAgICAgICAgXSwKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgdGNwIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgaXBfcHJvdG8gdGNwIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgdGNwIHNwb3J0IHNldCA5OTk5IHBpcGUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7c2NhcHkmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7aWZhY2UmIzM0OzogJiMzNDskREVWMCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y291bnQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O3BhY2tldCYjMzQ7OiAmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMCYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMCYjMzk7KS9UQ1Aoc3BvcnQ9MTIzNCxkcG9ydD04MCxmbGFncz0mIzM5O1MmIzM5OykmIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0O2lwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAmIzM5O2N0c3RhdGUgSU5WQUxJRCYjMzk7JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O15cXFsxOjQwXFxdJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7CiYjNDM7ICAgICAgICBdCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDthMWIyJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtWZXJpZnkgY29ubnRyYWNrIE5PVCByZXNldCB3aGVuIHBlZGl0IG1vZGlmaWVzIG9ubHkgTUFDJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2N0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtwZWRpdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7c2NhcHkmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7bnNQbHVnaW4mIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtzY2FweVBsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICAgICAgXQomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgIFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIDAsCiYjNDM7ICAgICAgICAgICAgICAgIDEsCiYjNDM7ICAgICAgICAgICAgICAgIDIsCiYjNDM7ICAgICAgICAgICAgICAgIDI1NQomIzQzOyAgICAgICAgICAgIF0sCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBORVcgLWogRFJPUCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgZXRoIHNyYyBzZXQgMTE6MjI6MzM6NDQ6NTU6NjYgcGlwZSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtzY2FweSYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtpZmFjZSYjMzQ7OiAmIzM0OyRERVYwJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjb3VudCYjMzQ7OiAxLAomIzQzOyAgICAgICAgICAgICYjMzQ7cGFja2V0JiMzNDs6ICYjMzQ7RXRoZXIoc3JjPSYjMzk7YWE6YmI6Y2M6ZGQ6ZWU6ZmYmIzM5Oyx0eXBlPTB4ODAwKS9JUChzcmM9JiMzOTsxMC4wLjAuMTEmIzM5Oyxkc3Q9JiMzOTsxMC4wLjAuMjEmIzM5OykvSUNNUCgpJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIE5FVyYjMzk7JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O15cXFsxOjI4XFxdJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7CiYjNDM7ICAgICAgICBdCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDtiN2Y0JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtWZXJpZnkgY29ubnRyYWNrIHJlc2V0IHdoZW4gRVRIIHdyaXRlIGV4dGVuZHMgaW50byBJUCBsYXllciYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7cGVkaXQmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3NjYXB5JiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0O25zUGx1Z2luJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7c2NhcHlQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgICAgIF0KJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAwLAomIzQzOyAgICAgICAgICAgICAgICAxLAomIzQzOyAgICAgICAgICAgICAgICAyLAomIzQzOyAgICAgICAgICAgICAgICAyNTUKJiM0MzsgICAgICAgICAgICBdLAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2Ugb2Zmc2V0IDEyIHUzMiBzZXQgMHgwODAwNDUwMCBwaXBlIGNzdW0gaXA0aCBjb250aW51ZSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtzY2FweSYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtpZmFjZSYjMzQ7OiAmIzM0OyRERVYwJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjb3VudCYjMzQ7OiAxLAomIzQzOyAgICAgICAgICAgICYjMzQ7cGFja2V0JiMzNDs6ICYjMzQ7RXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPSYjMzk7MTAuMC4wLjEzJiMzOTssZHN0PSYjMzk7MTAuMC4wLjIzJiMzOTspL0lDTVAoKSYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7aXB0YWJsZXMtc2F2ZSAtdCByYXcgLWMgfCBncmVwICYjMzk7Y3RzdGF0ZSBJTlZBTElEJiMzOTsmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7XlxcWzE6MjhcXF0mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDsKJiM0MzsgICAgICAgIF0KICAgICB9CiBdCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5CmluZGV4IDUxMWQ2NmMzNmEyYTAuLjE5YjhhMWZkMWM3MTYgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5CkBAIC02MDAsNiAmIzQzOzYwMCwxOCBAQCBkZWYgbXBfYmlucyhhbGx0ZXN0cyk6CiAKICAgICByZXR1cm4gKHNlcmlhbCwgcGFyYWxsZWwpCiAKJiM0MzttcF9wbSA9IE5vbmUKJiM0MzttcF9hcmdzID0gTm9uZQomIzQzOwomIzQzO2RlZiBfX21wX2luaXRfXyhwbSwgYXJncyk6CiYjNDM7ICAgICYjMzQ7JiMzNDsmIzM0OwomIzQzOyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIHdoZW4gZWFjaCB3b3JrZXIgcHJvY2VzcyBzdGFydHMuCiYjNDM7ICAgIEl0IHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MmIzM5O3MgbWVtb3J5IHNwYWNlLgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgZ2xvYmFsIG1wX3BtLCBtcF9hcmdzCiYjNDM7ICAgIG1wX3BtID0gcG0KJiM0MzsgICAgbXBfYXJncyA9IGFyZ3MKJiM0MzsKIGRlZiBfX21wX3J1bm5lcih0ZXN0cyk6CiAgICAgKF8sIHRzcikgPSB0ZXN0X3J1bm5lcihtcF9wbSwgbXBfYXJncywgdGVzdHMpCiAgICAgcmV0dXJuIHRzci5fdGVzdHN1aXRlCkBAIC02MTUsMTQgJiM0Mzs2MjcsMTMgQEAgZGVmIHRlc3RfcnVubmVyX21wKHBtLCBhcmdzLCBhbGx0ZXN0cyk6CiAgICAgcHJpbnQoJiMzNDtFeGVjdXRpbmcge30gdGVzdHMgaW4gcGFyYWxsZWwgYW5kIHt9IGluIHNlcmlhbCYjMzQ7LmZvcm1hdChsZW4ocGFyYWxsZWwpLCBsZW4oc2VyaWFsKSkpCiAgICAgcHJpbnQoJiMzNDtVc2luZyB7fSBiYXRjaGVzIGFuZCB7fSB3b3JrZXJzJiMzNDsuZm9ybWF0KGxlbihiYXRjaGVzKSwgYXJncy5tcCkpCiAKLSAgICAjIFdlIGNhbiYjMzk7dCBwaWNrbGUgdGhlc2Ugb2JqZWN0cyBzbyB3b3JrYXJvdW5kIHRoZW0KLSAgICBnbG9iYWwgbXBfcG0KLSAgICBtcF9wbSA9IHBtCi0KLSAgICBnbG9iYWwgbXBfYXJncwotICAgIG1wX2FyZ3MgPSBhcmdzCi0KLSAgICB3aXRoIFBvb2woYXJncy5tcCkgYXMgcDoKJiM0MzsgICAgIyBVc2UgdGhlICYjMzk7aW5pdGlhbGl6ZXImIzM5OyB0byBwYXNzIHRoZSB1bnBpY2tsZWFibGUvc2hhcmVkIG9iamVjdHMKJiM0MzsgICAgIyB0byBlYWNoIHdvcmtlciBwcm9jZXNzIGV4YWN0bHkgb25jZSB1cG9uIHN0YXJ0dXAuCiYjNDM7ICAgIHdpdGggUG9vbCgKJiM0MzsgICAgICAgIHByb2Nlc3Nlcz1hcmdzLm1wLAomIzQzOyAgICAgICAgaW5pdGlhbGl6ZXI9X19tcF9pbml0X18sCiYjNDM7ICAgICAgICBpbml0YXJncz0ocG0sIGFyZ3MpCiYjNDM7ICAgICkgYXMgcDoKICAgICAgICAgcHJlcyA9IHAubWFwKF9fbXBfcnVubmVyLCBiYXRjaGVzKQogCiAgICAgdHNyID0gVGVzdFN1aXRlUmVwb3J0KCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM5NwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBQYXRjaCBmb3IgTmV0d29yayBTY2hlZHVsaW5nIEFjdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtBaCwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIGBuZXQvc2NoZWQvYWN0X25hdC5jYCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AuJiMzNDsgSW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIGluamVjdGluZyBgbmZfcmVzZXRfY3Qoc2tiKTtgIGludG8gdGhlIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCBmdW5jdGlvbnMsIGJ1dCBvbmx5IGlmIEwzL0w0IGhlYWRlcnMgaGF2ZSBiZWVuIG1vZGlmaWVkLiBUaGlzIHRlbGxzIG1lIHdlJiMzOTtyZSBwb3RlbnRpYWxseSB0YWxraW5nIGFib3V0IGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gaG93IGNvbm5lY3Rpb24gdHJhY2tpbmcgaW50ZXJhY3RzIHdpdGggTkFUIGFuZCBwYWNrZXQgZWRpdGluZyB3aXRoaW4gdGhlIHRyYWZmaWMgY29udHJvbCBmcmFtZXdvcmsuIFRoaXMgaXMgaW1wb3J0YW50IHN0dWZmLCBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5LiBUaGVzZSBhcmUgZmVhdHVyZXMgZXhwb3NlZCB0aHJvdWdoIGB0Y2AsIHNvIHRoaXMgcGF0Y2ggY291bGQgaGF2ZSBzb21lIHByZXR0eSBicm9hZCBpbXBsaWNhdGlvbnMuCgpOZXh0IHN0ZXA6IGxldCYjMzk7cyBkaWcgaW50byBgbmV0L3NjaGVkL2FjdF9uYXQuY2AgYW5kIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgIHRvIGNvbmZpcm0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgbW9kaWZ5aW5nIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCwgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyB0b3VjaGVkIGhlcmUuIFJlYWNoaW5nIHRoZXNlIHZpYSBgdGNgIGNvbW1hbmRzLi4udGhhdCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGJlIGFibGUgdG8gbWFwIHRoZXNlIGNoYW5nZXMgdG8gaG93IHRoZXnigJlyZSBjb25maWd1cmVkLgoKVGltZSB0byBsb29rIHVwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0LCBgbmV0L3NjaGVkL2FjdF9uYXQuY2AgaXMgbGlua2VkIHRvIGBDT05GSUdfTkVUX0FDVF9OQVRgLCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AgaXMsIG5hdHVyYWxseSwgYENPTkZJR19ORVRfQUNUX1BFRElUYC4gTm93IEkgaGF2ZSB0byBnbyBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlnIG9wdGlvbnMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX05FVF9BQ1RfTkFUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MzU4PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjM1OTpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0zNjAtQ09ORklHX05FVF9BQ1RfQlBGPW1cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTM3ND1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzozNzU6Q09ORklHX05FVF9BQ1RfTkFUPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMzc2LUNPTkZJR19ORVRfQUNUX0JQRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MTczPUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzoxNzQ6Q09ORklHX05FVF9BQ1RfTkFUPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTE3NS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9Nzg9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjc5OkNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy04MC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc9NzQ9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjc1OkNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy03Ni1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTIwMT1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjIwMjpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTIwMy1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZz0yMDU9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MjA2OkNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwNy1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnPTIwMj1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjIwMzpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTIwNC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz0yNjc9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MjY4OkNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTI2OS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTQwNz1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjQwODpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTQwOS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTM5Nz1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjM5ODpDT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTM5OS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4tLVxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oPTQ3PXN0YXRpYyBpbmxpbmUgaW50IHRjX2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0xMDQtI2VuZGlmXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6MTA1OiNpZiBJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX05BVClcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0xMDYtXHRpZiAoYS1cdTAwM2VvcHMtXHUwMDNlYWN0ID09IHRjZl9uYXRfYWN0KVxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0yMDM9c3RhdGljIGlubGluZSB2b2lkIHRjX3dyYXBwZXJfaW5pdCh2b2lkKVxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0yMjgtXHRcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTVBMUykgJiM0MztcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDoyMjk6XHRcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTkFUKSAmIzQzO1xuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTIzMC1cdFx0SVNfQlVJTFRJTihDT05GSUdfTkVUX0FDVF9UVU5ORUxfS0VZKSAmIzQzO1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkVUX0FDVF9TQU1QTEUpXHQmIzQzOz0gYWN0X3NhbXBsZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05FVF9BQ1RfTkFUKVx0JiM0Mzs9IGFjdF9uYXQub1xubmV0L3NjaGVkL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVx0JiM0Mzs9IGFjdF9wZWRpdC5vXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc9ODg9Q09ORklHX05FVF9BQ1RfU0FNUExFPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnOjg5OkNPTkZJR19ORVRfQUNUX05BVD1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy05MC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ2MwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgQ09ORklHX05FVF9BQ1RfUEVESVRgKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgQ09ORklHX05FVF9BQ1RfUEVESVRgIG9wdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHdoYXQgdGhlIGN1cnJlbnQgc3RhdGUgaXMgYW5kIHdoYXQgaXQgY29udHJvbHMuIEkmIzM5O20gYXNzdW1pbmcgdGhpcyByZWxhdGVzIHRvIHRoZSBwYWNrZXQgZWRpdGluZyBhY3Rpb24sIGxpa2VseSB3aXRoaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcmssIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbi4gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGtlcm5lbCBjb25maWcgYW5kIGNyb3NzLXJlZmVyZW5jaW5nIHRoYXQgd2l0aCB0aGUgcmVsZXZhbnQgTmV0ZmlsdGVyIGRvY3VtZW50YXRpb24gb3IgY29kZS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbmFsaXR5IC0gZG9lcyBpdCBwcm92aWRlIGFyYml0cmFyeSBwYWNrZXQgbW9kaWZpY2F0aW9uLCBvciBpcyBpdCBtb3JlIGNvbnN0cmFpbmVkPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGlmIHRoaXMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZD8gU2VjdXJpdHkgaW1wbGljYXRpb25zIGFyZSBpbW1lZGlhdGVseSBhdCB0aGUgZm9yZWZyb250IG9mIG15IG1pbmQsIGFzIHBhY2tldCBtYW5pcHVsYXRpb24gaXMgYSBzZW5zaXRpdmUgYXJlYS4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBhdHRhY2sgc3VyZmFjZSB0aGF0IHRoaXMgb3B0aW9uIG1heSBleHBvc2UsIGlmIGFueS4gSXMgdGhlcmUgYW55IHBhcnRpY3VsYXIgaGFyZHdhcmUgdGhpcyBpcyBvcHRpbWl6ZWQgZm9yPwoKTmV4dCwgSSYjMzk7bGwgY29uc2lkZXIgaXRzIHJvbGUgaW4gdmFyaW91cyBuZXR3b3JrIHNldHVwcy4gSXMgaXQgY29tbW9ubHkgdXNlZCBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cywgb3IgaXMgaXQgbW9yZSBvZiBhIG5pY2hlIGZlYXR1cmU/IFdoYXQgYXJlIHRoZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucz8gRG9lcyBpdCBpbnRlZ3JhdGUgd2VsbCB3aXRoIG90aGVyIE5ldGZpbHRlciBjb21wb25lbnRzLCBsaWtlIGlwdGFibGVzIG9yIG5mdGFibGVzPyBJIHdhbnQgdG8gYXNzZXNzIGlmIGl0JiMzOTtzIGNvbnNpZGVyZWQgYSByZWxpYWJsZSBvcHRpb24uCgpJIGFsc28gd2FudCB0byBrbm93IHdoZXRoZXIgaXQgaGFzIGFueSBrbm93biBpc3N1ZXMgb3IgbGltaXRhdGlvbnMsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgY29uY3VycmVuY3kgb3IgZWRnZSBjYXNlcy4gQXJlIHRoZXJlIGFueSBrbm93biBleHBsb2l0cyBhc3NvY2lhdGVkIHdpdGggaXQsIG9yIGhhcyBpdCBiZWVuIHRoZSBzdWJqZWN0IG9mIGFueSB2dWxuZXJhYmlsaXR5IGRpc2Nsb3N1cmVzPwoKRmluYWxseSwgd2hhdCBhcmUgdGhlIHVzZS1jYXNlcyB3aGVyZSB0aGlzIG9wdGlvbiBpcyBlc3NlbnRpYWwgb3IgaGlnaGx5IGJlbmVmaWNpYWw/IFdoYXQgYXJlIHRoZSBhbHRlcm5hdGl2ZXMsIGFuZCBob3cgZG8gdGhleSBjb21wYXJlIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgYW5kIGZsZXhpYmlsaXR5PyBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBpbmZvcm1hdGlvbiBvbiB0aGUgTGludXggS2VybmVsIE1haWxpbmcgTGlzdCB0aGF0IG1heSBpbmRpY2F0ZSBhbnkgcHJvYmxlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX05FVF9BQ1RfUEVESVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MTc0PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzoxNzU6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMTc2LUNPTkZJR19ORVRfQUNUX1NJTVA9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTc5PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZzo4MDpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy04MS1DT05GSUdfTkVUX0FDVF9TS0JFRElUPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz03NT1DT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6NzY6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctNzctQ09ORklHX05FVF9BQ1RfU0tCRURJVD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTIwMj1DT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjIwMzpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMjA0LUNPTkZJR19ORVRfQUNUX1NJTVA9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9MjA2PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjIwNzpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwOC1DT05GSUdfTkVUX0FDVF9TSU1QPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MjAzPUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6MjA0OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0yMDUtQ09ORklHX05FVF9BQ1RfU0lNUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnPTk2PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG5hcmNoL21pcHMvY29uZmlncy9yYjUzMl9kZWZjb25maWc6OTc6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnLTk4LUNPTkZJR19NVEQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MjY4PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjI2OTpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTI3MC1DT05GSUdfTkVUX0FDVF9TSU1QPW1cbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9NDA4PUNPTkZJR19ORVRfQUNUX05BVD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NDA5OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy00MTAtQ09ORklHX05FVF9BQ1RfU0lNUD1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTM5OD1DT05GSUdfTkVUX0FDVF9OQVQ9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjM5OTpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNDAwLUNPTkZJR19ORVRfQUNUX1NJTVA9bVxuLS1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9MTM4PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjEzOTpDT05GSUdfTkVUX0FDVF9QRURJVD1tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnLTE0MC1DT05GSUdfRldfTE9BREVSPW1cbi0tXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg9NDc9c3RhdGljIGlubGluZSBpbnQgdGNfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4tLVxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTYwLSNlbmRpZlxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjYxOiNpZiBJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX1BFRElUKVxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTYyLVx0aWYgKGEtXHUwMDNlb3BzLVx1MDAzZWFjdCA9PSB0Y2ZfcGVkaXRfYWN0KVxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0yMDM9c3RhdGljIGlubGluZSB2b2lkIHRjX3dyYXBwZXJfaW5pdCh2b2lkKVxuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0yMTctXHRcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTUlSUkVEKSAmIzQzO1xuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjIxODpcdFx0SVNfQlVJTFRJTihDT05GSUdfTkVUX0FDVF9QRURJVCkgJiM0MztcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0yMTktXHRcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfU0tCRURJVCkgJiM0Mztcbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX05FVF9BQ1RfTkFUKVx0JiM0Mzs9IGFjdF9uYXQub1xubmV0L3NjaGVkL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVx0JiM0Mzs9IGFjdF9wZWRpdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX05FVF9BQ1RfU0lNUClcdCYjNDM7PSBhY3Rfc2ltcGxlLm9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTY5PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjcwOkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWctNzEtQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWT1tXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnPTIyPUNPTkZJR19ORVRfQUNUX01QTFM9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnOjIzOkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZy0yNC1DT05GSUdfTkVUX0FDVF9QT0xJQ0U9bVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc9MTU9Q09ORklHX05FVF9BQ1RfQ1NVTT1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnOjE2OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWctMTctQ09ORklHX05FVF9DTFNfQUNUPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZz04OT1DT05GSUdfTkVUX0FDVF9OQVQ9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc6OTA6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWctOTEtQ09ORklHX05FVF9BQ1RfU0lNUD1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUxNwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIE5ldHdvcmsgQWN0aW9uIE1vZHVsZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlc2UgbmV0d29yayBhY3Rpb24gbW9kdWxlcywgc3BlY2lmaWNhbGx5IGBORVRfQUNUX05BVGAgYW5kIGBORVRfQUNUX1BFRElUYC4gSSBrbm93IHRoZXJlIGFyZSBmdW5jdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0g4oCTIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCwgcmVzcGVjdGl2ZWx5LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQsIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2AgdG8gc2VlIGhvdyBgTkVUX0FDVF9OQVRgIGFuZCBgTkVUX0FDVF9QRURJVGAgYXJlIGRlZmluZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgbWlnaHQgaGF2ZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZWlyIGF2YWlsYWJpbGl0eSBhbmQgaG93IHRoZXkgY2FuIGJlIGNvbnRyb2xsZWQgZHVyaW5nIGtlcm5lbCBidWlsZHMsIHdoaWNoIGluIHR1cm4gaW5mb3JtcyBob3cgSSB1c2UgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0FDVF9OQVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NzUyPWNvbmZpZyBORVRfQUNUX1NBTVBMRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTc2My1cbm5ldC9zY2hlZC9LY29uZmlnOjc2NDpjb25maWcgTkVUX0FDVF9OQVRcbm5ldC9zY2hlZC9LY29uZmlnLTc2NS1cdHRyaXN0YXRlIFwmIzM0O1N0YXRlbGVzcyBOQVRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODU0CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQ2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIE5FVF9BQ1RfUEVESVQqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBgTkVUX0FDVF9QRURJVGAgaXMgZGVmaW5lZC4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cyB3aXRoIG5ldHdvcmtpbmcgcmVsYXRlZCBrZXJuZWwgZmVhdHVyZXMsIGlzIHRvIGxvb2sgaW4gdGhlIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgdXN1YWwgaG9tZSBmb3Igc2NoZWR1bGluZyBhbmQgdHJhZmZpYyBjb250cm9sIHJlbGF0ZWQgb3B0aW9ucy4gSSYjMzk7bSBhc3N1bWluZyBpdCBzaG91bGQgYmUgaW4gdGhlcmUsIGJ1dCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmU7IGEgcXVpY2sgY2hlY2sgd2lsbCBrZWVwIG1lIGZyb20gd2FzdGluZyB0aW1lIGlmIGl0JiMzOTtzIGJlZW4gbW92ZWQgZWxzZXdoZXJlIGluIGEgbGF0ZXIga2VybmVsIHZlcnNpb24gb3IgcmVuYW1lZC4gVGltZSB0byBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9BQ1RfUEVESVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTc3My1cbm5ldC9zY2hlZC9LY29uZmlnOjc3NDpjb25maWcgTkVUX0FDVF9QRURJVFxubmV0L3NjaGVkL0tjb25maWctNzc1LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEVkaXRpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTkVUX0FDVF9OQVQgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBndXRzIG9mIHRoZSBuZXR3b3JraW5nIHNjaGVkdWxlciBjb25maWd1cmF0aW9uLiBUaGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBzdXJyb3VuZGluZyBgTkVUX0FDVF9OQVRgLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGFscmVhZHkgaGF2ZSBhIGRlY2VudCBncmFzcCBvZiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIGJ1dCBhIHNwZWNpZmljIGRlcGVuZGVuY3kgY2hlY2sgaXMgYSBnb29kIHByYWN0aWNlIHRvIGVuc3VyZSB0aGUgc3lzdGVtIGlzIGJlaW5nIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgY3J1Y2lhbCBpbnRlcmNvbm5lY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHNjaGVkdWxpbmcgbG9naWMuIFNvLCBgbmV0L3NjaGVkL0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBUaGF0IGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGFuZCByZWxhdGlvbnNoaXBzIHRoYXQgZGVmaW5lIHdoZW4gYE5FVF9BQ1RfTkFUYCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQsIG1vcmUgaW1wb3J0YW50bHksICp3aHkqLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IG90aGVyIHJlbGF0ZWQgZmVhdHVyZXMsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgb3Iga2VybmVsIG1vZHVsZXMgdGhhdCBtaWdodCBoYXZlIGEgZGlyZWN0IGltcGFjdCBvbiB3aGV0aGVyIHRoaXMgc3BlY2lmaWMgYWN0aW9uIGlzIGF2YWlsYWJsZSBhbmQgd29ya2luZyBhcyBpbnRlbmRlZC4gVGhpcyBpcyBhYm91dCBtYWtpbmcgc3VyZSBhbGwgdGhlIHBpZWNlcyBmaXQgdG9nZXRoZXIgc2VhbWxlc3NseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzYwOlx0XG4gNzYxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA3NjI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9zYW1wbGUuXG4gNzYzOlx0XG4gNzY0Olx0Y29uZmlnIE5FVF9BQ1RfTkFUXG4gNzY1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTdGF0ZWxlc3MgTkFUXCYjMzQ7XG4gNzY2Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4gNzY3Olx0XHRoZWxwXG4gNzY4Olx0XHQgIFNheSBZIGhlcmUgdG8gZG8gc3RhdGVsZXNzIE5BVCBvbiBJUHY0IHBhY2tldHMuICBZb3Ugc2hvdWxkIHVzZVxuIDc2OTpcdFx0ICBuZXRmaWx0ZXIgZm9yIE5BVCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuIDc3MDpcdFxuIDc3MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNzcyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhY3RfbmF0LlxuIDc3MzpcdFxuIDc3NDpcdGNvbmZpZyBORVRfQUNUX1BFRElUXG4gNzc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRWRpdGluZ1wmIzM0O1xuIDc3NjpcdFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxuIDc3NzpcdFx0aGVscFxuIDc3ODpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIG1hbmdsZSB0aGUgY29udGVudCBvZiBwYWNrZXRzLlxuIDc3OTpcdFxuIDc4MDpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNzgxOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhY3RfcGVkaXQuXG4gNzgyOlx0XG4gNzgzOlx0Y29uZmlnIE5FVF9BQ1RfU0lNUFxuIDc4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltcGxlIEV4YW1wbGUgKERlYnVnKVwmIzM0O1xuIDc4NTpcdFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxuIDc4NjpcdFx0aGVscFxuIDc4NzpcdFx0ICBTYXkgWSBoZXJlIHRvIGFkZCBhIHNpbXBsZSBhY3Rpb24gZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuXG4gNzg4Olx0XHQgIEl0IGlzIG1lYW50IGFzIGFuIGV4YW1wbGUgYW5kIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuIEl0IHdpbGxcbiA3ODk6XHRcdCAgcHJpbnQgYSBjb25maWd1cmVkIHBvbGljeSBzdHJpbmcgZm9sbG93ZWQgYnkgdGhlIHBhY2tldCBjb3VudFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgzOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgRGVlcCBEaXZlKioKCkFscmlnaHQsIHRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGBORVRfQ0xTX0FDVGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSB6b29tIGluIG9uIGl0cyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmZWF0dXJlIG9yIG1vZHVsZSByZWxpZXMgdXBvbi4gQSBxdWljayBzY2FuIG9mIHRoZSBjb2RlLCBvciBwZXJoYXBzIGV2ZW4gYSBtZW50YWwgbWFwLCBzaG91bGQgcmV2ZWFsIHRoZSBjcnVjaWFsIGxpbmtzLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gYXNzZXNzICp0aG9zZSogZGVwZW5kZW5jaWVzLCBiZWNhdXNlIHRoZSByb290IHByb2JsZW0gaXMgbW9zdCBsaWtlbHkgc3RlbW1pbmcgZnJvbSBhbiB1bmRlcmx5aW5nIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgeWV0IGZ1bGx5IGNvbmZpZ3VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTX0FDVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAxLVxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzAzLVx0Ym9vbCBcJiMzNDtBY3Rpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYE5FVF9DTFNfQUNUYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRfQ0xTX0FDVGAuIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgdGhlIHJpZ2h0IHBsYWNlLCBidXQgYmV0dGVyIHRvIGJlIHN1cmUuIEkmIzM5O20gbG9va2luZyBmb3IgYW55IGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMgbGlrZSBvdGhlciBvcHRpb25zLCBzeW1ib2xzLCBvciBldmVuIG90aGVyIEtjb25maWcgZmlsZXMgdGhhdCBgTkVUX0NMU19BQ1RgIG1pZ2h0IHJlbHkgb24uIFRoaXMgaXMgbGlrZWx5IGEga2V5IGNvbXBvbmVudCBmb3IgdHJhZmZpYyBjbGFzc2lmaWNhdGlvbiBhbmQgYWN0aW9uLCBidXQgYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhbnkgbW9kaWZpY2F0aW9uIG9yIHRyb3VibGVzaG9vdGluZy4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoYXQgb3RoZXIgZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgdGhpcyBpcyBjb25uZWN0ZWQgdG8uIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCBsaWtlbHkgcG9pbnQgbWUgdG8gb3RoZXIgcmVsYXRlZCBvcHRpb25zIHRoYXQgbWF5IGhhdmUgYW4gZWZmZWN0IG9uIHRoaXMgZmVhdHVyZSwgb3Igb3RoZXIgbW9kdWxlcyB0aGF0IGFyZSBjbG9zZWx5IHJlbGF0ZWQuIFRoaXMgd2lsbCBwcm92aWRlIGNvbnRleHQsIGFuZCBoZWxwIGVuc3VyZSBJIGRvbiYjMzk7dCBicmVhayBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjk4Olx0XG4gNjk5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA3MDA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGVtX2lwdC5cbiA3MDE6XHRcbiA3MDI6XHRjb25maWcgTkVUX0NMU19BQ1RcbiA3MDM6XHRcdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xuIDcwNDpcdFx0c2VsZWN0IE5FVF9DTFNcbiA3MDU6XHRcdHNlbGVjdCBORVRfWEdSRVNTXG4gNzA2Olx0XHRoZWxwXG4gNzA3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRyYWZmaWMgY29udHJvbCBhY3Rpb25zLiBBY3Rpb25zXG4gNzA4Olx0XHQgIGdldCBhdHRhY2hlZCB0byBjbGFzc2lmaWVycyBhbmQgYXJlIGludm9rZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsXG4gNzA5Olx0XHQgIGNsYXNzaWZpY2F0aW9uLiBUaGV5IGFyZSB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgY2xhc3NpZmljYXRpb25cbiA3MTA6XHRcdCAgcmVzdWx0LCBpbnN0YW50bHkgZHJvcCBvciByZWRpcmVjdCBwYWNrZXRzLCBldGMuXG4gNzExOlx0XG4gNzEyOlx0XHQgIEEgcmVjZW50IHZlcnNpb24gb2YgdGhlIGlwcm91dGUyIHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gdXNlXG4gNzEzOlx0XHQgIGV4dGVuZGVkIG1hdGNoZXMuXG4gNzE0Olx0XG4gNzE1Olx0Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXG4gNzE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFBvbGljaW5nXCYjMzQ7XG4gNzE3Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjM1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKk5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gYE5FVF9DTFNfQUNUYCBpcyBhY3RpbmcgYXMgYSBCb29sZWFuIHN3aXRjaCwgZGVjaWRpbmcgd2hldGhlciB3ZSBlbmFibGUgYE5FVF9DTFNgIGFuZCBgTkVUX1hHUkVTU2AuIFRoaW5raW5nIGFib3V0IHdoYXQmIzM5O3MgYWN0dWFsbHkgbmVlZGVkIGluIHRoZSBicm9hZGVyIHBpY3R1cmUsIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlIHNlZW0gdG8gYmUgYE5FVF9BQ1RfTkFUYCwgYE5FVF9BQ1RfUEVESVRgLCBhbmQgb2YgY291cnNlLCBgTkVUX0NMU19BQ1RgIGl0c2VsZi4gTXkgZ3V0IHNheXMgd2UmIzM5O2xsIGFsc28gbmVlZCB0byBlbmFibGUgYE5FVF9TQ0hFRGAgdG8gZ2V0IHRoZSBzY2hlZHVsaW5nIGFzcGVjdHMgd29ya2luZy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgaGVhZGluZyBvdmVyIHRvIHRoZSB0b3Agb2YgYG5ldC9zY2hlZC9LY29uZmlnYCB0byBjb25maXJtIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsZXZhbnQgY29udGV4dCB0aGVyZS4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVHJhZmZpYyBjb250cm9sIGNvbmZpZ3VyYXRpb24uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkVUX1NDSEVEXG4gICA3Olx0XHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuICAgODpcdFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xuICAxMTpcdFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXG4gIDEyOlx0XHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXG4gIDEzOlx0XHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xuICAxNDpcdFx0ICBcJiMzNDtmYWlybHlcJiMzNDsgaGF2ZSBiZWVuIHByb3Bvc2VkLlxuICAxNTpcdFxuICAxNjpcdFx0ICBJZiB5b3Ugc2F5IE4gaGVyZSwgeW91IHdpbGwgZ2V0IHRoZSBzdGFuZGFyZCBwYWNrZXQgc2NoZWR1bGVyLCB3aGljaFxuICAxNzpcdFx0ICBpcyBhIEZJRk8gKGZpcnN0IGNvbWUsIGZpcnN0IHNlcnZlZCkuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZVxuICAxODpcdFx0ICBhYmxlIHRvIGNob29zZSBmcm9tIGFtb25nIHNldmVyYWwgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyB3aGljaCBjYW5cbiAgMTk6XHRcdCAgdGhlbiBiZSBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbmV0d29yayBkZXZpY2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3JcbiAgMjA6XHRcdCAgZXhhbXBsZSBpZiBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWFsIHRpbWUgZGV2aWNlcyB0aGF0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjIzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTmV0d29yayBTY2hlZHVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgZ29pbmcgdG8gaGluZ2Ugb24gYE5FVF9TQ0hFRGAuIFRoYXQmIzM5O3MgdGhlIGNvcmUuIFRvIGdldCB0aGlzIHRoaW5nIHdvcmtpbmcsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBORVRfU0NIRURgLCBhbmQgdGhlbiBJJiMzOTtsbCBkZWZpbml0ZWx5IHdhbnQgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfTkFUYCwgYW5kIGBORVRfQUNUX1BFRElUYCB0b28uIFRob3NlIGNvbmZpZ3MgYXJlIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhpcyB0eXBlIG9mIG5ldHdvcmsgdHJhZmZpYyBtYW5hZ2VtZW50LiBUaGUgdHdvIHByaW1hcnkgZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLiBUaGV5JiMzOTtyZSBwcm9iYWJseSB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkFUIGFuZCBwYWNrZXQgZWRpdGluZyBoYXBwZW4uCgpIb2xkIG9uLCBJIHNlZSBgbmZfcmVzZXRfY3Qoc2tiKWAgYmVpbmcgdXNlZC4gVGhhdCB0aHJvd3MgYSByZWQgZmxhZy4gSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgdXNlZCB0byByZXNldCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIHdvbiYjMzk7dCBjYXVzZSBhbnkgY29uZmxpY3RzIGFuZCBuZWVkcyB0byBiZSBzdXBwb3J0ZWQsIHdoYXQgTmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcz8gVGltZSB0byBkb3VibGUgY2hlY2sgdGhlIGluY2x1ZGVzLiBJcyBpdCBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAgb3IgYGluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaGAgdGhhdCBkZWZpbmVzIGl0PyBMZXQgbWUgY2hlY2sgdGhvc2UgZmlsZXMgZGlyZWN0bHksIGFuZCB2ZXJpZnkgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9yZXNldF9jdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9vdnBuL2lvLmM9MzU2PW5ldGRldl90eF90IG92cG5fbmV0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9vdnBuL2lvLmMtMzY2LVx0LyogcmVzZXQgbmV0ZmlsdGVyIHN0YXRlICovXG5kcml2ZXJzL25ldC9vdnBuL2lvLmM6MzY3Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvbmV0L292cG4vaW8uYy0zNjgtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjU2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNTc6XHRuZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNTgtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0zNTA9c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzc2LVx0XHRza2JfZHN0X2Ryb3Aoc2tiKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mzc3Olx0XHRuZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNzgtXHRcdHJldHVybiBza19yZWNlaXZlX3NrYihcdTAwMjZwby1cdTAwM2Vzaywgc2tiLCAwKTtcbi0tXG5kcml2ZXJzL25ldC90dW4uYz0xMDAzPXN0YXRpYyBuZXRkZXZfdHhfdCB0dW5fbmV0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC90dW4uYy0xMDYyLVxuZHJpdmVycy9uZXQvdHVuLmM6MTA2MzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5kcml2ZXJzL25ldC90dW4uYy0xMDY0LVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zMzM2PXN0YXRpYyBuZXRkZXZfdHhfdCBzdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTMzNzMtXHRcdHNrYl9kc3RfZHJvcChza2IpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjMzNzQ6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzM3NS1cdH1cbi0tXG5kcml2ZXJzL25ldC92cmYuYz0zODI9c3RhdGljIHZvaWQgdnJmX25mX3NldF91bnRyYWNrZWQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC92cmYuYy0zODctXG5kcml2ZXJzL25ldC92cmYuYzozODg6c3RhdGljIHZvaWQgdnJmX25mX3Jlc2V0X2N0KHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC92cmYuYy0zODkte1xuZHJpdmVycy9uZXQvdnJmLmMtMzkwLVx0aWYgKHNrYl9nZXRfbmZjdChza2IpID09IElQX0NUX1VOVFJBQ0tFRClcbmRyaXZlcnMvbmV0L3ZyZi5jOjM5MTpcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTM5Mi19XG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9Mzk1PXN0YXRpYyBpbnQgdnJmX2lwNl9sb2NhbF9vdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxuZHJpdmVycy9uZXQvdnJmLmMtMzk5LVxuZHJpdmVycy9uZXQvdnJmLmM6NDAwOlx0dnJmX25mX3Jlc2V0X2N0KHNrYik7XG5kcml2ZXJzL25ldC92cmYuYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9NDc1PXN0YXRpYyBpbnQgdnJmX2lwX2xvY2FsX291dChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbi0tXG5kcml2ZXJzL25ldC92cmYuYy00NzktXG5kcml2ZXJzL25ldC92cmYuYzo0ODA6XHR2cmZfbmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTQ4MS1cbi0tXG5kcml2ZXJzL25ldC92cmYuYz01Nzc9c3RhdGljIHZvaWQgdnJmX2ZpbmlzaF9kaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC92cmYuYy01OTUtXG5kcml2ZXJzL25ldC92cmYuYzo1OTY6XHR2cmZfbmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvbmV0L3ZyZi5jLTU5Ny19XG4tLVxuZHJpdmVycy9uZXQvdnJmLmM9NjAxPXN0YXRpYyBpbnQgdnJmX2ZpbmlzaF9vdXRwdXQ2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTYwOS1cbmRyaXZlcnMvbmV0L3ZyZi5jOjYxMDpcdHZyZl9uZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvdnJmLmMtNjExLVxuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jPTc5Nj1zdGF0aWMgaW50IHZyZl9maW5pc2hfb3V0cHV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3ZyZi5jLTgwNC1cbmRyaXZlcnMvbmV0L3ZyZi5jOjgwNTpcdHZyZl9uZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvdnJmLmMtODA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE5MDI9c3RhdGljIGJvb2wgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVfbm9fbmwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTk1NS1cdHNrYl9leHRfcmVzZXQoc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE5NTY6XHRuZl9yZXNldF9jdChza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTk1Ny1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXR4LmM9MTI2PW5ldGRldl90eF90IGN2bV9vY3RfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQtdHguYy0zNTAtXHRza2JfZXh0X3Jlc2V0KHNrYik7XG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXR4LmM6MzUxOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQtdHguYy0zNTItXHRza2JfcmVzZXRfcmVkaXJlY3Qoc2tiKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTUxMzM9c3RhdGljIGlubGluZSBib29sIHNrYl9oYXNfZXh0ZW5zaW9ucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKSB7IHJldHVybiBmYWxzZTsgfVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTEzNS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NTEzNjpzdGF0aWMgaW5saW5lIHZvaWQgbmZfcmVzZXRfY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTEzNy17XG4tLVxubmV0L2JhdG1hbi1hZHYvbWVzaC1pbnRlcmZhY2UuYz00MDc9dm9pZCBiYXRhZHZfaW50ZXJmYWNlX3J4KHN0cnVjdCBuZXRfZGV2aWNlICptZXNoX2lmYWNlLFxuLS1cbm5ldC9iYXRtYW4tYWR2L21lc2gtaW50ZXJmYWNlLmMtNDI2LVx0ICovXG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jOjQyNzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jLTQyOC1cbi0tXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jPTU4NT1zdGF0aWMgdW5zaWduZWQgaW50IGJyX25mX2xvY2FsX2luKHZvaWQgKnByaXYsXG4tLVxubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYy01OTUtXHRpZiAocHJvbWlzYykge1xubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYzo1OTY6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTU5Ny1cdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTYwNy1cdGlmIChXQVJOX09OX09OQ0UocmVmY291bnRfcmVhZChcdTAwMjZuZmN0LVx1MDAzZXVzZSkgIT0gMSkpIHtcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmM6NjA4Olx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYy02MDktXHRcdHJldHVybiBORl9BQ0NFUFQ7XG4tLVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jPTIzOT1zdGF0aWMgdW5zaWduZWQgaW50IG5mX2N0X2JyaWRnZV9wcmUodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjgyLVx0ZGVmYXVsdDpcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzoyODM6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjg0LVx0XHRuZl9jdF9zZXQoc2tiLCBOVUxMLCBJUF9DVF9VTlRSQUNLRUQpO1xuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYz0yOTQ9c3RhdGljIHVuc2lnbmVkIGludCBuZl9jdF9icmlkZ2VfaW4odm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzAxLVx0aWYgKHByb21pc2MpIHtcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzozMDI6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzAzLVx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuLS1cbm5ldC9jb3JlL2dyby5jPTY1ND1zdGF0aWMgdm9pZCBuYXBpX3JldXNlX3NrYihzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2NvcmUvZ3JvLmMtNjgyLVx0XHRza2JfZXh0X3Jlc2V0KHNrYik7XG5uZXQvY29yZS9ncm8uYzo2ODM6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvY29yZS9ncm8uYy02ODQtXHRcdHNrYi1cdTAwM2VzbG93X2dybyA9IDA7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTE2OT12b2lkIHNrYl9yZWxlYXNlX2hlYWRfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xMTg3LVx0fVxubmV0L2NvcmUvc2tidWZmLmM6MTE4ODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvY29yZS9za2J1ZmYuYy0xMTg5LVx0c2tiX2V4dF9yZXNldChza2IpO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE0OTU9dm9pZCBuYXBpX3NrYl9mcmVlX3N0b2xlbl9oZWFkKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTQ5Ny1cdGlmICh1bmxpa2VseShza2ItXHUwMDNlc2xvd19ncm8pKSB7XG5uZXQvY29yZS9za2J1ZmYuYzoxNDk4Olx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2NvcmUvc2tidWZmLmMtMTQ5OS1cdFx0c2tiX2RzdF9kcm9wKHNrYik7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9NjI3OD12b2lkIHNrYl9zY3J1Yl9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCB4bmV0KVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTYyODQtXHRza2JfZXh0X3Jlc2V0KHNrYik7XG5uZXQvY29yZS9za2J1ZmYuYzo2Mjg1Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTYyODYtXHRuZl9yZXNldF90cmFjZShza2IpO1xuLS1cbm5ldC9pcHY0L2luZXRfZnJhZ21lbnQuYz00MzM9aW50IGluZXRfZnJhZ19xdWV1ZV9pbnNlcnQoc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMtNDkyLVx0aWYgKG9mZnNldClcbm5ldC9pcHY0L2luZXRfZnJhZ21lbnQuYzo0OTM6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMtNDk0LVxuLS1cbm5ldC9pcHY0L2lwX2lucHV0LmM9MTg5PXZvaWQgaXBfcHJvdG9jb2xfZGVsaXZlcl9yY3Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcHJvdG9jb2wpXG4tLVxubmV0L2lwdjQvaXBfaW5wdXQuYy0yMDQtXHRcdFx0fVxubmV0L2lwdjQvaXBfaW5wdXQuYzoyMDU6XHRcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY0L2lwX2lucHV0LmMtMjA2LVx0XHR9XG4tLVxubmV0L2lwdjQvaXBtci5jPTE4Mzg9c3RhdGljIHZvaWQgaXBfZW5jYXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L2lwbXIuYy0xODYxLVx0bWVtc2V0KFx1MDAyNihJUENCKHNrYiktXHUwMDNlb3B0KSwgMCwgc2l6ZW9mKElQQ0Ioc2tiKS1cdTAwM2VvcHQpKTtcbm5ldC9pcHY0L2lwbXIuYzoxODYyOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY0L2lwbXIuYy0xODYzLX1cbi0tXG5uZXQvaXB2NC9pcG1yLmM9MjE4OT1pbnQgaXBfbXJfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pcG1yLmMtMjIzOC1cdFx0XHRpZiAobXJvdXRlX3NrKSB7XG5uZXQvaXB2NC9pcG1yLmM6MjIzOTpcdFx0XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2NC9pcG1yLmMtMjI0MC1cdFx0XHRcdHJhd19yY3YobXJvdXRlX3NrLCBza2IpO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9kdXBfaXB2NC5jPTUxPXZvaWQgbmZfZHVwX2lwdjQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgaG9va251bSxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYy02OS1cdC8qIEF2b2lkIGNvdW50aW5nIGNsb25lZCBwYWNrZXRzIHRvd2FyZHMgdGhlIG9yaWdpbmFsIGNvbm5lY3Rpb24uICovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYzo3MDpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYy03MS1cdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XG4tLVxubmV0L2lwdjQvcmF3LmM9MzE4PWludCByYXdfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9yYXcuYy0zMjQtXHR9XG5uZXQvaXB2NC9yYXcuYzozMjU6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2lwdjQvcmF3LmMtMzI2LVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MjA3MD1pbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE4Mi1cdFx0fVxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMTgzOlx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0yMTg0LVx0XHRpZiAobnNrID09IHNrKSB7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMjIzLVxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMjI0Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjIyNS1cbi0tXG5uZXQvaXB2NC91ZHAuYz0yMzQ5PXN0YXRpYyBpbnQgdWRwX3F1ZXVlX3Jjdl9vbmVfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC91ZHAuYy0yMzYxLVx0fVxubmV0L2lwdjQvdWRwLmM6MjM2MjpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2NC91ZHAuYy0yMzYzLVxuLS1cbm5ldC9pcHY0L3VkcC5jPTI1ODg9aW50IHVkcF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC91ZHAuYy0yNjU0LVx0XHRnb3RvIGRyb3A7XG5uZXQvaXB2NC91ZHAuYzoyNjU1Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY0L3VkcC5jLTI2NTYtXG4tLVxubmV0L2lwdjYvaXA2X2lucHV0LmM9NDAzPXZvaWQgaXA2X3Byb3RvY29sX2RlbGl2ZXJfcmN1KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsXG4tLVxubmV0L2lwdjYvaXA2X2lucHV0LmMtNDc1LVx0XHRcdH1cbm5ldC9pcHY2L2lwNl9pbnB1dC5jOjQ3NjpcdFx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2lwdjYvaXA2X2lucHV0LmMtNDc3LVx0XHR9XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX2R1cF9pcHY2LmM9NDc9dm9pZCBuZl9kdXBfaXB2NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBob29rbnVtLFxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9kdXBfaXB2Ni5jLTU3LSNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9DT05OVFJBQ0spXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZHVwX2lwdjYuYzo1ODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZHVwX2lwdjYuYy01OS1cdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XG4tLVxubmV0L2lwdjYvcmF3LmM9Mzg4PWludCByYXd2Nl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3Jhdy5jLTM5Ny1cdH1cbm5ldC9pcHY2L3Jhdy5jOjM5ODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni9yYXcuYy0zOTktXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTM5Nj1zdGF0aWMgaW50IHNlZzZfZG9fc3JoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkc3RfZW50cnkgKmNhY2hlX2RzdClcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDY5LVx0c2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSk7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6NDcwOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy00NzEtXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTkyOT1zdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHg2KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTk0Mi1cdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjk0MzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtOTQ0LVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz05ODI9c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R4NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy05OTItXHRza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCBzaXplb2Yoc3RydWN0IGlwaGRyKSk7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6OTkzOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy05OTQtXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTExMzE9c3RhdGljIHN0cnVjdCBza19idWZmICplbmRfZHRfdnJmX2NvcmUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE2Ny1cdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIGhkcmxlbik7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTE2ODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE2OS1cbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTE3MzA9SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHRjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4MzgtXHRcdH1cbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTgzOTpcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTg0MC1cdFx0aWYgKG5zayA9PSBzaykge1xuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTg3OS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTg4MDpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4ODEtXG4tLVxubmV0L2lwdjYvdWRwLmM9ODA2PXN0YXRpYyBpbnQgdWRwdjZfcXVldWVfcmN2X29uZV9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3VkcC5jLTgxNS1cdH1cbm5ldC9pcHY2L3VkcC5jOjgxNjpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni91ZHAuYy04MTctXG4tLVxubmV0L2lwdjYvdWRwLmM9MTA2Nz1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdWRwdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdWRwLmMtMTE1Mi1cdFx0Z290byBkaXNjYXJkO1xubmV0L2lwdjYvdWRwLmM6MTE1MzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvaXB2Ni91ZHAuYy0xMTU0LVxuLS1cbm5ldC9sMnRwL2wydHBfY29yZS5jPTEyMjU9c3RhdGljIGludCBsMnRwX3htaXRfY29yZShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgKmxlbilcbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjU0LVxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTI1NTpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjU2LVxuLS1cbm5ldC9sMnRwL2wydHBfZXRoLmM9MTA3PXN0YXRpYyB2b2lkIGwydHBfZXRoX2Rldl9yZWN2KHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIGludCBkYXRhX2xlbilcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTEyMy1cdHNrYl9kc3RfZHJvcChza2IpO1xubmV0L2wydHAvbDJ0cF9ldGguYzoxMjQ6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L2wydHAvbDJ0cF9ldGguYy0xMjUtXG4tLVxubmV0L2wydHAvbDJ0cF9pcC5jPTEyNT1zdGF0aWMgaW50IGwydHBfaXBfcmVjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9sMnRwL2wydHBfaXAuYy0xOTctXG5uZXQvbDJ0cC9sMnRwX2lwLmM6MTk4Olx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9sMnRwL2wydHBfaXAuYy0xOTktXG4tLVxubmV0L2wydHAvbDJ0cF9pcDYuYz0xMzU9c3RhdGljIGludCBsMnRwX2lwNl9yZWN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2wydHAvbDJ0cF9pcDYuYy0yMDctXG5uZXQvbDJ0cC9sMnRwX2lwNi5jOjIwODpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvbDJ0cC9sMnRwX2lwNi5jLTIwOS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTYzMz1zdGF0aWMgaW5saW5lIGludCBpcF92c190dW5uZWxfeG1pdF9wcmVwYXJlKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy02NDEtXHRpZiAocmV0ID09IE5GX0FDQ0VQVCkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzo2NDI6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTY0My1cdFx0c2tiX2ZvcndhcmRfY3N1bShza2IpO1xuLS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYz0xODY9c3RhdGljIGludCBpbnRlcm5hbF9kZXZfcmVjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYy0xOTYtXHRza2JfZHN0X2Ryb3Aoc2tiKTtcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzoxOTc6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTE5OC1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE4Njk9c3RhdGljIGludCBwYWNrZXRfcmN2X3Nwa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5MDYtXHQvKiBkcm9wIGNvbm50cmFjayByZWZlcmVuY2UgKi9cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTkwNzpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5MDgtXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMTMzPXN0YXRpYyBpbnQgcGFja2V0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjIxOS1cdC8qIGRyb3AgY29ubnRyYWNrIHJlZmVyZW5jZSAqL1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMjIwOlx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjIyMS1cbi0tXG5uZXQvc2NoZWQvYWN0X21pcnJlZC5jPTI1ND1zdGF0aWMgaW50IHRjZl9taXJyZWRfdG9fZGV2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y2ZfbWlycmVkICptLFxuLS1cbm5ldC9zY2hlZC9hY3RfbWlycmVkLmMtMzAwLVx0LyogQWxsIG1pcnJlZC9yZWRpcmVjdGVkIHNrYnMgc2hvdWxkIGNsZWFyIHByZXZpb3VzIGN0IGluZm8gKi9cbm5ldC9zY2hlZC9hY3RfbWlycmVkLmM6MzAxOlx0bmZfcmVzZXRfY3Qoc2tiX3RvX3NlbmQpO1xubmV0L3NjaGVkL2FjdF9taXJyZWQuYy0zMDItXHRpZiAod2FudF9pbmdyZXNzIFx1MDAyNlx1MDAyNiAhYXRfaW5ncmVzcykgLyogZHJvcCBkc3QgZm9yIGVncmVzcyAtXHUwMDNlIGluZ3Jlc3MgKi9cbi0tXG5uZXQvc2NoZWQvYWN0X25hdC5jPTExNT1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX25hdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvYWN0X25hdC5jLTI1OS1vdXQ6XG5uZXQvc2NoZWQvYWN0X25hdC5jOjI2MDpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvc2NoZWQvYWN0X25hdC5jLTI2MS1cdHJldHVybiBhY3Rpb247XG4tLVxubmV0L3NjaGVkL2FjdF9wZWRpdC5jPTM4MD1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy01MTEtXHRpZiAobDNfbDRfY2hhbmdlZClcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYzo1MTI6XHRcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtNTEzLVxuLS1cbm5ldC9zY3RwL2lucHV0LmM9ODg9aW50IHNjdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjdHAvaW5wdXQuYy0xOTAtXHRcdGdvdG8gZGlzY2FyZF9yZWxlYXNlO1xubmV0L3NjdHAvaW5wdXQuYzoxOTE6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L3NjdHAvaW5wdXQuYy0xOTItXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jPTQ2Nj1pbnQgeGZybV9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmV4dGhkciwgX19iZTMyIHNwaSwgaW50IGVuY2FwX3R5cGUpXG4tLVxubmV0L3hmcm0veGZybV9pbnB1dC5jLTczNi1cbm5ldC94ZnJtL3hmcm1faW5wdXQuYzo3Mzc6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L3hmcm0veGZybV9pbnB1dC5jLTczOC1cbi0tXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM9MjkzPXN0YXRpYyB2b2lkIHhmcm1pX3NjcnViX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIHhuZXQpXG4tLVxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTI5OS1cdHNrYl9kc3RfZHJvcChza2IpO1xubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jOjMwMDpcdG5mX3Jlc2V0X2N0KHNrYik7XG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmMtMzAxLVx0bmZfcmVzZXRfdHJhY2Uoc2tiKTtcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jPTU5Mz1pbnQgeGZybV9vdXRwdXRfcmVzdW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTU5Ny1cdHdoaWxlIChsaWtlbHkoKGVyciA9IHhmcm1fb3V0cHV0X29uZShza2IsIGVycikpID09IDApKSB7XG5uZXQveGZybS94ZnJtX291dHB1dC5jOjU5ODpcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTk5LVxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIyPXN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjM1LVx0c2tiX2RzdF9zZXQoc2tiLCBkc3QpO1xubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MzY6XHRuZl9yZXNldF9jdChza2IpO1xubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MzctXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0yODkwPXN0YXRpYyB2b2lkIHhmcm1fcG9saWN5X3F1ZXVlX3Byb2Nlc3Moc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTU5LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoyOTYwOlx0XHRuZl9yZXNldF9jdChza2IpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTYxLVx0XHRza2JfZHN0X2Ryb3Aoc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3MDQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5mX3Jlc2V0X2N0YCwgd2hpY2ggSSBzZWUgaXMgZGVmaW5lZCBhcyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gd2l0aGluIGBpbmNsdWRlL2xpbnV4L3NrYnVmZi5oYC4gR29vZCwgc28gaXQmIzM5O3MgYSBzaW1wbGUgZnVuY3Rpb24gdG8gcmVzZXQgY29ubmVjdGlvbiB0cmFja2luZyBpbmZvcm1hdGlvbi4gSXQmIzM5O3Mgbm90IGNvbmRpdGlvbmFsIG9uIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIEhvd2V2ZXIsIGl0IHNlZW1zIHRoaXMgaXMgYmVpbmcgdXNlZCBpbiB0aGUgY29udGV4dCBvZiB0cmFmZmljIGNvbnRyb2wsIGdpdmVuIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLgoKTXkgaW1tZWRpYXRlIGZvY3VzLCB0aGVyZWZvcmUsIHNoaWZ0cyB0byB0aG9zZSB0d28gZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYG5ldC9zY2hlZC9hY3RfbmF0LmNgIGFuZCBgbmV0L3NjaGVkL2FjdF9wZWRpdC5jYCB0byB1bmRlcnN0YW5kIGhvdyBgbmZfcmVzZXRfY3RgIGlzIGJlaW5nIGluY29ycG9yYXRlZCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEZyb20gd2hhdCBJIGNhbiBzZWUgc28gZmFyLCB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfTkFUYCwgYW5kIGBORVRfQUNUX1BFRElUYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MgaW4gdGhpcyBhcmVhLiBTcGVjaWZpY2FsbHksIGBORVRfQUNUX05BVGAgYW5kIGBORVRfQUNUX1BFRElUYCBhcmUgZGVwZW5kZW50IG9uIGBORVRfQ0xTX0FDVGAsIHdoaWNoLCBpbiB0dXJuLCBkZXBlbmRzIG9uIGBORVRfU0NIRURgLiBTbyB3ZSBoYXZlIGEgY2xlYXIgZGVwZW5kZW5jeSBjaGFpbiBoZXJlOiBgTkVUX1NDSEVEYCAtJmd0OyBgTkVUX0NMU19BQ1RgIC0mZ3Q7IChgTkVUX0FDVF9OQVRgLCBgTkVUX0FDVF9QRURJVGApLiBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhlIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZmlsZSBhZ2FpbiB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBORVRfU0NIRUQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM4MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSBwcmV0dHkgc3VyZSBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBsb29raW5nIGF0LiBSaWdodCwgY29uZmlybWVkLiBOb3csIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFsbCBzZXQgdXAsIHRoZSBjb3JlIGNvbmZpZ3MgSSYjMzk7bSBlbmFibGluZyBoZXJlIGFyZSBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfTkFUYCwgYW5kIGBORVRfQUNUX1BFRElUYC4gVGhvc2Ugc2hvdWxkIGdpdmUgbWUgd2hhdCBJIG5lZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYE5FVF9BQ1RfTkFUYCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgdGhhdCBJJiMzOTttIG92ZXJsb29raW5nLiBObyBwb2ludCBpbiBtYWtpbmcgYXNzdW1wdGlvbnMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhpcyBsZXZlbCBvZiBjb25maWd1cmF0aW9uLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NjA6XHRcbiA3NjE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDc2MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X3NhbXBsZS5cbiA3NjM6XHRcbiA3NjQ6XHRjb25maWcgTkVUX0FDVF9OQVRcbiA3NjU6XHRcdHRyaXN0YXRlIFwmIzM0O1N0YXRlbGVzcyBOQVRcJiMzNDtcbiA3NjY6XHRcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcbiA3Njc6XHRcdGhlbHBcbiA3Njg6XHRcdCAgU2F5IFkgaGVyZSB0byBkbyBzdGF0ZWxlc3MgTkFUIG9uIElQdjQgcGFja2V0cy4gIFlvdSBzaG91bGQgdXNlXG4gNzY5Olx0XHQgIG5ldGZpbHRlciBmb3IgTkFUIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuXG4gNzcwOlx0XG4gNzcxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA3NzI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9uYXQuXG4gNzczOlx0XG4gNzc0Olx0Y29uZmlnIE5FVF9BQ1RfUEVESVRcbiA3NzU6XHRcdHRyaXN0YXRlIFwmIzM0O1BhY2tldCBFZGl0aW5nXCYjMzQ7XG4gNzc2Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4gNzc3Olx0XHRoZWxwXG4gNzc4Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gbWFuZ2xlIHRoZSBjb250ZW50IG9mIHBhY2tldHMuXG4gNzc5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTIxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIENvcmUgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGVyZSBhcmUgbm8gaGlkZGVuIGRlcGVuZGVuY2llcyBoZXJlLCB0aGF0JiMzOTtzIGdvb2QuIE15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggZG9jdW1lbnRhdGlvbiBjbGVhcmx5IGluZGljYXRlcyB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAuIFRoZXJlZm9yZSwgbXkgYEZvY3VzU3ltYm9sc2AgdmFyaWFibGUsIG9yIHdoYXRldmVyIGVxdWl2YWxlbnQgSSYjMzk7bSB1c2luZywgbmVlZHMgdG8gYmUgc2V0IHRvIHRob3NlIHR3byBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5LiBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAuIE5vdywgSSBqdXN0IG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlc2UgYXJlIGV4cG9ydGVkIHN5bWJvbHMgb3IgZGVmaW5lZCBhcyBzdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsIG1vZHVsZS4gSSBuZWVkIHRvIGtub3cgdGhlIHNjb3BlIG9mIHRoZWlyIHVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNmX25hdF9hY3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oPTM2PVRDX0lORElSRUNUX0FDVElPTl9ERUNMQVJFKHRjZl9tcGxzX2FjdCk7XG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6Mzc6VENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX25hdF9hY3QpO1xuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTM4LVRDX0lORElSRUNUX0FDVElPTl9ERUNMQVJFKHRjZl9wZWRpdF9hY3QpO1xuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD00Nz1zdGF0aWMgaW5saW5lIGludCB0Y19hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbi0tXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMTA1LSNpZiBJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX05BVClcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDoxMDY6XHRpZiAoYS1cdTAwM2VvcHMtXHUwMDNlYWN0ID09IHRjZl9uYXRfYWN0KVxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjEwNzpcdFx0cmV0dXJuIHRjZl9uYXRfYWN0KHNrYiwgYSwgcmVzKTtcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0xMDgtI2VuZGlmXG4tLVxubmV0L3NjaGVkL2FjdF9uYXQuYz0zNT1zdGF0aWMgaW50IHRjZl9uYXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IG5sYXR0ciAqZXN0LFxuLS1cbm5ldC9zY2hlZC9hY3RfbmF0LmMtMTE0LVxubmV0L3NjaGVkL2FjdF9uYXQuYzoxMTU6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9uYXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvc2NoZWQvYWN0X25hdC5jLTExNi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbi0tXG5uZXQvc2NoZWQvYWN0X25hdC5jPTMxNz1zdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X25hdF9vcHMgPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9uYXQuYy0zMjAtXHQub3duZXJcdFx0PVx0VEhJU19NT0RVTEUsXG5uZXQvc2NoZWQvYWN0X25hdC5jOjMyMTpcdC5hY3RcdFx0PVx0dGNmX25hdF9hY3QsXG5uZXQvc2NoZWQvYWN0X25hdC5jLTMyMi1cdC5kdW1wXHRcdD1cdHRjZl9uYXRfZHVtcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2NjQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgZm9ybWF0dGVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFuYWx5emluZyBWYXJpYWJsZSBTY29wZSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGVzZSB2YXJpYWJsZXMsIHNwZWNpZmljYWxseSBgVENfSU5ESVJFQ1RfU0NPUEUgaW50YCB0eXBlcy4gVGhhdCBtZWFucyB0aGVzZSBpbnRlZ2VycyBhcmVuJiMzOTt0IHN0YXRpYzsgdGhleSBoYXZlIHNvbWUgc29ydCBvZiBkeW5hbWljIG9yIGluZGlyZWN0IHNjb3BlLiBJdCYjMzk7cyBhIGNsdWUsIHBvdGVudGlhbGx5LCBhYm91dCBob3cgdGhleSYjMzk7cmUgdXNlZCBhbmQgaG93IHRoZWlyIHZhbHVlcyBhcmUgbWFuYWdlZCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyIGluIHRoZSBvdmVyYWxsIGNvZGUgZmxvdy4KCk5vdywgYHRjZl9wZWRpdF9hY3RgIGlzIGFsc28gZGVjbGFyZWQgd2l0aCB0aGUgc2FtZSBpbmRpcmVjdCBzY29wZS4gVGhpcyBtZWFucyBpdCBoYXMgc2ltaWxhciBjaGFyYWN0ZXJpc3RpY3MgaW4gdGVybXMgb2YgbGlmZXRpbWUgYW5kIGFjY2Vzc2liaWxpdHkuIEdpdmVuIHRoYXQgYm90aCBgVENfSU5ESVJFQ1RfU0NPUEUgaW50YCBhbmQgYHRjZl9wZWRpdF9hY3RgIHNoYXJlIHRoZSBzYW1lIHByb3BlcnRpZXMsIGEgZGVlcGVyIGxvb2sgaW50byBgdGNmX3BlZGl0X2FjdGAgaXMgcHJvYmFibHkgd2FycmFudGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGhvdyBpdHMgdmFsdWUgaXMgc2V0IGFuZCB1c2VkIGluIHJlbGF0aW9uIHRvIG90aGVyIHBpZWNlcyBvZiB0aGUgY29kZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfcGVkaXRfYWN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0zNz1UQ19JTkRJUkVDVF9BQ1RJT05fREVDTEFSRSh0Y2ZfbmF0X2FjdCk7XG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6Mzg6VENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX3BlZGl0X2FjdCk7XG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMzktVENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX3BvbGljZV9hY3QpO1xuLS1cbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD00Nz1zdGF0aWMgaW5saW5lIGludCB0Y19hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbi0tXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtNjEtI2lmIElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfUEVESVQpXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6NjI6XHRpZiAoYS1cdTAwM2VvcHMtXHUwMDNlYWN0ID09IHRjZl9wZWRpdF9hY3QpXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6NjM6XHRcdHJldHVybiB0Y2ZfcGVkaXRfYWN0KHNrYiwgYSwgcmVzKTtcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC02NC0jZW5kaWZcbi0tXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmM9MzUwPXN0YXRpYyBpbnQgcGVkaXRfc2tiX2hkcl9vZmZzZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtMzc5LVxubmV0L3NjaGVkL2FjdF9wZWRpdC5jOjM4MDpUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3NjaGVkL2FjdF9wZWRpdC5jLTM4MS1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuLS1cbm5ldC9zY2hlZC9hY3RfcGVkaXQuYz02NDg9c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9wZWRpdF9vcHMgPSB7XG4tLVxubmV0L3NjaGVkL2FjdF9wZWRpdC5jLTY1MS1cdC5vd25lclx0XHQ9XHRUSElTX01PRFVMRSxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYzo2NTI6XHQuYWN0XHRcdD1cdHRjZl9wZWRpdF9hY3QsXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtNjUzLVx0LnN0YXRzX3VwZGF0ZVx0PVx0dGNmX3BlZGl0X3N0YXRzX3VwZGF0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NDcKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBqdXN0IGFuYWx5emVkIHRoaXMgcGF0Y2guIEZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGUgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSAqZnVuY3Rpb25hbCogYW5kLCBpbXBvcnRhbnRseSwgKnJlYWNoYWJsZSouIFRoZSB2ZXJkaWN0IGlzIGNsZWFyOiBXb3J0aEZ1enppbmc9dHJ1ZS4KClNwZWNpZmljYWxseSwgd2UmIzM5O3JlIGxvb2tpbmcgYXQgY2hhbmdlcyBpbnZvbHZpbmcgdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIC0gTkFUIGFuZCBwZWRpdCAtIGFzIHRoZSBjb25maWdzIGBORVRfU0NIRURgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9OQVRgLCBhbmQgYE5FVF9BQ1RfUEVESVRgIGluZGljYXRlLiBUaGUga2V5IHN5bWJvbHMgdGhhdCBjYXB0dXJlIG15IGF0dGVudGlvbiBhcmUgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIGFkZGluZyBgbmZfcmVzZXRfY3Qoc2tiKWAgdG8gdGhlc2UgYWN0aW9ucyB3aGVuIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IG9wZXJhdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIE5BVCBhbmQgcGVkaXQgYWN0aW9ucy4gQW5kLCBhcyB3ZSBrbm93LCBib3RoIE5BVCBhbmQgcGVkaXQgYXJlIHRyaWdnZXJlZCB0aHJvdWdoIHRyYWZmaWMgY29udHJvbCAodGMpIGNvbW1hbmRzLCBtZWFuaW5nIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVmaW5pdGVseSBhY2Nlc3NpYmxlLiBUaGlzIGlzIGEgcGVyZmVjdCBzY2VuYXJpbyBmb3IgaW5qZWN0aW5nIGNyYWZ0ZWQgcGFja2V0cyB0byB0cmlnZ2VyIHRoaXMgbW9kaWZpZWQgYmVoYXZpb3IgYW5kIGRpc2NvdmVyIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpMZXQmIzM5O3MgbG9nIHRoaXMgY2hhbmdlIGFzIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfTkFUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfbmF0X2FjdCYjMzQ7LAogICAgJiMzNDt0Y2ZfcGVkaXRfYWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCB3aGVuIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KSB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSB0cmFmZmljIGNvbnRyb2wgKHRjKSBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfTkFUJiMzNDssCiAgICAmIzM0O05FVF9BQ1RfUEVESVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfbmF0X2FjdCYjMzQ7LAogICAgJiMzNDt0Y2ZfcGVkaXRfYWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCB3aGVuIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KSB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSB0cmFmZmljIGNvbnRyb2wgKHRjKSBjb21tYW5kcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBjb25udHJhY2sgc3RhdGUgdHJhY2tpbmcgd2hlbiBwYWNrZXRzIGFyZSBtb2RpZmllZCBieSB0YyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KS4gSXQgZG9lcyBzbyBieSBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byBjbGVhciB0aGUgY29ubnRyYWNrIHN0YXRlIGlmIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcGFja2V0IG1ldGFkYXRhIChza2ItXHUwMDNlbmZjdCkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gc2tiIG1hbmlwdWxhdGlvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTljZmQ3Njg4ZGNkMzU0NDI4ZDVjMDNjMzlhMWFkMDJiYjMxYWFmNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDE5IDIxOjA3OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmMKaW5kZXggYWJiMzMyZGVlODM2ZC4uMGMzZDNiODlkMzQ5OSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9uYXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X25hdC5jCkBAIC0yNTcsNiAmIzQzOzI1Nyw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfbmF0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCX0KIAogb3V0OgomIzQzOwluZl9yZXNldF9jdChza2IpOwogCXJldHVybiBhY3Rpb247CiAKIGRyb3A6CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmMKaW5kZXggZDRkNDdhOTkyMWY0NS4uYjA3OTI1N2MyYjdiNiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwpAQCAtMzg2LDYgJiM0MzszODYsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXN0cnVjdCB0Y2ZfcGVkaXQgKnAgPSB0b19wZWRpdChhKTsKIAlzdHJ1Y3QgdGNmX3BlZGl0X2tleV9leCAqdGtleV9leDsKIAlzdHJ1Y3QgdGNmX3BlZGl0X3Bhcm1zICpwYXJtczsKJiM0MzsJYm9vbCBsM19sNF9jaGFuZ2VkID0gZmFsc2U7CiAJc3RydWN0IHRjX3BlZGl0X2tleSAqdGtleTsKIAlpbnQgaTsKIApAQCAtMzk4LDcgJiM0MzszOTksNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXRrZXlfZXggPSBwYXJtcy0mZ3Q7dGNmcF9rZXlzX2V4OwogCiAJZm9yIChpID0gcGFybXMtJmd0O3RjZnBfbmtleXM7IGkgJmd0OyAwOyBpLS0sIHRrZXkmIzQzOyYjNDM7KSB7Ci0JCWludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbjsKJiM0MzsJCWludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbiwgbndfb2Zmc2V0OwogCQlpbnQgb2Zmc2V0ID0gdGtleS0mZ3Q7b2ZmOwogCQlpbnQgaG9mZnNldCA9IDA7CiAJCXUzMiBjdXJfdmFsLCB2YWw7CkBAIC00MTgsNiAmIzQzOzQxOSw4IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiAJCQlnb3RvIGJhZDsKIAkJfQogCiYjNDM7CQlud19vZmZzZXQgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTsKJiM0MzsKIAkJaWYgKHRrZXktJmd0O29mZm1hc2spIHsKIAkJCXU4ICpkLCBfZDsKIAkJCWludCBhdF9vZmZzZXQ7CkBAIC00ODUsNiAmIzQzOzQ4OCwxOSBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQl9CiAKIAkJcHV0X3VuYWxpZ25lZCgoY3VyX3ZhbCAmYW1wOyB0a2V5LSZndDttYXNrKSBeIHZhbCwgcHRyKTsKJiM0MzsKJiM0MzsJCS8qIFRyYWNrIGlmIEwzIG9yIEw0IGhlYWRlcnMgd2VyZSBtb2RpZmllZDoKJiM0MzsJCSAqIC0gRGlyZWN0IEwzL0w0IGhlYWRlciB0eXBlcwomIzQzOwkJICogLSBFVEggaGVhZGVyIHR5cGUgd2l0aCBvZmZzZXQvbGVuZ3RoIHJlYWNoaW5nIGludG8gTDMvTDQKJiM0MzsJCSAqLwomIzQzOwkJaWYgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfTkVUV09SSyB8fAomIzQzOwkJICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfSVA0IHx8CiYjNDM7CQkgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDYgfHwKJiM0MzsJCSAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1RDUCB8fAomIzQzOwkJICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfVURQIHx8CiYjNDM7CQkgICAgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfRVRIICZhbXA7JmFtcDsKJiM0MzsJCSAgICAgd3JpdGVfb2Zmc2V0ICYjNDM7IChpbnQpc2l6ZW9mKCpwdHIpICZndDsgbndfb2Zmc2V0KSkKJiM0MzsJCQlsM19sNF9jaGFuZ2VkID0gdHJ1ZTsKIAl9CiAKIAlnb3RvIGRvbmU7CkBAIC00OTIsNiAmIzQzOzUwOCw5IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsCiBiYWQ6CiAJdGNmX2FjdGlvbl9pbmNfb3ZlcmxpbWl0X3FzdGF0cygmYW1wO3AtJmd0O2NvbW1vbik7CiBkb25lOgomIzQzOwlpZiAobDNfbDRfY2hhbmdlZCkKJiM0MzsJCW5mX3Jlc2V0X2N0KHNrYik7CiYjNDM7CiAJcmV0dXJuIHBhcm1zLSZndDthY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24KaW5kZXggOGFiNDhkZWY4OWI2YS4uMThhNzczNzQ4MzU4MCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24KQEAgLTc0Miw1ICYjNDM7NzQyLDE3MyBAQAogICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgY2xzYWN0JiMzNDsKICAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7YzJhOSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBwZWRpdCBtb2RpZmllcyBJUCBwcm90b2NvbCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7cGVkaXQmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3NjYXB5JiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0O25zUGx1Z2luJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7c2NhcHlQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgICAgIF0KJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAwLAomIzQzOyAgICAgICAgICAgICAgICAxLAomIzQzOyAgICAgICAgICAgICAgICAyLAomIzQzOyAgICAgICAgICAgICAgICAyNTUKJiM0MzsgICAgICAgICAgICBdLAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtcCBpY21wIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBpcCBwcm90b2NvbCBzZXQgMSBwaXBlIGFjdGlvbiBjc3VtIGlwNGggY29udGludWUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7c2NhcHkmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7aWZhY2UmIzM0OzogJiMzNDskREVWMCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y291bnQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O3BhY2tldCYjMzQ7OiAmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMCYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMCYjMzk7LHByb3RvPTYpL1RDUChzcG9ydD0xMjM0LGRwb3J0PTgwLGZsYWdzPSYjMzk7UyYjMzk7KSYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7aXB0YWJsZXMtc2F2ZSAtYyAtdCByYXcgfCBncmVwICYjMzk7Y3RzdGF0ZSBJTlZBTElEJiMzOTsmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7XlxcWzE6NDBcXF0mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDsKJiM0MzsgICAgICAgIF0KJiM0MzsgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2QzYjgmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O1ZlcmlmeSBjb25udHJhY2sgcmVzZXQgYWZ0ZXIgVENQIHBvcnQgbW9kaWZpY2F0aW9uJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2N0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtwZWRpdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7c2NhcHkmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7bnNQbHVnaW4mIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtzY2FweVBsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICAgICAgXQomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgIFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIDAsCiYjNDM7ICAgICAgICAgICAgICAgIDEsCiYjNDM7ICAgICAgICAgICAgICAgIDIsCiYjNDM7ICAgICAgICAgICAgICAgIDI1NQomIzQzOyAgICAgICAgICAgIF0sCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIHRjcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGlwX3Byb3RvIHRjcCBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIHRjcCBzcG9ydCBzZXQgOTk5OSBwaXBlJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3NjYXB5JiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O2lmYWNlJiMzNDs6ICYjMzQ7JERFVjAmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2NvdW50JiMzNDs6IDEsCiYjNDM7ICAgICAgICAgICAgJiMzNDtwYWNrZXQmIzM0OzogJiMzNDtFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JiMzOTsxMC4wLjAuMTAmIzM5Oyxkc3Q9JiMzOTsxMC4wLjAuMjAmIzM5OykvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9JiMzOTtTJiMzOTspJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDtpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJiMzOTtjdHN0YXRlIElOVkFMSUQmIzM5OyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDteXFxbMTo0MFxcXSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7YTFiMiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IGNvbm50cmFjayBOT1QgcmVzZXQgd2hlbiBwZWRpdCBtb2RpZmllcyBvbmx5IE1BQyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtjdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7cGVkaXQmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3NjYXB5JiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0O25zUGx1Z2luJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7c2NhcHlQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgICAgIF0KJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICBbCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAwLAomIzQzOyAgICAgICAgICAgICAgICAxLAomIzQzOyAgICAgICAgICAgICAgICAyLAomIzQzOyAgICAgICAgICAgICAgICAyNTUKJiM0MzsgICAgICAgICAgICBdLAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1GJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtcCBpY21wIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgTkVXIC1qIERST1AmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIGV0aCBzcmMgc2V0IDExOjIyOjMzOjQ0OjU1OjY2IHBpcGUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7c2NhcHkmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7aWZhY2UmIzM0OzogJiMzNDskREVWMCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y291bnQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O3BhY2tldCYjMzQ7OiAmIzM0O0V0aGVyKHNyYz0mIzM5O2FhOmJiOmNjOmRkOmVlOmZmJiMzOTssdHlwZT0weDgwMCkvSVAoc3JjPSYjMzk7MTAuMC4wLjExJiMzOTssZHN0PSYjMzk7MTAuMC4wLjIxJiMzOTspL0lDTVAoKSYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7aXB0YWJsZXMtc2F2ZSAtYyAtdCByYXcgfCBncmVwICYjMzk7Y3RzdGF0ZSBORVcmIzM5OyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDteXFxbMToyOFxcXSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtpcHRhYmxlcyAtdCByYXcgLUYmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7YjdmNCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IGNvbm50cmFjayByZXNldCB3aGVuIEVUSCB3cml0ZSBleHRlbmRzIGludG8gSVAgbGF5ZXImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y3QmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3BlZGl0JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtzY2FweSYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtuc1BsdWdpbiYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3NjYXB5UGx1Z2luJiMzNDsKJiM0MzsgICAgICAgICAgICBdCiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgWwomIzQzOyAgICAgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgMCwKJiM0MzsgICAgICAgICAgICAgICAgMSwKJiM0MzsgICAgICAgICAgICAgICAgMiwKJiM0MzsgICAgICAgICAgICAgICAgMjU1CiYjNDM7ICAgICAgICAgICAgXSwKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7aXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBJTlZBTElEIC1qIERST1AmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIG9mZnNldCAxMiB1MzIgc2V0IDB4MDgwMDQ1MDAgcGlwZSBjc3VtIGlwNGggY29udGludWUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7c2NhcHkmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7aWZhY2UmIzM0OzogJiMzNDskREVWMCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Y291bnQmIzM0OzogMSwKJiM0MzsgICAgICAgICAgICAmIzM0O3BhY2tldCYjMzQ7OiAmIzM0O0V0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0mIzM5OzEwLjAuMC4xMyYjMzk7LGRzdD0mIzM5OzEwLjAuMC4yMyYjMzk7KS9JQ01QKCkmIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0O2lwdGFibGVzLXNhdmUgLXQgcmF3IC1jIHwgZ3JlcCAmIzM5O2N0c3RhdGUgSU5WQUxJRCYjMzk7JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O15cXFsxOjI4XFxdJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2lwdGFibGVzIC10IHJhdyAtRiYjMzQ7CiYjNDM7ICAgICAgICBdCiAgICAgfQogXQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weQppbmRleCA1MTFkNjZjMzZhMmEwLi4xOWI4YTFmZDFjNzE2IDEwMDc1NQotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weQpAQCAtNjAwLDYgJiM0Mzs2MDAsMTggQEAgZGVmIG1wX2JpbnMoYWxsdGVzdHMpOgogCiAgICAgcmV0dXJuIChzZXJpYWwsIHBhcmFsbGVsKQogCiYjNDM7bXBfcG0gPSBOb25lCiYjNDM7bXBfYXJncyA9IE5vbmUKJiM0MzsKJiM0MztkZWYgX19tcF9pbml0X18ocG0sIGFyZ3MpOgomIzQzOyAgICAmIzM0OyYjMzQ7JiMzNDsKJiM0MzsgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSB3aGVuIGVhY2ggd29ya2VyIHByb2Nlc3Mgc3RhcnRzLgomIzQzOyAgICBJdCBzZXRzIHRoZSBnbG9iYWwgdmFyaWFibGVzIGluIHRoZSBjaGlsZCBwcm9jZXNzJiMzOTtzIG1lbW9yeSBzcGFjZS4KJiM0MzsgICAgJiMzNDsmIzM0OyYjMzQ7CiYjNDM7ICAgIGdsb2JhbCBtcF9wbSwgbXBfYXJncwomIzQzOyAgICBtcF9wbSA9IHBtCiYjNDM7ICAgIG1wX2FyZ3MgPSBhcmdzCiYjNDM7CiBkZWYgX19tcF9ydW5uZXIodGVzdHMpOgogICAgIChfLCB0c3IpID0gdGVzdF9ydW5uZXIobXBfcG0sIG1wX2FyZ3MsIHRlc3RzKQogICAgIHJldHVybiB0c3IuX3Rlc3RzdWl0ZQpAQCAtNjE1LDE0ICYjNDM7NjI3LDEzIEBAIGRlZiB0ZXN0X3J1bm5lcl9tcChwbSwgYXJncywgYWxsdGVzdHMpOgogICAgIHByaW50KCYjMzQ7RXhlY3V0aW5nIHt9IHRlc3RzIGluIHBhcmFsbGVsIGFuZCB7fSBpbiBzZXJpYWwmIzM0Oy5mb3JtYXQobGVuKHBhcmFsbGVsKSwgbGVuKHNlcmlhbCkpKQogICAgIHByaW50KCYjMzQ7VXNpbmcge30gYmF0Y2hlcyBhbmQge30gd29ya2VycyYjMzQ7LmZvcm1hdChsZW4oYmF0Y2hlcyksIGFyZ3MubXApKQogCi0gICAgIyBXZSBjYW4mIzM5O3QgcGlja2xlIHRoZXNlIG9iamVjdHMgc28gd29ya2Fyb3VuZCB0aGVtCi0gICAgZ2xvYmFsIG1wX3BtCi0gICAgbXBfcG0gPSBwbQotCi0gICAgZ2xvYmFsIG1wX2FyZ3MKLSAgICBtcF9hcmdzID0gYXJncwotCi0gICAgd2l0aCBQb29sKGFyZ3MubXApIGFzIHA6CiYjNDM7ICAgICMgVXNlIHRoZSAmIzM5O2luaXRpYWxpemVyJiMzOTsgdG8gcGFzcyB0aGUgdW5waWNrbGVhYmxlL3NoYXJlZCBvYmplY3RzCiYjNDM7ICAgICMgdG8gZWFjaCB3b3JrZXIgcHJvY2VzcyBleGFjdGx5IG9uY2UgdXBvbiBzdGFydHVwLgomIzQzOyAgICB3aXRoIFBvb2woCiYjNDM7ICAgICAgICBwcm9jZXNzZXM9YXJncy5tcCwKJiM0MzsgICAgICAgIGluaXRpYWxpemVyPV9fbXBfaW5pdF9fLAomIzQzOyAgICAgICAgaW5pdGFyZ3M9KHBtLCBhcmdzKQomIzQzOyAgICApIGFzIHA6CiAgICAgICAgIHByZXMgPSBwLm1hcChfX21wX3J1bm5lciwgYmF0Y2hlcykKIAogICAgIHRzciA9IFRlc3RTdWl0ZVJlcG9ydCgpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mzk0CgkJCQkJCQlvdXRwdXQ6IDE1NAoJCQkJCQkJdGhvdWdodHM6IDUwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbm50cmFjayBTdGF0ZSBSZXNldCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLiBJdCBmb2N1c2VzIG9uIGBuZXQvc2NoZWQvYWN0X25hdC5jYCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AsIHNwZWNpZmljYWxseS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpbnZvbHZlcyBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCBpbiB0aG9zZSBhY3Rpb25zLiBJbiB0aGUgTkFUIGFjdGlvbiwgaXQmIzM5O3MgYSBkaXJlY3QgY2FsbCBiZWZvcmUgcmV0dXJuaW5nLiBGb3IgdGhlIHBlZGl0IGFjdGlvbiwgaXQmIzM5O3MgY29uZGl0aW9uYWwsIHRyaWdnZXJlZCBpZiBlaXRoZXIgTDMgb3IgTDQgaGVhZGVycyBoYXZlIGJlZW4gdG91Y2hlZCwgYmFzZWQgb24gY2hlY2tpbmcgYGh0eXBlYCBhbmQgYHdyaXRlX29mZnNldGAuIFRoZXkgYWxzbyB1cGRhdGVkIHNvbWUgdGVzdHMgYW5kIGZpeGVkIGEgbXVsdGlwcm9jZXNzaW5nIGlzc3VlIGluIHRoZSB0ZXN0aW5nIHNjcmlwdHMsIHdoaWNoIGlzIGFsd2F5cyBnb29kIHRvIHNlZS4KCk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzIHdpdGggYW55IGtlcm5lbCBwYXRjaCwgaXMgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSBhbmQgY2FuIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuIEJ1dCwgZGlnZ2luZyBkZWVwZXIsIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGlzIHBhdGNoIGlzICpub3QqIGludHJvZHVjaW5nIHN1Y2ggcmlza3MuIGBuZl9yZXNldF9jdChza2IpYCBzaW1wbHkgY2xlYXJzIHRoZSBjb25udHJhY2sgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBgc2tiYC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSByZXNldC4KClRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcywgbm8gbmV3IGFsbG9jYXRpb25zLCBub3RoaW5nIGJlaW5nIHNlbnQgdG8gdXNlcnNwYWNlLiBJdCBpcyBqdXN0IGRlYWxpbmcgd2l0aCBjb25udHJhY2sgc3RhdGUgY2hhbmdlcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiwgc28gaXQgc2hvdWxkIG5vdCBpbnRyb2R1Y2Ugcmlza3Mgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBjaGVja2VkIHRoZSBkZWZpbml0aW9uIG9mIGBuZl9yZXNldF9jdGAgKGl0JiMzOTtzIGVpdGhlciBpbmxpbmUgaW4gYGluY2x1ZGUvbGludXgvc2tidWZmLmhgIG9yIHdpdGhpbiBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oYCkuIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIG9wZXJhdGlvbjogaXQgY2FsbHMgYG5mX2Nvbm50cmFja19wdXQoc2tiLSZndDtuZmN0KWAgYW5kIHRoZW4gc2V0cyBgc2tiLSZndDtuZmN0YCB0byBgTlVMTGAuIE5vIGZhbmN5IG1lbW9yeSBtYW5pcHVsYXRpb24gdGhlcmU7IGFsbCBvcGVyYXRpb25zIGludm9sdmUgc3RydWN0dXJlcyBhbHJlYWR5IG1hbmFnZWQgd2l0aGluIHRoZSBrZXJuZWwuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIHNob3VsZCAqbm90KiB0cmlnZ2VyIGEgYE5lZWRzS01TQU5gIGZsYWcuIEl0IGlzIHB1cmVseSBhIGxvZ2ljIGZpeCBmb3IgY29ubnRyYWNrIHN0YXRlIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zLiBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGUgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gc2tiIG1hbmlwdWxhdGlvbi4gSSB3aWxsIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIHRvIG1hcmsgdGhlIHBhdGNoIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBjb25udHJhY2sgc3RhdGUgdHJhY2tpbmcgd2hlbiBwYWNrZXRzIGFyZSBtb2RpZmllZCBieSB0YyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KS4gSXQgZG9lcyBzbyBieSBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byBjbGVhciB0aGUgY29ubnRyYWNrIHN0YXRlIGlmIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcGFja2V0IG1ldGFkYXRhIChza2ItXHUwMDNlbmZjdCkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gc2tiIG1hbmlwdWxhdGlvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNvbm50cmFjayBzdGF0ZSB0cmFja2luZyB3aGVuIHBhY2tldHMgYXJlIG1vZGlmaWVkIGJ5IHRjIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpLiBJdCBkb2VzIHNvIGJ5IGNhbGxpbmcgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGNsZWFyIHRoZSBjb25udHJhY2sgc3RhdGUgaWYgTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwYWNrZXQgbWV0YWRhdGEgKHNrYi1cdTAwM2VuZmN0KSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byBza2IgbWFuaXB1bGF0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowNzo1MS43NDAyNjM1MzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjczMjIxMjYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX05BVFwiLFxuICAgIFwiTkVUX0FDVF9QRURJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9uYXRfYWN0XCIsXG4gICAgXCJ0Y2ZfcGVkaXRfYWN0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBjb25udHJhY2sgc3RhdGUgdHJhY2tpbmcgd2hlbiBwYWNrZXRzIGFyZSBtb2RpZmllZCBieSB0YyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KS4gSXQgZG9lcyBzbyBieSBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byBjbGVhciB0aGUgY29ubnRyYWNrIHN0YXRlIGlmIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcGFja2V0IG1ldGFkYXRhIChza2ItXFx1MDAzZW5mY3QpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgYnVncyByZWxhdGVkIHRvIHNrYiBtYW5pcHVsYXRpb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBgbmZfcmVzZXRfY3Qoc2tiKWAgdG8gYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgIHdoZW4gTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzY2hlZHVsaW5nIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHRyYWZmaWMgY29udHJvbCAodGMpIGNvbW1hbmRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowNzo1MS43NDAyNzI1MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTgxNjY2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE5Y2ZkNzY4OGRjZDM1NDQyOGQ1YzAzYzM5YTFhZDAyYmIzMWFhZjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MDc6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmNcXG5pbmRleCBhYmIzMzJkZWU4MzZkLi4wYzNkM2I4OWQzNDk5IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9hY3RfbmF0LmNcXG4rKysgYi9uZXQvc2NoZWQvYWN0X25hdC5jXFxuQEAgLTI1Nyw2ICsyNTcsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX25hdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0fVxcbiBcXG4gb3V0OlxcbitcXHRuZl9yZXNldF9jdChza2IpO1xcbiBcXHRyZXR1cm4gYWN0aW9uO1xcbiBcXG4gZHJvcDpcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXFxuaW5kZXggZDRkNDdhOTkyMWY0NS4uYjA3OTI1N2MyYjdiNiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcXG4rKysgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcXG5AQCAtMzg2LDYgKzM4Niw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHN0cnVjdCB0Y2ZfcGVkaXQgKnAgPSB0b19wZWRpdChhKTtcXG4gXFx0c3RydWN0IHRjZl9wZWRpdF9rZXlfZXggKnRrZXlfZXg7XFxuIFxcdHN0cnVjdCB0Y2ZfcGVkaXRfcGFybXMgKnBhcm1zO1xcbitcXHRib29sIGwzX2w0X2NoYW5nZWQgPSBmYWxzZTtcXG4gXFx0c3RydWN0IHRjX3BlZGl0X2tleSAqdGtleTtcXG4gXFx0aW50IGk7XFxuIFxcbkBAIC0zOTgsNyArMzk5LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dGtleV9leCA9IHBhcm1zLVxcdTAwM2V0Y2ZwX2tleXNfZXg7XFxuIFxcbiBcXHRmb3IgKGkgPSBwYXJtcy1cXHUwMDNldGNmcF9ua2V5czsgaSBcXHUwMDNlIDA7IGktLSwgdGtleSsrKSB7XFxuLVxcdFxcdGludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbjtcXG4rXFx0XFx0aW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuLCBud19vZmZzZXQ7XFxuIFxcdFxcdGludCBvZmZzZXQgPSB0a2V5LVxcdTAwM2VvZmY7XFxuIFxcdFxcdGludCBob2Zmc2V0ID0gMDtcXG4gXFx0XFx0dTMyIGN1cl92YWwsIHZhbDtcXG5AQCAtNDE4LDYgKzQxOSw4IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdGdvdG8gYmFkO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHRud19vZmZzZXQgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTtcXG4rXFxuIFxcdFxcdGlmICh0a2V5LVxcdTAwM2VvZmZtYXNrKSB7XFxuIFxcdFxcdFxcdHU4ICpkLCBfZDtcXG4gXFx0XFx0XFx0aW50IGF0X29mZnNldDtcXG5AQCAtNDg1LDYgKzQ4OCwxOSBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRwdXRfdW5hbGlnbmVkKChjdXJfdmFsIFxcdTAwMjYgdGtleS1cXHUwMDNlbWFzaykgXiB2YWwsIHB0cik7XFxuK1xcbitcXHRcXHQvKiBUcmFjayBpZiBMMyBvciBMNCBoZWFkZXJzIHdlcmUgbW9kaWZpZWQ6XFxuK1xcdFxcdCAqIC0gRGlyZWN0IEwzL0w0IGhlYWRlciB0eXBlc1xcbitcXHRcXHQgKiAtIEVUSCBoZWFkZXIgdHlwZSB3aXRoIG9mZnNldC9sZW5ndGggcmVhY2hpbmcgaW50byBMMy9MNFxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfTkVUV09SSyB8fFxcbitcXHRcXHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDQgfHxcXG4rXFx0XFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfSVA2IHx8XFxuK1xcdFxcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1RDUCB8fFxcbitcXHRcXHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9VRFAgfHxcXG4rXFx0XFx0ICAgIChodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX0VUSCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgIHdyaXRlX29mZnNldCArIChpbnQpc2l6ZW9mKCpwdHIpIFxcdTAwM2Ugbndfb2Zmc2V0KSlcXG4rXFx0XFx0XFx0bDNfbDRfY2hhbmdlZCA9IHRydWU7XFxuIFxcdH1cXG4gXFxuIFxcdGdvdG8gZG9uZTtcXG5AQCAtNDkyLDYgKzUwOCw5IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfcGVkaXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxuIGJhZDpcXG4gXFx0dGNmX2FjdGlvbl9pbmNfb3ZlcmxpbWl0X3FzdGF0cyhcXHUwMDI2cC1cXHUwMDNlY29tbW9uKTtcXG4gZG9uZTpcXG4rXFx0aWYgKGwzX2w0X2NoYW5nZWQpXFxuK1xcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuK1xcbiBcXHRyZXR1cm4gcGFybXMtXFx1MDAzZWFjdGlvbjtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvblxcbmluZGV4IDhhYjQ4ZGVmODliNmEuLjE4YTc3Mzc0ODM1ODAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvblxcbkBAIC03NDIsNSArNzQyLDE3MyBAQFxcbiAgICAgICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4gICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGNsc2FjdFxcXCJcXG4gICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJjMmE5XFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJWZXJpZnkgY29ubnRyYWNrIHJlc2V0IGFmdGVyIHBlZGl0IG1vZGlmaWVzIElQIHByb3RvY29sXFxcIixcXG4rICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgICAgICAgXFxcImN0XFxcIixcXG4rICAgICAgICAgICAgXFxcInBlZGl0XFxcIixcXG4rICAgICAgICAgICAgXFxcInNjYXB5XFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcInBsdWdpbnNcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJyZXF1aXJlc1xcXCI6IFtcXG4rICAgICAgICAgICAgICAgIFxcXCJuc1BsdWdpblxcXCIsXFxuKyAgICAgICAgICAgICAgICBcXFwic2NhcHlQbHVnaW5cXFwiXFxuKyAgICAgICAgICAgIF1cXG4rICAgICAgICB9LFxcbisgICAgICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgICAgICAgW1xcbisgICAgICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcXFwiLFxcbisgICAgICAgICAgICAgICAgMCxcXG4rICAgICAgICAgICAgICAgIDEsXFxuKyAgICAgICAgICAgICAgICAyLFxcbisgICAgICAgICAgICAgICAgMjU1XFxuKyAgICAgICAgICAgIF0sXFxuKyAgICAgICAgICAgIFxcXCJpcHRhYmxlcyAtdCByYXcgLUZcXFwiLFxcbisgICAgICAgICAgICBcXFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgaWNtcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgaXAgcHJvdG9jb2wgc2V0IDEgcGlwZSBhY3Rpb24gY3N1bSBpcDRoIGNvbnRpbnVlXFxcIixcXG4rICAgICAgICBcXFwic2NhcHlcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJpZmFjZVxcXCI6IFxcXCIkREVWMFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjb3VudFxcXCI6IDEsXFxuKyAgICAgICAgICAgIFxcXCJwYWNrZXRcXFwiOiBcXFwiRXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPScxMC4wLjAuMTAnLGRzdD0nMTAuMC4wLjIwJyxwcm90bz02KS9UQ1Aoc3BvcnQ9MTIzNCxkcG9ydD04MCxmbGFncz0nUycpXFxcIlxcbisgICAgICAgIH0sXFxuKyAgICAgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiaXB0YWJsZXMtc2F2ZSAtYyAtdCByYXcgfCBncmVwICdjdHN0YXRlIElOVkFMSUQnXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcIl5cXFxcXFxcXFsxOjQwXFxcXFxcXFxdXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtRlxcXCJcXG4rICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJkM2I4XFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJWZXJpZnkgY29ubnRyYWNrIHJlc2V0IGFmdGVyIFRDUCBwb3J0IG1vZGlmaWNhdGlvblxcXCIsXFxuKyAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICAgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJwZWRpdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJzY2FweVxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBbXFxuKyAgICAgICAgICAgICAgICBcXFwibnNQbHVnaW5cXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInNjYXB5UGx1Z2luXFxcIlxcbisgICAgICAgICAgICBdXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFtcXG4rICAgICAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgICAgIDAsXFxuKyAgICAgICAgICAgICAgICAxLFxcbisgICAgICAgICAgICAgICAgMixcXG4rICAgICAgICAgICAgICAgIDI1NVxcbisgICAgICAgICAgICBdLFxcbisgICAgICAgICAgICBcXFwiaXB0YWJsZXMgLXQgcmF3IC1GXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIHRjcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGlwX3Byb3RvIHRjcCBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIHRjcCBzcG9ydCBzZXQgOTk5OSBwaXBlXFxcIixcXG4rICAgICAgICBcXFwic2NhcHlcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJpZmFjZVxcXCI6IFxcXCIkREVWMFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjb3VudFxcXCI6IDEsXFxuKyAgICAgICAgICAgIFxcXCJwYWNrZXRcXFwiOiBcXFwiRXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPScxMC4wLjAuMTAnLGRzdD0nMTAuMC4wLjIwJykvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9J1MnKVxcXCJcXG4rICAgICAgICB9LFxcbisgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBJTlZBTElEJ1xcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJeXFxcXFxcXFxbMTo0MFxcXFxcXFxcXVxcXCIsXFxuKyAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJpcHRhYmxlcyAtdCByYXcgLUZcXFwiXFxuKyAgICAgICAgXVxcbisgICAgfSxcXG4rICAgIHtcXG4rICAgICAgICBcXFwiaWRcXFwiOiBcXFwiYTFiMlxcXCIsXFxuKyAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwiVmVyaWZ5IGNvbm50cmFjayBOT1QgcmVzZXQgd2hlbiBwZWRpdCBtb2RpZmllcyBvbmx5IE1BQ1xcXCIsXFxuKyAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICAgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJwZWRpdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJzY2FweVxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBbXFxuKyAgICAgICAgICAgICAgICBcXFwibnNQbHVnaW5cXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInNjYXB5UGx1Z2luXFxcIlxcbisgICAgICAgICAgICBdXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFtcXG4rICAgICAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgICAgIDAsXFxuKyAgICAgICAgICAgICAgICAxLFxcbisgICAgICAgICAgICAgICAgMixcXG4rICAgICAgICAgICAgICAgIDI1NVxcbisgICAgICAgICAgICBdLFxcbisgICAgICAgICAgICBcXFwiaXB0YWJsZXMgLXQgcmF3IC1GXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBORVcgLWogRFJPUFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgZXRoIHNyYyBzZXQgMTE6MjI6MzM6NDQ6NTU6NjYgcGlwZVxcXCIsXFxuKyAgICAgICAgXFxcInNjYXB5XFxcIjoge1xcbisgICAgICAgICAgICBcXFwiaWZhY2VcXFwiOiBcXFwiJERFVjBcXFwiLFxcbisgICAgICAgICAgICBcXFwiY291bnRcXFwiOiAxLFxcbisgICAgICAgICAgICBcXFwicGFja2V0XFxcIjogXFxcIkV0aGVyKHNyYz0nYWE6YmI6Y2M6ZGQ6ZWU6ZmYnLHR5cGU9MHg4MDApL0lQKHNyYz0nMTAuMC4wLjExJyxkc3Q9JzEwLjAuMC4yMScpL0lDTVAoKVxcXCJcXG4rICAgICAgICB9LFxcbisgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBORVcnXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcIl5cXFxcXFxcXFsxOjI4XFxcXFxcXFxdXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtRlxcXCJcXG4rICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJiN2Y0XFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJWZXJpZnkgY29ubnRyYWNrIHJlc2V0IHdoZW4gRVRIIHdyaXRlIGV4dGVuZHMgaW50byBJUCBsYXllclxcXCIsXFxuKyAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICAgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJwZWRpdFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJzY2FweVxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBbXFxuKyAgICAgICAgICAgICAgICBcXFwibnNQbHVnaW5cXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInNjYXB5UGx1Z2luXFxcIlxcbisgICAgICAgICAgICBdXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFtcXG4rICAgICAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgICAgIDAsXFxuKyAgICAgICAgICAgICAgICAxLFxcbisgICAgICAgICAgICAgICAgMixcXG4rICAgICAgICAgICAgICAgIDI1NVxcbisgICAgICAgICAgICBdLFxcbisgICAgICAgICAgICBcXFwiaXB0YWJsZXMgLXQgcmF3IC1GXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXFxcIixcXG4rICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3NcXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBvZmZzZXQgMTIgdTMyIHNldCAweDA4MDA0NTAwIHBpcGUgY3N1bSBpcDRoIGNvbnRpbnVlXFxcIixcXG4rICAgICAgICBcXFwic2NhcHlcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJpZmFjZVxcXCI6IFxcXCIkREVWMFxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJjb3VudFxcXCI6IDEsXFxuKyAgICAgICAgICAgIFxcXCJwYWNrZXRcXFwiOiBcXFwiRXRoZXIodHlwZT0weDgwMCkvSVAoc3JjPScxMC4wLjAuMTMnLGRzdD0nMTAuMC4wLjIzJykvSUNNUCgpXFxcIlxcbisgICAgICAgIH0sXFxuKyAgICAgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiaXB0YWJsZXMtc2F2ZSAtdCByYXcgLWMgfCBncmVwICdjdHN0YXRlIElOVkFMSUQnXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcIl5cXFxcXFxcXFsxOjI4XFxcXFxcXFxdXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXFxcIixcXG4rICAgICAgICAgICAgXFxcImlwdGFibGVzIC10IHJhdyAtRlxcXCJcXG4rICAgICAgICBdXFxuICAgICB9XFxuIF1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxcbmluZGV4IDUxMWQ2NmMzNmEyYTAuLjE5YjhhMWZkMWM3MTYgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHlcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxcbkBAIC02MDAsNiArNjAwLDE4IEBAIGRlZiBtcF9iaW5zKGFsbHRlc3RzKTpcXG4gXFxuICAgICByZXR1cm4gKHNlcmlhbCwgcGFyYWxsZWwpXFxuIFxcbittcF9wbSA9IE5vbmVcXG4rbXBfYXJncyA9IE5vbmVcXG4rXFxuK2RlZiBfX21wX2luaXRfXyhwbSwgYXJncyk6XFxuKyAgICBcXFwiXFxcIlxcXCJcXG4rICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2Ugd2hlbiBlYWNoIHdvcmtlciBwcm9jZXNzIHN0YXJ0cy5cXG4rICAgIEl0IHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MncyBtZW1vcnkgc3BhY2UuXFxuKyAgICBcXFwiXFxcIlxcXCJcXG4rICAgIGdsb2JhbCBtcF9wbSwgbXBfYXJnc1xcbisgICAgbXBfcG0gPSBwbVxcbisgICAgbXBfYXJncyA9IGFyZ3NcXG4rXFxuIGRlZiBfX21wX3J1bm5lcih0ZXN0cyk6XFxuICAgICAoXywgdHNyKSA9IHRlc3RfcnVubmVyKG1wX3BtLCBtcF9hcmdzLCB0ZXN0cylcXG4gICAgIHJldHVybiB0c3IuX3Rlc3RzdWl0ZVxcbkBAIC02MTUsMTQgKzYyNywxMyBAQCBkZWYgdGVzdF9ydW5uZXJfbXAocG0sIGFyZ3MsIGFsbHRlc3RzKTpcXG4gICAgIHByaW50KFxcXCJFeGVjdXRpbmcge30gdGVzdHMgaW4gcGFyYWxsZWwgYW5kIHt9IGluIHNlcmlhbFxcXCIuZm9ybWF0KGxlbihwYXJhbGxlbCksIGxlbihzZXJpYWwpKSlcXG4gICAgIHByaW50KFxcXCJVc2luZyB7fSBiYXRjaGVzIGFuZCB7fSB3b3JrZXJzXFxcIi5mb3JtYXQobGVuKGJhdGNoZXMpLCBhcmdzLm1wKSlcXG4gXFxuLSAgICAjIFdlIGNhbid0IHBpY2tsZSB0aGVzZSBvYmplY3RzIHNvIHdvcmthcm91bmQgdGhlbVxcbi0gICAgZ2xvYmFsIG1wX3BtXFxuLSAgICBtcF9wbSA9IHBtXFxuLVxcbi0gICAgZ2xvYmFsIG1wX2FyZ3NcXG4tICAgIG1wX2FyZ3MgPSBhcmdzXFxuLVxcbi0gICAgd2l0aCBQb29sKGFyZ3MubXApIGFzIHA6XFxuKyAgICAjIFVzZSB0aGUgJ2luaXRpYWxpemVyJyB0byBwYXNzIHRoZSB1bnBpY2tsZWFibGUvc2hhcmVkIG9iamVjdHNcXG4rICAgICMgdG8gZWFjaCB3b3JrZXIgcHJvY2VzcyBleGFjdGx5IG9uY2UgdXBvbiBzdGFydHVwLlxcbisgICAgd2l0aCBQb29sKFxcbisgICAgICAgIHByb2Nlc3Nlcz1hcmdzLm1wLFxcbisgICAgICAgIGluaXRpYWxpemVyPV9fbXBfaW5pdF9fLFxcbisgICAgICAgIGluaXRhcmdzPShwbSwgYXJncylcXG4rICAgICkgYXMgcDpcXG4gICAgICAgICBwcmVzID0gcC5tYXAoX19tcF9ydW5uZXIsIGJhdGNoZXMpXFxuIFxcbiAgICAgdHNyID0gVGVzdFN1aXRlUmVwb3J0KClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDc6NTIuMzQzMDY0MjQ5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODE4NzA4NTM5NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkVUX0FDVF9OQVRcIixcbiAgICBcIk5FVF9BQ1RfUEVESVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfbmF0X2FjdFwiLFxuICAgIFwidGNmX3BlZGl0X2FjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCB3aGVuIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KSB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSB0cmFmZmljIGNvbnRyb2wgKHRjKSBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTljZmQ3Njg4ZGNkMzU0NDI4ZDVjMDNjMzlhMWFkMDJiYjMxYWFmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDIxOjA3OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9uYXQuYyBiL25ldC9zY2hlZC9hY3RfbmF0LmNcbmluZGV4IGFiYjMzMmRlZTgzNmQuLjBjM2QzYjg5ZDM0OTkgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X25hdC5jXG4rKysgYi9uZXQvc2NoZWQvYWN0X25hdC5jXG5AQCAtMjU3LDYgKzI1Nyw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfbmF0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0fVxuIFxuIG91dDpcbitcdG5mX3Jlc2V0X2N0KHNrYik7XG4gXHRyZXR1cm4gYWN0aW9uO1xuIFxuIGRyb3A6XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXG5pbmRleCBkNGQ0N2E5OTIxZjQ1Li5iMDc5MjU3YzJiN2I2IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jXG4rKysgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbkBAIC0zODYsNiArMzg2LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCB0Y2ZfcGVkaXQgKnAgPSB0b19wZWRpdChhKTtcbiBcdHN0cnVjdCB0Y2ZfcGVkaXRfa2V5X2V4ICp0a2V5X2V4O1xuIFx0c3RydWN0IHRjZl9wZWRpdF9wYXJtcyAqcGFybXM7XG4rXHRib29sIGwzX2w0X2NoYW5nZWQgPSBmYWxzZTtcbiBcdHN0cnVjdCB0Y19wZWRpdF9rZXkgKnRrZXk7XG4gXHRpbnQgaTtcbiBcbkBAIC0zOTgsNyArMzk5LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHRrZXlfZXggPSBwYXJtcy1cdTAwM2V0Y2ZwX2tleXNfZXg7XG4gXG4gXHRmb3IgKGkgPSBwYXJtcy1cdTAwM2V0Y2ZwX25rZXlzOyBpIFx1MDAzZSAwOyBpLS0sIHRrZXkrKykge1xuLVx0XHRpbnQgd3JpdGVfb2Zmc2V0LCB3cml0ZV9sZW47XG4rXHRcdGludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbiwgbndfb2Zmc2V0O1xuIFx0XHRpbnQgb2Zmc2V0ID0gdGtleS1cdTAwM2VvZmY7XG4gXHRcdGludCBob2Zmc2V0ID0gMDtcbiBcdFx0dTMyIGN1cl92YWwsIHZhbDtcbkBAIC00MTgsNiArNDE5LDggQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRnb3RvIGJhZDtcbiBcdFx0fVxuIFxuK1x0XHRud19vZmZzZXQgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTtcbitcbiBcdFx0aWYgKHRrZXktXHUwMDNlb2ZmbWFzaykge1xuIFx0XHRcdHU4ICpkLCBfZDtcbiBcdFx0XHRpbnQgYXRfb2Zmc2V0O1xuQEAgLTQ4NSw2ICs0ODgsMTkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRwdXRfdW5hbGlnbmVkKChjdXJfdmFsIFx1MDAyNiB0a2V5LVx1MDAzZW1hc2spIF4gdmFsLCBwdHIpO1xuK1xuK1x0XHQvKiBUcmFjayBpZiBMMyBvciBMNCBoZWFkZXJzIHdlcmUgbW9kaWZpZWQ6XG4rXHRcdCAqIC0gRGlyZWN0IEwzL0w0IGhlYWRlciB0eXBlc1xuK1x0XHQgKiAtIEVUSCBoZWFkZXIgdHlwZSB3aXRoIG9mZnNldC9sZW5ndGggcmVhY2hpbmcgaW50byBMMy9MNFxuK1x0XHQgKi9cbitcdFx0aWYgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfTkVUV09SSyB8fFxuK1x0XHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDQgfHxcbitcdFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfSVA2IHx8XG4rXHRcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1RDUCB8fFxuK1x0XHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9VRFAgfHxcbitcdFx0ICAgIChodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX0VUSCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICB3cml0ZV9vZmZzZXQgKyAoaW50KXNpemVvZigqcHRyKSBcdTAwM2Ugbndfb2Zmc2V0KSlcbitcdFx0XHRsM19sNF9jaGFuZ2VkID0gdHJ1ZTtcbiBcdH1cbiBcbiBcdGdvdG8gZG9uZTtcbkBAIC00OTIsNiArNTA4LDkgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBiYWQ6XG4gXHR0Y2ZfYWN0aW9uX2luY19vdmVybGltaXRfcXN0YXRzKFx1MDAyNnAtXHUwMDNlY29tbW9uKTtcbiBkb25lOlxuK1x0aWYgKGwzX2w0X2NoYW5nZWQpXG4rXHRcdG5mX3Jlc2V0X2N0KHNrYik7XG4rXG4gXHRyZXR1cm4gcGFybXMtXHUwMDNlYWN0aW9uO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uXG5pbmRleCA4YWI0OGRlZjg5YjZhLi4xOGE3NzM3NDgzNTgwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uXG5AQCAtNzQyLDUgKzc0MiwxNzMgQEBcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgY2xzYWN0XCJcbiAgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImMyYTlcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBjb25udHJhY2sgcmVzZXQgYWZ0ZXIgcGVkaXQgbW9kaWZpZXMgSVAgcHJvdG9jb2xcIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgICAgICAgIFwiY3RcIixcbisgICAgICAgICAgICBcInBlZGl0XCIsXG4rICAgICAgICAgICAgXCJzY2FweVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFtcbisgICAgICAgICAgICAgICAgXCJuc1BsdWdpblwiLFxuKyAgICAgICAgICAgICAgICBcInNjYXB5UGx1Z2luXCJcbisgICAgICAgICAgICBdXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgW1xuKyAgICAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICAgICAgMCxcbisgICAgICAgICAgICAgICAgMSxcbisgICAgICAgICAgICAgICAgMixcbisgICAgICAgICAgICAgICAgMjU1XG4rICAgICAgICAgICAgXSxcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgaWNtcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFwiLFxuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgaXAgcHJvdG9jb2wgc2V0IDEgcGlwZSBhY3Rpb24gY3N1bSBpcDRoIGNvbnRpbnVlXCIsXG4rICAgICAgICBcInNjYXB5XCI6IHtcbisgICAgICAgICAgICBcImlmYWNlXCI6IFwiJERFVjBcIixcbisgICAgICAgICAgICBcImNvdW50XCI6IDEsXG4rICAgICAgICAgICAgXCJwYWNrZXRcIjogXCJFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JzEwLjAuMC4xMCcsZHN0PScxMC4wLjAuMjAnLHByb3RvPTYpL1RDUChzcG9ydD0xMjM0LGRwb3J0PTgwLGZsYWdzPSdTJylcIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBJTlZBTElEJ1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJeXFxcXFsxOjQwXFxcXF1cIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCJcbisgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImQzYjhcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBjb25udHJhY2sgcmVzZXQgYWZ0ZXIgVENQIHBvcnQgbW9kaWZpY2F0aW9uXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImFjdGlvbnNcIixcbisgICAgICAgICAgICBcImN0XCIsXG4rICAgICAgICAgICAgXCJwZWRpdFwiLFxuKyAgICAgICAgICAgIFwic2NhcHlcIlxuKyAgICAgICAgXSxcbisgICAgICAgIFwicGx1Z2luc1wiOiB7XG4rICAgICAgICAgICAgXCJyZXF1aXJlc1wiOiBbXG4rICAgICAgICAgICAgICAgIFwibnNQbHVnaW5cIixcbisgICAgICAgICAgICAgICAgXCJzY2FweVBsdWdpblwiXG4rICAgICAgICAgICAgXVxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFtcbisgICAgICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgICAgIDAsXG4rICAgICAgICAgICAgICAgIDEsXG4rICAgICAgICAgICAgICAgIDIsXG4rICAgICAgICAgICAgICAgIDI1NVxuKyAgICAgICAgICAgIF0sXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIixcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIHRjcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIElOVkFMSUQgLWogRFJPUFwiLFxuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGlwX3Byb3RvIHRjcCBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIHRjcCBzcG9ydCBzZXQgOTk5OSBwaXBlXCIsXG4rICAgICAgICBcInNjYXB5XCI6IHtcbisgICAgICAgICAgICBcImlmYWNlXCI6IFwiJERFVjBcIixcbisgICAgICAgICAgICBcImNvdW50XCI6IDEsXG4rICAgICAgICAgICAgXCJwYWNrZXRcIjogXCJFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JzEwLjAuMC4xMCcsZHN0PScxMC4wLjAuMjAnKS9UQ1Aoc3BvcnQ9MTIzNCxkcG9ydD04MCxmbGFncz0nUycpXCJcbisgICAgICAgIH0sXG4rICAgICAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICAgICAgXCJ2ZXJpZnlDbWRcIjogXCJpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJ2N0c3RhdGUgSU5WQUxJRCdcIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwiXlxcXFxbMTo0MFxcXFxdXCIsXG4rICAgICAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiXG4rICAgICAgICBdXG4rICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCJhMWIyXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJWZXJpZnkgY29ubnRyYWNrIE5PVCByZXNldCB3aGVuIHBlZGl0IG1vZGlmaWVzIG9ubHkgTUFDXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImFjdGlvbnNcIixcbisgICAgICAgICAgICBcImN0XCIsXG4rICAgICAgICAgICAgXCJwZWRpdFwiLFxuKyAgICAgICAgICAgIFwic2NhcHlcIlxuKyAgICAgICAgXSxcbisgICAgICAgIFwicGx1Z2luc1wiOiB7XG4rICAgICAgICAgICAgXCJyZXF1aXJlc1wiOiBbXG4rICAgICAgICAgICAgICAgIFwibnNQbHVnaW5cIixcbisgICAgICAgICAgICAgICAgXCJzY2FweVBsdWdpblwiXG4rICAgICAgICAgICAgXVxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFtcbisgICAgICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgICAgIDAsXG4rICAgICAgICAgICAgICAgIDEsXG4rICAgICAgICAgICAgICAgIDIsXG4rICAgICAgICAgICAgICAgIDI1NVxuKyAgICAgICAgICAgIF0sXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIixcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1wIGljbXAgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBORVcgLWogRFJPUFwiLFxuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgJERFVjEgaW5ncmVzc1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERFVjEgaW5ncmVzcyBwcm90b2NvbCBpcCBwcmlvIDEgZmxvd2VyIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgZXRoIHNyYyBzZXQgMTE6MjI6MzM6NDQ6NTU6NjYgcGlwZVwiLFxuKyAgICAgICAgXCJzY2FweVwiOiB7XG4rICAgICAgICAgICAgXCJpZmFjZVwiOiBcIiRERVYwXCIsXG4rICAgICAgICAgICAgXCJjb3VudFwiOiAxLFxuKyAgICAgICAgICAgIFwicGFja2V0XCI6IFwiRXRoZXIoc3JjPSdhYTpiYjpjYzpkZDplZTpmZicsdHlwZT0weDgwMCkvSVAoc3JjPScxMC4wLjAuMTEnLGRzdD0nMTAuMC4wLjIxJykvSUNNUCgpXCJcbisgICAgICAgIH0sXG4rICAgICAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICAgICAgXCJ2ZXJpZnlDbWRcIjogXCJpcHRhYmxlcy1zYXZlIC1jIC10IHJhdyB8IGdyZXAgJ2N0c3RhdGUgTkVXJ1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJeXFxcXFsxOjI4XFxcXF1cIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCJcbisgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImI3ZjRcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBjb25udHJhY2sgcmVzZXQgd2hlbiBFVEggd3JpdGUgZXh0ZW5kcyBpbnRvIElQIGxheWVyXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImFjdGlvbnNcIixcbisgICAgICAgICAgICBcImN0XCIsXG4rICAgICAgICAgICAgXCJwZWRpdFwiLFxuKyAgICAgICAgICAgIFwic2NhcHlcIlxuKyAgICAgICAgXSxcbisgICAgICAgIFwicGx1Z2luc1wiOiB7XG4rICAgICAgICAgICAgXCJyZXF1aXJlc1wiOiBbXG4rICAgICAgICAgICAgICAgIFwibnNQbHVnaW5cIixcbisgICAgICAgICAgICAgICAgXCJzY2FweVBsdWdpblwiXG4rICAgICAgICAgICAgXVxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFtcbisgICAgICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgICAgIDAsXG4rICAgICAgICAgICAgICAgIDEsXG4rICAgICAgICAgICAgICAgIDIsXG4rICAgICAgICAgICAgICAgIDI1NVxuKyAgICAgICAgICAgIF0sXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIixcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtQSBQUkVST1VUSU5HIC1pICRERVYxIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBvZmZzZXQgMTIgdTMyIHNldCAweDA4MDA0NTAwIHBpcGUgY3N1bSBpcDRoIGNvbnRpbnVlXCIsXG4rICAgICAgICBcInNjYXB5XCI6IHtcbisgICAgICAgICAgICBcImlmYWNlXCI6IFwiJERFVjBcIixcbisgICAgICAgICAgICBcImNvdW50XCI6IDEsXG4rICAgICAgICAgICAgXCJwYWNrZXRcIjogXCJFdGhlcih0eXBlPTB4ODAwKS9JUChzcmM9JzEwLjAuMC4xMycsZHN0PScxMC4wLjAuMjMnKS9JQ01QKClcIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcImlwdGFibGVzLXNhdmUgLXQgcmF3IC1jIHwgZ3JlcCAnY3RzdGF0ZSBJTlZBTElEJ1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJeXFxcXFsxOjI4XFxcXF1cIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCJcbisgICAgICAgIF1cbiAgICAgfVxuIF1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5XG5pbmRleCA1MTFkNjZjMzZhMmEwLi4xOWI4YTFmZDFjNzE2IDEwMDc1NVxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHlcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5XG5AQCAtNjAwLDYgKzYwMCwxOCBAQCBkZWYgbXBfYmlucyhhbGx0ZXN0cyk6XG4gXG4gICAgIHJldHVybiAoc2VyaWFsLCBwYXJhbGxlbClcbiBcbittcF9wbSA9IE5vbmVcbittcF9hcmdzID0gTm9uZVxuK1xuK2RlZiBfX21wX2luaXRfXyhwbSwgYXJncyk6XG4rICAgIFwiXCJcIlxuKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIHdoZW4gZWFjaCB3b3JrZXIgcHJvY2VzcyBzdGFydHMuXG4rICAgIEl0IHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MncyBtZW1vcnkgc3BhY2UuXG4rICAgIFwiXCJcIlxuKyAgICBnbG9iYWwgbXBfcG0sIG1wX2FyZ3NcbisgICAgbXBfcG0gPSBwbVxuKyAgICBtcF9hcmdzID0gYXJnc1xuK1xuIGRlZiBfX21wX3J1bm5lcih0ZXN0cyk6XG4gICAgIChfLCB0c3IpID0gdGVzdF9ydW5uZXIobXBfcG0sIG1wX2FyZ3MsIHRlc3RzKVxuICAgICByZXR1cm4gdHNyLl90ZXN0c3VpdGVcbkBAIC02MTUsMTQgKzYyNywxMyBAQCBkZWYgdGVzdF9ydW5uZXJfbXAocG0sIGFyZ3MsIGFsbHRlc3RzKTpcbiAgICAgcHJpbnQoXCJFeGVjdXRpbmcge30gdGVzdHMgaW4gcGFyYWxsZWwgYW5kIHt9IGluIHNlcmlhbFwiLmZvcm1hdChsZW4ocGFyYWxsZWwpLCBsZW4oc2VyaWFsKSkpXG4gICAgIHByaW50KFwiVXNpbmcge30gYmF0Y2hlcyBhbmQge30gd29ya2Vyc1wiLmZvcm1hdChsZW4oYmF0Y2hlcyksIGFyZ3MubXApKVxuIFxuLSAgICAjIFdlIGNhbid0IHBpY2tsZSB0aGVzZSBvYmplY3RzIHNvIHdvcmthcm91bmQgdGhlbVxuLSAgICBnbG9iYWwgbXBfcG1cbi0gICAgbXBfcG0gPSBwbVxuLVxuLSAgICBnbG9iYWwgbXBfYXJnc1xuLSAgICBtcF9hcmdzID0gYXJnc1xuLVxuLSAgICB3aXRoIFBvb2woYXJncy5tcCkgYXMgcDpcbisgICAgIyBVc2UgdGhlICdpbml0aWFsaXplcicgdG8gcGFzcyB0aGUgdW5waWNrbGVhYmxlL3NoYXJlZCBvYmplY3RzXG4rICAgICMgdG8gZWFjaCB3b3JrZXIgcHJvY2VzcyBleGFjdGx5IG9uY2UgdXBvbiBzdGFydHVwLlxuKyAgICB3aXRoIFBvb2woXG4rICAgICAgICBwcm9jZXNzZXM9YXJncy5tcCxcbisgICAgICAgIGluaXRpYWxpemVyPV9fbXBfaW5pdF9fLFxuKyAgICAgICAgaW5pdGFyZ3M9KHBtLCBhcmdzKVxuKyAgICApIGFzIHA6XG4gICAgICAgICBwcmVzID0gcC5tYXAoX19tcF9ydW5uZXIsIGJhdGNoZXMpXG4gXG4gICAgIHRzciA9IFRlc3RTdWl0ZVJlcG9ydCgpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowNzo1Mi4zNDMwNjYwNjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDQwNzEzNzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIFBhdGNoIGZvciBOZXR3b3JrIFNjaGVkdWxpbmcgQWN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJBaCwgaXQncyBtZXNzaW5nIHdpdGggYG5ldC9zY2hlZC9hY3RfbmF0LmNgIGFuZCBgbmV0L3NjaGVkL2FjdF9wZWRpdC5jYC5cIiBJbW1lZGlhdGVseSwgSSBzZWUgaXQncyBpbmplY3RpbmcgYG5mX3Jlc2V0X2N0KHNrYik7YCBpbnRvIHRoZSBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAgZnVuY3Rpb25zLCBidXQgb25seSBpZiBMMy9MNCBoZWFkZXJzIGhhdmUgYmVlbiBtb2RpZmllZC4gVGhpcyB0ZWxscyBtZSB3ZSdyZSBwb3RlbnRpYWxseSB0YWxraW5nIGFib3V0IGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gaG93IGNvbm5lY3Rpb24gdHJhY2tpbmcgaW50ZXJhY3RzIHdpdGggTkFUIGFuZCBwYWNrZXQgZWRpdGluZyB3aXRoaW4gdGhlIHRyYWZmaWMgY29udHJvbCBmcmFtZXdvcmsuIFRoaXMgaXMgaW1wb3J0YW50IHN0dWZmLCBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5LiBUaGVzZSBhcmUgZmVhdHVyZXMgZXhwb3NlZCB0aHJvdWdoIGB0Y2AsIHNvIHRoaXMgcGF0Y2ggY291bGQgaGF2ZSBzb21lIHByZXR0eSBicm9hZCBpbXBsaWNhdGlvbnMuXG5cbk5leHQgc3RlcDogbGV0J3MgZGlnIGludG8gYG5ldC9zY2hlZC9hY3RfbmF0LmNgIGFuZCBgbmV0L3NjaGVkL2FjdF9wZWRpdC5jYCB0byBjb25maXJtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIG1vZGlmeWluZyBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAsIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgdG91Y2hlZCBoZXJlLiBSZWFjaGluZyB0aGVzZSB2aWEgYHRjYCBjb21tYW5kcy4uLnRoYXQgbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBiZSBhYmxlIHRvIG1hcCB0aGVzZSBjaGFuZ2VzIHRvIGhvdyB0aGV54oCZcmUgY29uZmlndXJlZC5cblxuVGltZSB0byBsb29rIHVwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0LCBgbmV0L3NjaGVkL2FjdF9uYXQuY2AgaXMgbGlua2VkIHRvIGBDT05GSUdfTkVUX0FDVF9OQVRgLCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AgaXMsIG5hdHVyYWxseSwgYENPTkZJR19ORVRfQUNUX1BFRElUYC4gTm93IEkgaGF2ZSB0byBnbyBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlnIG9wdGlvbnMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcncyBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM5NywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA3OjU4LjM4Mzc4MzA5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDUyODg5MTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORVRfQUNUX05BVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTM1OD1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6MzU5OkNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0zNjAtQ09ORklHX05FVF9BQ1RfQlBGPW1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Mzc0PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzozNzU6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTM3Ni1DT05GSUdfTkVUX0FDVF9CUEY9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MTczPUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MTc0OkNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMTc1LUNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTc4PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6Nzk6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy04MC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz03ND1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjc1OkNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctNzYtQ09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTIwMT1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzoyMDI6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMjAzLUNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9MjA1PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoyMDY6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwNy1DT05GSUdfTkVUX0FDVF9QRURJVD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MjAyPUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjIwMzpDT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0yMDQtQ09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz0yNjc9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjI2ODpDT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMjY5LUNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz00MDc9Q09ORklHX05FVF9BQ1RfTUlSUkVEPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NDA4OkNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTQwOS1DT05GSUdfTkVUX0FDVF9QRURJVD1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9Mzk3PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjM5ODpDT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0zOTktQ09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oPTQ3PXN0YXRpYyBpbmxpbmUgaW50IHRjX2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTEwNC0jZW5kaWZcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6MTA1OiNpZiBJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX05BVClcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMTA2LVxcdGlmIChhLVxcdTAwM2VvcHMtXFx1MDAzZWFjdCA9PSB0Y2ZfbmF0X2FjdClcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0yMDM9c3RhdGljIGlubGluZSB2b2lkIHRjX3dyYXBwZXJfaW5pdCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTIyOC1cXHRcXHRJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX01QTFMpICtcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6MjI5OlxcdFxcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTkFUKSArXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTIzMC1cXHRcXHRJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX1RVTk5FTF9LRVkpICtcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkVUX0FDVF9TQU1QTEUpXFx0Kz0gYWN0X3NhbXBsZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19ORVRfQUNUX05BVClcXHQrPSBhY3RfbmF0Lm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTctb2JqLSQoQ09ORklHX05FVF9BQ1RfUEVESVQpXFx0Kz0gYWN0X3BlZGl0Lm9cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnPTg4PUNPTkZJR19ORVRfQUNUX1NBTVBMRT1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc6ODk6Q09ORklHX05FVF9BQ1RfTkFUPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy05MC1DT05GSUdfTkVUX0FDVF9QRURJVD1tXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA4OjAwLjQzNjY4MTAyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTczMDMxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgQ09ORklHX05FVF9BQ1RfUEVESVRgKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYENPTkZJR19ORVRfQUNUX1BFRElUYCBvcHRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB3aGF0IHRoZSBjdXJyZW50IHN0YXRlIGlzIGFuZCB3aGF0IGl0IGNvbnRyb2xzLiBJJ20gYXNzdW1pbmcgdGhpcyByZWxhdGVzIHRvIHRoZSBwYWNrZXQgZWRpdGluZyBhY3Rpb24sIGxpa2VseSB3aXRoaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcmssIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbi4gSSdsbCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyB0aGUga2VybmVsIGNvbmZpZyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgdGhhdCB3aXRoIHRoZSByZWxldmFudCBOZXRmaWx0ZXIgZG9jdW1lbnRhdGlvbiBvciBjb2RlLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eSAtIGRvZXMgaXQgcHJvdmlkZSBhcmJpdHJhcnkgcGFja2V0IG1vZGlmaWNhdGlvbiwgb3IgaXMgaXQgbW9yZSBjb25zdHJhaW5lZD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBpZiB0aGlzIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQ/IFNlY3VyaXR5IGltcGxpY2F0aW9ucyBhcmUgaW1tZWRpYXRlbHkgYXQgdGhlIGZvcmVmcm9udCBvZiBteSBtaW5kLCBhcyBwYWNrZXQgbWFuaXB1bGF0aW9uIGlzIGEgc2Vuc2l0aXZlIGFyZWEuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgYXR0YWNrIHN1cmZhY2UgdGhhdCB0aGlzIG9wdGlvbiBtYXkgZXhwb3NlLCBpZiBhbnkuIElzIHRoZXJlIGFueSBwYXJ0aWN1bGFyIGhhcmR3YXJlIHRoaXMgaXMgb3B0aW1pemVkIGZvcj9cblxuTmV4dCwgSSdsbCBjb25zaWRlciBpdHMgcm9sZSBpbiB2YXJpb3VzIG5ldHdvcmsgc2V0dXBzLiBJcyBpdCBjb21tb25seSB1c2VkIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzLCBvciBpcyBpdCBtb3JlIG9mIGEgbmljaGUgZmVhdHVyZT8gV2hhdCBhcmUgdGhlIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zPyBEb2VzIGl0IGludGVncmF0ZSB3ZWxsIHdpdGggb3RoZXIgTmV0ZmlsdGVyIGNvbXBvbmVudHMsIGxpa2UgaXB0YWJsZXMgb3IgbmZ0YWJsZXM/IEkgd2FudCB0byBhc3Nlc3MgaWYgaXQncyBjb25zaWRlcmVkIGEgcmVsaWFibGUgb3B0aW9uLlxuXG5JIGFsc28gd2FudCB0byBrbm93IHdoZXRoZXIgaXQgaGFzIGFueSBrbm93biBpc3N1ZXMgb3IgbGltaXRhdGlvbnMsIHBhcnRpY3VsYXJseSByZWdhcmRpbmcgY29uY3VycmVuY3kgb3IgZWRnZSBjYXNlcy4gQXJlIHRoZXJlIGFueSBrbm93biBleHBsb2l0cyBhc3NvY2lhdGVkIHdpdGggaXQsIG9yIGhhcyBpdCBiZWVuIHRoZSBzdWJqZWN0IG9mIGFueSB2dWxuZXJhYmlsaXR5IGRpc2Nsb3N1cmVzP1xuXG5GaW5hbGx5LCB3aGF0IGFyZSB0aGUgdXNlLWNhc2VzIHdoZXJlIHRoaXMgb3B0aW9uIGlzIGVzc2VudGlhbCBvciBoaWdobHkgYmVuZWZpY2lhbD8gV2hhdCBhcmUgdGhlIGFsdGVybmF0aXZlcywgYW5kIGhvdyBkbyB0aGV5IGNvbXBhcmUgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2UsIHNlY3VyaXR5LCBhbmQgZmxleGliaWxpdHk/IEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgaW5mb3JtYXRpb24gb24gdGhlIExpbnV4IEtlcm5lbCBNYWlsaW5nIExpc3QgdGhhdCBtYXkgaW5kaWNhdGUgYW55IHByb2JsZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDYzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MDQuNzMzOTg4MTI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzU5NDI3MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX05FVF9BQ1RfUEVESVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9MTc0PUNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MTc1OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy0xNzYtQ09ORklHX05FVF9BQ1RfU0lNUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz03OT1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjgwOkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy04MS1DT05GSUdfTkVUX0FDVF9TS0JFRElUPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnPTc1PUNPTkZJR19ORVRfQUNUX05BVD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6NzY6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnLTc3LUNPTkZJR19ORVRfQUNUX1NLQkVESVQ9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTIwMj1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzoyMDM6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yMDQtQ09ORklHX05FVF9BQ1RfU0lNUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTIwNj1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MjA3OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTIwOC1DT05GSUdfTkVUX0FDVF9TSU1QPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yMDM9Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6MjA0OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjA1LUNPTkZJR19ORVRfQUNUX1NJTVA9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnPTk2PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnOjk3OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL21pcHMvY29uZmlncy9yYjUzMl9kZWZjb25maWctOTgtQ09ORklHX01URD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTI2OD1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MjY5OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTI3MC1DT05GSUdfTkVUX0FDVF9TSU1QPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz00MDg9Q09ORklHX05FVF9BQ1RfTkFUPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NDA5OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctNDEwLUNPTkZJR19ORVRfQUNUX1NJTVA9bVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTM5OD1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzozOTk6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy00MDAtQ09ORklHX05FVF9BQ1RfU0lNUD1tXFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnPTEzOD1DT05GSUdfTkVUX0FDVF9NSVJSRUQ9bVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc6MTM5OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnLTE0MC1DT05GSUdfRldfTE9BREVSPW1cXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD00Nz1zdGF0aWMgaW5saW5lIGludCB0Y19hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC02MC0jZW5kaWZcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6NjE6I2lmIElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfUEVESVQpXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTYyLVxcdGlmIChhLVxcdTAwM2VvcHMtXFx1MDAzZWFjdCA9PSB0Y2ZfcGVkaXRfYWN0KVxcbi0tXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oPTIwMz1zdGF0aWMgaW5saW5lIHZvaWQgdGNfd3JhcHBlcl9pbml0KHZvaWQpXFxuLS1cXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMjE3LVxcdFxcdElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTUlSUkVEKSArXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjIxODpcXHRcXHRJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX1BFRElUKSArXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTIxOS1cXHRcXHRJU19CVUlMVElOKENPTkZJR19ORVRfQUNUX1NLQkVESVQpICtcXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfTkVUX0FDVF9OQVQpXFx0Kz0gYWN0X25hdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVxcdCs9IGFjdF9wZWRpdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19ORVRfQUNUX1NJTVApXFx0Kz0gYWN0X3NpbXBsZS5vXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTY5PUNPTkZJR19ORVRfQUNUX01JUlJFRD1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZzo3MDpDT05GSUdfTkVUX0FDVF9QRURJVD1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZy03MS1DT05GSUdfTkVUX0FDVF9UVU5ORUxfS0VZPW1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZz0yMj1DT05GSUdfTkVUX0FDVF9NUExTPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWc6MjM6Q09ORklHX05FVF9BQ1RfUEVESVQ9bVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZy0yNC1DT05GSUdfTkVUX0FDVF9QT0xJQ0U9bVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL2NvbmZpZz0xNT1DT05GSUdfTkVUX0FDVF9DU1VNPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnOjE2OkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnLTE3LUNPTkZJR19ORVRfQ0xTX0FDVD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZz04OT1DT05GSUdfTkVUX0FDVF9OQVQ9bVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnOjkwOkNPTkZJR19ORVRfQUNUX1BFRElUPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy05MS1DT05GSUdfTkVUX0FDVF9TSU1QPW1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MDYuODY5OTQwN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTMyNDY2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgTmV0d29yayBBY3Rpb24gTW9kdWxlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlc2UgbmV0d29yayBhY3Rpb24gbW9kdWxlcywgc3BlY2lmaWNhbGx5IGBORVRfQUNUX05BVGAgYW5kIGBORVRfQUNUX1BFRElUYC4gSSBrbm93IHRoZXJlIGFyZSBmdW5jdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0g4oCTIGB0Y2ZfbmF0X2FjdGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCwgcmVzcGVjdGl2ZWx5LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQsIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJ20gZ29pbmcgdG8gY2hlY2sgYG5ldC9zY2hlZC9LY29uZmlnYCB0byBzZWUgaG93IGBORVRfQUNUX05BVGAgYW5kIGBORVRfQUNUX1BFRElUYCBhcmUgZGVmaW5lZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBtaWdodCBoYXZlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlaXIgYXZhaWxhYmlsaXR5IGFuZCBob3cgdGhleSBjYW4gYmUgY29udHJvbGxlZCBkdXJpbmcga2VybmVsIGJ1aWxkcywgd2hpY2ggaW4gdHVybiBpbmZvcm1zIGhvdyBJIHVzZSB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTE3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MTAuMjYzMTk0Mzc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODM0MDU1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9BQ1RfTkFUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTc2My1cXG5uZXQvc2NoZWQvS2NvbmZpZzo3NjQ6Y29uZmlnIE5FVF9BQ1RfTkFUXFxubmV0L3NjaGVkL0tjb25maWctNzY1LVxcdHRyaXN0YXRlIFxcXCJTdGF0ZWxlc3MgTkFUXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODoxMi42NDY2MTE0MzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI2NjU5ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgTkVUX0FDVF9QRURJVCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgYE5FVF9BQ1RfUEVESVRgIGlzIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMgd2l0aCBuZXR3b3JraW5nIHJlbGF0ZWQga2VybmVsIGZlYXR1cmVzLCBpcyB0byBsb29rIGluIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgdXN1YWwgaG9tZSBmb3Igc2NoZWR1bGluZyBhbmQgdHJhZmZpYyBjb250cm9sIHJlbGF0ZWQgb3B0aW9ucy4gSSdtIGFzc3VtaW5nIGl0IHNob3VsZCBiZSBpbiB0aGVyZSwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlOyBhIHF1aWNrIGNoZWNrIHdpbGwga2VlcCBtZSBmcm9tIHdhc3RpbmcgdGltZSBpZiBpdCdzIGJlZW4gbW92ZWQgZWxzZXdoZXJlIGluIGEgbGF0ZXIga2VybmVsIHZlcnNpb24gb3IgcmVuYW1lZC4gVGltZSB0byBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg1NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA4OjE2LjQ3MzI3Nzg5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3NjA1MTIwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0FDVF9QRURJVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03NzMtXFxubmV0L3NjaGVkL0tjb25maWc6Nzc0OmNvbmZpZyBORVRfQUNUX1BFRElUXFxubmV0L3NjaGVkL0tjb25maWctNzc1LVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgRWRpdGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MTkuNjQ5MzQ4MDhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDczMTMwMDEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTkVUX0FDVF9OQVQgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGUgbmV0d29ya2luZyBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgc3Vycm91bmRpbmcgYE5FVF9BQ1RfTkFUYC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBhbHJlYWR5IGhhdmUgYSBkZWNlbnQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBidXQgYSBzcGVjaWZpYyBkZXBlbmRlbmN5IGNoZWNrIGlzIGEgZ29vZCBwcmFjdGljZSB0byBlbnN1cmUgdGhlIHN5c3RlbSBpcyBiZWluZyBjb25maWd1cmVkIGNvcnJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgY3J1Y2lhbCBpbnRlcmNvbm5lY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsJ3Mgc2NoZWR1bGluZyBsb2dpYy4gU28sIGBuZXQvc2NoZWQvS2NvbmZpZ2AgaXMgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQuIFRoYXQgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgY29uZGl0aW9uYWwgbG9naWMgYW5kIHJlbGF0aW9uc2hpcHMgdGhhdCBkZWZpbmUgd2hlbiBgTkVUX0FDVF9OQVRgIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgKndoeSouIEknbSBsb29raW5nIGZvciBjbHVlcyBhYm91dCBvdGhlciByZWxhdGVkIGZlYXR1cmVzLCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9yIGtlcm5lbCBtb2R1bGVzIHRoYXQgbWlnaHQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gd2hldGhlciB0aGlzIHNwZWNpZmljIGFjdGlvbiBpcyBhdmFpbGFibGUgYW5kIHdvcmtpbmcgYXMgaW50ZW5kZWQuIFRoaXMgaXMgYWJvdXQgbWFraW5nIHN1cmUgYWxsIHRoZSBwaWVjZXMgZml0IHRvZ2V0aGVyIHNlYW1sZXNzbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTIzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MjQuMzgwNjU3OTA0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NjAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NjA6XFx0XFxuIDc2MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNzYyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9zYW1wbGUuXFxuIDc2MzpcXHRcXG4gNzY0OlxcdGNvbmZpZyBORVRfQUNUX05BVFxcbiA3NjU6XFx0XFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxuIDc2NjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxuIDc2NzpcXHRcXHRoZWxwXFxuIDc2ODpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZG8gc3RhdGVsZXNzIE5BVCBvbiBJUHY0IHBhY2tldHMuICBZb3Ugc2hvdWxkIHVzZVxcbiA3Njk6XFx0XFx0ICBuZXRmaWx0ZXIgZm9yIE5BVCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxcbiA3NzA6XFx0XFxuIDc3MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNzcyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9uYXQuXFxuIDc3MzpcXHRcXG4gNzc0OlxcdGNvbmZpZyBORVRfQUNUX1BFRElUXFxuIDc3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxuIDc3NjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxuIDc3NzpcXHRcXHRoZWxwXFxuIDc3ODpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gbWFuZ2xlIHRoZSBjb250ZW50IG9mIHBhY2tldHMuXFxuIDc3OTpcXHRcXG4gNzgwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA3ODE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X3BlZGl0LlxcbiA3ODI6XFx0XFxuIDc4MzpcXHRjb25maWcgTkVUX0FDVF9TSU1QXFxuIDc4NDpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltcGxlIEV4YW1wbGUgKERlYnVnKVxcXCJcXG4gNzg1OlxcdFxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG4gNzg2OlxcdFxcdGhlbHBcXG4gNzg3OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBhZGQgYSBzaW1wbGUgYWN0aW9uIGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzLlxcbiA3ODg6XFx0XFx0ICBJdCBpcyBtZWFudCBhcyBhbiBleGFtcGxlIGFuZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiBJdCB3aWxsXFxuIDc4OTpcXHRcXHQgIHByaW50IGEgY29uZmlndXJlZCBwb2xpY3kgc3RyaW5nIGZvbGxvd2VkIGJ5IHRoZSBwYWNrZXQgY291bnRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MjQuMzgwODgzMDg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjQyNTYwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlcGVuZGVuY2llcyBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBpc3N1ZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgTkVUX0NMU19BQ1RgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgem9vbSBpbiBvbiBpdHMgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmVhdHVyZSBvciBtb2R1bGUgcmVsaWVzIHVwb24uIEEgcXVpY2sgc2NhbiBvZiB0aGUgY29kZSwgb3IgcGVyaGFwcyBldmVuIGEgbWVudGFsIG1hcCwgc2hvdWxkIHJldmVhbCB0aGUgY3J1Y2lhbCBsaW5rcy4gSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBhc3Nlc3MgKnRob3NlKiBkZXBlbmRlbmNpZXMsIGJlY2F1c2UgdGhlIHJvb3QgcHJvYmxlbSBpcyBtb3N0IGxpa2VseSBzdGVtbWluZyBmcm9tIGFuIHVuZGVybHlpbmcgZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCB5ZXQgZnVsbHkgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MzksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA4OjI3LjQ0NTE0MzYyOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNjM0NzM3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0NMU19BQ1RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6MjkuMzUxNTAxMDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDk4Mzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYE5FVF9DTFNfQUNUYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCdzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX0NMU19BQ1RgLiBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEknbSBhc3N1bWluZyBpdCdzIHRoZSByaWdodCBwbGFjZSwgYnV0IGJldHRlciB0byBiZSBzdXJlLiBJJ20gbG9va2luZyBmb3IgYW55IGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMgbGlrZSBvdGhlciBvcHRpb25zLCBzeW1ib2xzLCBvciBldmVuIG90aGVyIEtjb25maWcgZmlsZXMgdGhhdCBgTkVUX0NMU19BQ1RgIG1pZ2h0IHJlbHkgb24uIFRoaXMgaXMgbGlrZWx5IGEga2V5IGNvbXBvbmVudCBmb3IgdHJhZmZpYyBjbGFzc2lmaWNhdGlvbiBhbmQgYWN0aW9uLCBidXQgYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhbnkgbW9kaWZpY2F0aW9uIG9yIHRyb3VibGVzaG9vdGluZy4gSSdsbCBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyB0aGlzIGlzIGNvbm5lY3RlZCB0by4gSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgbGlrZWx5IHBvaW50IG1lIHRvIG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0aGF0IG1heSBoYXZlIGFuIGVmZmVjdCBvbiB0aGlzIGZlYXR1cmUsIG9yIG90aGVyIG1vZHVsZXMgdGhhdCBhcmUgY2xvc2VseSByZWxhdGVkLiBUaGlzIHdpbGwgcHJvdmlkZSBjb250ZXh0LCBhbmQgaGVscCBlbnN1cmUgSSBkb24ndCBicmVhayBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwODUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODozMi44MTI0OTAyOTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5OCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY5ODpcXHRcXG4gNjk5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA3MDA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZW1faXB0LlxcbiA3MDE6XFx0XFxuIDcwMjpcXHRjb25maWcgTkVUX0NMU19BQ1RcXG4gNzAzOlxcdFxcdGJvb2wgXFxcIkFjdGlvbnNcXFwiXFxuIDcwNDpcXHRcXHRzZWxlY3QgTkVUX0NMU1xcbiA3MDU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4gNzA2OlxcdFxcdGhlbHBcXG4gNzA3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdHJhZmZpYyBjb250cm9sIGFjdGlvbnMuIEFjdGlvbnNcXG4gNzA4OlxcdFxcdCAgZ2V0IGF0dGFjaGVkIHRvIGNsYXNzaWZpZXJzIGFuZCBhcmUgaW52b2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWxcXG4gNzA5OlxcdFxcdCAgY2xhc3NpZmljYXRpb24uIFRoZXkgYXJlIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBjbGFzc2lmaWNhdGlvblxcbiA3MTA6XFx0XFx0ICByZXN1bHQsIGluc3RhbnRseSBkcm9wIG9yIHJlZGlyZWN0IHBhY2tldHMsIGV0Yy5cXG4gNzExOlxcdFxcbiA3MTI6XFx0XFx0ICBBIHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBpcHJvdXRlMiBwYWNrYWdlIGlzIHJlcXVpcmVkIHRvIHVzZVxcbiA3MTM6XFx0XFx0ICBleHRlbmRlZCBtYXRjaGVzLlxcbiA3MTQ6XFx0XFxuIDcxNTpcXHRjb25maWcgTkVUX0FDVF9QT0xJQ0VcXG4gNzE2OlxcdFxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFBvbGljaW5nXFxcIlxcbiA3MTc6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODozMi44MTI2MjkwMDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3MTAyMjU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKk5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBgTkVUX0NMU19BQ1RgIGlzIGFjdGluZyBhcyBhIEJvb2xlYW4gc3dpdGNoLCBkZWNpZGluZyB3aGV0aGVyIHdlIGVuYWJsZSBgTkVUX0NMU2AgYW5kIGBORVRfWEdSRVNTYC4gVGhpbmtpbmcgYWJvdXQgd2hhdCdzIGFjdHVhbGx5IG5lZWRlZCBpbiB0aGUgYnJvYWRlciBwaWN0dXJlLCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBzZWVtIHRvIGJlIGBORVRfQUNUX05BVGAsIGBORVRfQUNUX1BFRElUYCwgYW5kIG9mIGNvdXJzZSwgYE5FVF9DTFNfQUNUYCBpdHNlbGYuIE15IGd1dCBzYXlzIHdlJ2xsIGFsc28gbmVlZCB0byBlbmFibGUgYE5FVF9TQ0hFRGAgdG8gZ2V0IHRoZSBzY2hlZHVsaW5nIGFzcGVjdHMgd29ya2luZy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgaGVhZGluZyBvdmVyIHRvIHRoZSB0b3Agb2YgYG5ldC9zY2hlZC9LY29uZmlnYCB0byBjb25maXJtIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsZXZhbnQgY29udGV4dCB0aGVyZS4gSXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIG5ldHdvcmsgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjM1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODozNi43ODM2NTUxODdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFRyYWZmaWMgY29udHJvbCBjb25maWd1cmF0aW9uLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIE5FVF9TQ0hFRFxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xcbiAgMTE6XFx0XFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXFxuICAxMjpcXHRcXHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXFxuICAxMzpcXHRcXHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xcbiAgMTQ6XFx0XFx0ICBcXFwiZmFpcmx5XFxcIiBoYXZlIGJlZW4gcHJvcG9zZWQuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgSWYgeW91IHNheSBOIGhlcmUsIHlvdSB3aWxsIGdldCB0aGUgc3RhbmRhcmQgcGFja2V0IHNjaGVkdWxlciwgd2hpY2hcXG4gIDE3OlxcdFxcdCAgaXMgYSBGSUZPIChmaXJzdCBjb21lLCBmaXJzdCBzZXJ2ZWQpLiBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmVcXG4gIDE4OlxcdFxcdCAgYWJsZSB0byBjaG9vc2UgZnJvbSBhbW9uZyBzZXZlcmFsIGFsdGVybmF0aXZlIGFsZ29yaXRobXMgd2hpY2ggY2FuXFxuICAxOTpcXHRcXHQgIHRoZW4gYmUgYXR0YWNoZWQgdG8gZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yXFxuICAyMDpcXHRcXHQgIGV4YW1wbGUgaWYgc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlcyBhcmUgcmVhbCB0aW1lIGRldmljZXMgdGhhdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowODozNi43ODM3NjEwNzdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4MTQ5Njc4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5ldHdvcmsgU2NoZWR1bGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgZ29pbmcgdG8gaGluZ2Ugb24gYE5FVF9TQ0hFRGAuIFRoYXQncyB0aGUgY29yZS4gVG8gZ2V0IHRoaXMgdGhpbmcgd29ya2luZywgSSdsbCBuZWVkIHRvIGVuYWJsZSBgTkVUX1NDSEVEYCwgYW5kIHRoZW4gSSdsbCBkZWZpbml0ZWx5IHdhbnQgYE5FVF9DTFNfQUNUYCwgYE5FVF9BQ1RfTkFUYCwgYW5kIGBORVRfQUNUX1BFRElUYCB0b28uIFRob3NlIGNvbmZpZ3MgYXJlIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhpcyB0eXBlIG9mIG5ldHdvcmsgdHJhZmZpYyBtYW5hZ2VtZW50LiBUaGUgdHdvIHByaW1hcnkgZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLiBUaGV5J3JlIHByb2JhYmx5IHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBOQVQgYW5kIHBhY2tldCBlZGl0aW5nIGhhcHBlbi5cblxuSG9sZCBvbiwgSSBzZWUgYG5mX3Jlc2V0X2N0KHNrYilgIGJlaW5nIHVzZWQuIFRoYXQgdGhyb3dzIGEgcmVkIGZsYWcuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVzZXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyB3b24ndCBjYXVzZSBhbnkgY29uZmxpY3RzIGFuZCBuZWVkcyB0byBiZSBzdXBwb3J0ZWQsIHdoYXQgTmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcz8gVGltZSB0byBkb3VibGUgY2hlY2sgdGhlIGluY2x1ZGVzLiBJcyBpdCBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAgb3IgYGluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaGAgdGhhdCBkZWZpbmVzIGl0PyBMZXQgbWUgY2hlY2sgdGhvc2UgZmlsZXMgZGlyZWN0bHksIGFuZCB2ZXJpZnkgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjIzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NDIuMzY1MjYxOTEyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA2MDI5NjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3Jlc2V0X2N0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L292cG4vaW8uYz0zNTY9bmV0ZGV2X3R4X3Qgb3Zwbl9uZXRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTM2Ni1cXHQvKiByZXNldCBuZXRmaWx0ZXIgc3RhdGUgKi9cXG5kcml2ZXJzL25ldC9vdnBuL2lvLmM6MzY3OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTM2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9MTQ5PXN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjU3OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTM1MD1zdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM3Ni1cXHRcXHRza2JfZHN0X2Ryb3Aoc2tiKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM3NzpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzc4LVxcdFxcdHJldHVybiBza19yZWNlaXZlX3NrYihcXHUwMDI2cG8tXFx1MDAzZXNrLCBza2IsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvdHVuLmM9MTAwMz1zdGF0aWMgbmV0ZGV2X3R4X3QgdHVuX25ldF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC90dW4uYy0xMDYyLVxcbmRyaXZlcnMvbmV0L3R1bi5jOjEwNjM6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5kcml2ZXJzL25ldC90dW4uYy0xMDY0LVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTMzMzY9c3RhdGljIG5ldGRldl90eF90IHN0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zMzczLVxcdFxcdHNrYl9kc3RfZHJvcChza2IpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozMzc0OlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTMzNzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmM9MzgyPXN0YXRpYyB2b2lkIHZyZl9uZl9zZXRfdW50cmFja2VkKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYy0zODctXFxuZHJpdmVycy9uZXQvdnJmLmM6Mzg4OnN0YXRpYyB2b2lkIHZyZl9uZl9yZXNldF9jdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTM4OS17XFxuZHJpdmVycy9uZXQvdnJmLmMtMzkwLVxcdGlmIChza2JfZ2V0X25mY3Qoc2tiKSA9PSBJUF9DVF9VTlRSQUNLRUQpXFxuZHJpdmVycy9uZXQvdnJmLmM6MzkxOlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvdnJmLmMtMzkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTM5NT1zdGF0aWMgaW50IHZyZl9pcDZfbG9jYWxfb3V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtMzk5LVxcbmRyaXZlcnMvbmV0L3ZyZi5jOjQwMDpcXHR2cmZfbmZfcmVzZXRfY3Qoc2tiKTtcXG5kcml2ZXJzL25ldC92cmYuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYz00NzU9c3RhdGljIGludCB2cmZfaXBfbG9jYWxfb3V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmMtNDc5LVxcbmRyaXZlcnMvbmV0L3ZyZi5jOjQ4MDpcXHR2cmZfbmZfcmVzZXRfY3Qoc2tiKTtcXG5kcml2ZXJzL25ldC92cmYuYy00ODEtXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYz01Nzc9c3RhdGljIHZvaWQgdnJmX2ZpbmlzaF9kaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTU5NS1cXG5kcml2ZXJzL25ldC92cmYuYzo1OTY6XFx0dnJmX25mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvdnJmLmMtNTk3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jPTYwMT1zdGF0aWMgaW50IHZyZl9maW5pc2hfb3V0cHV0NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZyZi5jLTYwOS1cXG5kcml2ZXJzL25ldC92cmYuYzo2MTA6XFx0dnJmX25mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvdnJmLmMtNjExLVxcbi0tXFxuZHJpdmVycy9uZXQvdnJmLmM9Nzk2PXN0YXRpYyBpbnQgdnJmX2ZpbmlzaF9vdXRwdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC92cmYuYy04MDQtXFxuZHJpdmVycy9uZXQvdnJmLmM6ODA1OlxcdHZyZl9uZl9yZXNldF9jdChza2IpO1xcbmRyaXZlcnMvbmV0L3ZyZi5jLTgwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE5MDI9c3RhdGljIGJvb2wgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVfbm9fbmwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xOTU1LVxcdHNrYl9leHRfcmVzZXQoc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxOTU2OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTk1Ny1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQtdHguYz0xMjY9bmV0ZGV2X3R4X3QgY3ZtX29jdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXR4LmMtMzUwLVxcdHNrYl9leHRfcmVzZXQoc2tiKTtcXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXR4LmM6MzUxOlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC10eC5jLTM1Mi1cXHRza2JfcmVzZXRfcmVkaXJlY3Qoc2tiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NTEzMz1zdGF0aWMgaW5saW5lIGJvb2wgc2tiX2hhc19leHRlbnNpb25zKHN0cnVjdCBza19idWZmICpza2IpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTUxMzUtXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo1MTM2OnN0YXRpYyBpbmxpbmUgdm9pZCBuZl9yZXNldF9jdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTEzNy17XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jPTQwNz12b2lkIGJhdGFkdl9pbnRlcmZhY2Vfcngoc3RydWN0IG5ldF9kZXZpY2UgKm1lc2hfaWZhY2UsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jLTQyNi1cXHQgKi9cXG5uZXQvYmF0bWFuLWFkdi9tZXNoLWludGVyZmFjZS5jOjQyNzpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9iYXRtYW4tYWR2L21lc2gtaW50ZXJmYWNlLmMtNDI4LVxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYz01ODU9c3RhdGljIHVuc2lnbmVkIGludCBicl9uZl9sb2NhbF9pbih2b2lkICpwcml2LFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYy01OTUtXFx0aWYgKHByb21pc2MpIHtcXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jOjU5NjpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmMtNTk3LVxcdFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jLTYwNy1cXHRpZiAoV0FSTl9PTl9PTkNFKHJlZmNvdW50X3JlYWQoXFx1MDAyNm5mY3QtXFx1MDAzZXVzZSkgIT0gMSkpIHtcXG5uZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jOjYwODpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmMtNjA5LVxcdFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9MjM5PXN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX3ByZSh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jLTI4Mi1cXHRkZWZhdWx0Olxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYzoyODM6XFx0XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMjg0LVxcdFxcdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmM9Mjk0PXN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfY3RfYnJpZGdlX2luKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYnJpZGdlL25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJpZGdlLmMtMzAxLVxcdGlmIChwcm9taXNjKSB7XFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JyaWRnZS5jOjMwMjpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icmlkZ2UuYy0zMDMtXFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4tLVxcbm5ldC9jb3JlL2dyby5jPTY1ND1zdGF0aWMgdm9pZCBuYXBpX3JldXNlX3NrYihzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvY29yZS9ncm8uYy02ODItXFx0XFx0c2tiX2V4dF9yZXNldChza2IpO1xcbm5ldC9jb3JlL2dyby5jOjY4MzpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9jb3JlL2dyby5jLTY4NC1cXHRcXHRza2ItXFx1MDAzZXNsb3dfZ3JvID0gMDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTExNjk9dm9pZCBza2JfcmVsZWFzZV9oZWFkX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0xMTg3LVxcdH1cXG5uZXQvY29yZS9za2J1ZmYuYzoxMTg4OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2NvcmUvc2tidWZmLmMtMTE4OS1cXHRza2JfZXh0X3Jlc2V0KHNrYik7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xNDk1PXZvaWQgbmFwaV9za2JfZnJlZV9zdG9sZW5faGVhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTQ5Ny1cXHRpZiAodW5saWtlbHkoc2tiLVxcdTAwM2VzbG93X2dybykpIHtcXG5uZXQvY29yZS9za2J1ZmYuYzoxNDk4OlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2NvcmUvc2tidWZmLmMtMTQ5OS1cXHRcXHRza2JfZHN0X2Ryb3Aoc2tiKTtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTYyNzg9dm9pZCBza2Jfc2NydWJfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgeG5ldClcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTYyODQtXFx0c2tiX2V4dF9yZXNldChza2IpO1xcbm5ldC9jb3JlL3NrYnVmZi5jOjYyODU6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvY29yZS9za2J1ZmYuYy02Mjg2LVxcdG5mX3Jlc2V0X3RyYWNlKHNrYik7XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmM9NDMzPWludCBpbmV0X2ZyYWdfcXVldWVfaW5zZXJ0KHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMtNDkyLVxcdGlmIChvZmZzZXQpXFxubmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jOjQ5MzpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L2luZXRfZnJhZ21lbnQuYy00OTQtXFxuLS1cXG5uZXQvaXB2NC9pcF9pbnB1dC5jPTE4OT12b2lkIGlwX3Byb3RvY29sX2RlbGl2ZXJfcmN1KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByb3RvY29sKVxcbi0tXFxubmV0L2lwdjQvaXBfaW5wdXQuYy0yMDQtXFx0XFx0XFx0fVxcbm5ldC9pcHY0L2lwX2lucHV0LmM6MjA1OlxcdFxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjQvaXBfaW5wdXQuYy0yMDYtXFx0XFx0fVxcbi0tXFxubmV0L2lwdjQvaXBtci5jPTE4Mzg9c3RhdGljIHZvaWQgaXBfZW5jYXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvaXBtci5jLTE4NjEtXFx0bWVtc2V0KFxcdTAwMjYoSVBDQihza2IpLVxcdTAwM2VvcHQpLCAwLCBzaXplb2YoSVBDQihza2IpLVxcdTAwM2VvcHQpKTtcXG5uZXQvaXB2NC9pcG1yLmM6MTg2MjpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L2lwbXIuYy0xODYzLX1cXG4tLVxcbm5ldC9pcHY0L2lwbXIuYz0yMTg5PWludCBpcF9tcl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBtci5jLTIyMzgtXFx0XFx0XFx0aWYgKG1yb3V0ZV9zaykge1xcbm5ldC9pcHY0L2lwbXIuYzoyMjM5OlxcdFxcdFxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjQvaXBtci5jLTIyNDAtXFx0XFx0XFx0XFx0cmF3X3Jjdihtcm91dGVfc2ssIHNrYik7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYz01MT12b2lkIG5mX2R1cF9pcHY0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhvb2tudW0sXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfZHVwX2lwdjQuYy02OS1cXHQvKiBBdm9pZCBjb3VudGluZyBjbG9uZWQgcGFja2V0cyB0b3dhcmRzIHRoZSBvcmlnaW5hbCBjb25uZWN0aW9uLiAqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9kdXBfaXB2NC5jOjcwOlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX2R1cF9pcHY0LmMtNzEtXFx0bmZfY3Rfc2V0KHNrYiwgTlVMTCwgSVBfQ1RfVU5UUkFDS0VEKTtcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jPTMxOD1pbnQgcmF3X3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYy0zMjQtXFx0fVxcbm5ldC9pcHY0L3Jhdy5jOjMyNTpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L3Jhdy5jLTMyNi1cXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM9MjA3MD1pbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMTgyLVxcdFxcdH1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjIxODM6XFx0XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIxODQtXFx0XFx0aWYgKG5zayA9PSBzaykge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMjIzLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjIyNDpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjIyNS1cXG4tLVxcbm5ldC9pcHY0L3VkcC5jPTIzNDk9c3RhdGljIGludCB1ZHBfcXVldWVfcmN2X29uZV9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdWRwLmMtMjM2MS1cXHR9XFxubmV0L2lwdjQvdWRwLmM6MjM2MjpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY0L3VkcC5jLTIzNjMtXFxuLS1cXG5uZXQvaXB2NC91ZHAuYz0yNTg4PWludCB1ZHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC91ZHAuYy0yNjU0LVxcdFxcdGdvdG8gZHJvcDtcXG5uZXQvaXB2NC91ZHAuYzoyNjU1OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjQvdWRwLmMtMjY1Ni1cXG4tLVxcbm5ldC9pcHY2L2lwNl9pbnB1dC5jPTQwMz12b2lkIGlwNl9wcm90b2NvbF9kZWxpdmVyX3JjdShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXh0aGRyLFxcbi0tXFxubmV0L2lwdjYvaXA2X2lucHV0LmMtNDc1LVxcdFxcdFxcdH1cXG5uZXQvaXB2Ni9pcDZfaW5wdXQuYzo0NzY6XFx0XFx0XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2Ni9pcDZfaW5wdXQuYy00NzctXFx0XFx0fVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX2R1cF9pcHY2LmM9NDc9dm9pZCBuZl9kdXBfaXB2NihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBob29rbnVtLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX2R1cF9pcHY2LmMtNTctI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZHVwX2lwdjYuYzo1ODpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9kdXBfaXB2Ni5jLTU5LVxcdG5mX2N0X3NldChza2IsIE5VTEwsIElQX0NUX1VOVFJBQ0tFRCk7XFxuLS1cXG5uZXQvaXB2Ni9yYXcuYz0zODg9aW50IHJhd3Y2X3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni9yYXcuYy0zOTctXFx0fVxcbm5ldC9pcHY2L3Jhdy5jOjM5ODpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY2L3Jhdy5jLTM5OS1cXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz0zOTY9c3RhdGljIGludCBzZWc2X2RvX3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZHN0X2VudHJ5ICpjYWNoZV9kc3QpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDY5LVxcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo0NzA6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDcxLVxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTkyOT1zdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHg2KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtOTQyLVxcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzo5NDM6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtOTQ0LVxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTk4Mj1zdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHg0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtOTkyLVxcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKTtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6OTkzOlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTk5NC1cXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMTMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZW5kX2R0X3ZyZl9jb3JlKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE2Ny1cXHRza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCBoZHJsZW4pO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMTY4OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExNjktXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTE3MzA9SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHRjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTgzOC1cXHRcXHR9XFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxODM5OlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODQwLVxcdFxcdGlmIChuc2sgPT0gc2spIHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTg3OS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE4ODA6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4ODEtXFxuLS1cXG5uZXQvaXB2Ni91ZHAuYz04MDY9c3RhdGljIGludCB1ZHB2Nl9xdWV1ZV9yY3Zfb25lX3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni91ZHAuYy04MTUtXFx0fVxcbm5ldC9pcHY2L3VkcC5jOjgxNjpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY2L3VkcC5jLTgxNy1cXG4tLVxcbm5ldC9pcHY2L3VkcC5jPTEwNjc9SU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHVkcHY2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvdWRwLmMtMTE1Mi1cXHRcXHRnb3RvIGRpc2NhcmQ7XFxubmV0L2lwdjYvdWRwLmM6MTE1MzpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9pcHY2L3VkcC5jLTExNTQtXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMjI1PXN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpsZW4pXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjU0LVxcbm5ldC9sMnRwL2wydHBfY29yZS5jOjEyNTU6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjU2LVxcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYz0xMDc9c3RhdGljIHZvaWQgbDJ0cF9ldGhfZGV2X3JlY3Yoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGRhdGFfbGVuKVxcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYy0xMjMtXFx0c2tiX2RzdF9kcm9wKHNrYik7XFxubmV0L2wydHAvbDJ0cF9ldGguYzoxMjQ6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTEyNS1cXG4tLVxcbm5ldC9sMnRwL2wydHBfaXAuYz0xMjU9c3RhdGljIGludCBsMnRwX2lwX3JlY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sMnRwL2wydHBfaXAuYy0xOTctXFxubmV0L2wydHAvbDJ0cF9pcC5jOjE5ODpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9sMnRwL2wydHBfaXAuYy0xOTktXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2lwNi5jPTEzNT1zdGF0aWMgaW50IGwydHBfaXA2X3JlY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sMnRwL2wydHBfaXA2LmMtMjA3LVxcbm5ldC9sMnRwL2wydHBfaXA2LmM6MjA4OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L2wydHAvbDJ0cF9pcDYuYy0yMDktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTYzMz1zdGF0aWMgaW5saW5lIGludCBpcF92c190dW5uZWxfeG1pdF9wcmVwYXJlKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTY0MS1cXHRpZiAocmV0ID09IE5GX0FDQ0VQVCkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NjQyOlxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy02NDMtXFx0XFx0c2tiX2ZvcndhcmRfY3N1bShza2IpO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jPTE4Nj1zdGF0aWMgaW50IGludGVybmFsX2Rldl9yZWN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtMTk2LVxcdHNrYl9kc3RfZHJvcChza2IpO1xcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzoxOTc6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtMTk4LVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xODY5PXN0YXRpYyBpbnQgcGFja2V0X3Jjdl9zcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5MDYtXFx0LyogZHJvcCBjb25udHJhY2sgcmVmZXJlbmNlICovXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTA3OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTA4LVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMTMzPXN0YXRpYyBpbnQgcGFja2V0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMjE5LVxcdC8qIGRyb3AgY29ubnRyYWNrIHJlZmVyZW5jZSAqL1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjIyMDpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjIyMS1cXG4tLVxcbm5ldC9zY2hlZC9hY3RfbWlycmVkLmM9MjU0PXN0YXRpYyBpbnQgdGNmX21pcnJlZF90b19kZXYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjZl9taXJyZWQgKm0sXFxuLS1cXG5uZXQvc2NoZWQvYWN0X21pcnJlZC5jLTMwMC1cXHQvKiBBbGwgbWlycmVkL3JlZGlyZWN0ZWQgc2ticyBzaG91bGQgY2xlYXIgcHJldmlvdXMgY3QgaW5mbyAqL1xcbm5ldC9zY2hlZC9hY3RfbWlycmVkLmM6MzAxOlxcdG5mX3Jlc2V0X2N0KHNrYl90b19zZW5kKTtcXG5uZXQvc2NoZWQvYWN0X21pcnJlZC5jLTMwMi1cXHRpZiAod2FudF9pbmdyZXNzIFxcdTAwMjZcXHUwMDI2ICFhdF9pbmdyZXNzKSAvKiBkcm9wIGRzdCBmb3IgZWdyZXNzIC1cXHUwMDNlIGluZ3Jlc3MgKi9cXG4tLVxcbm5ldC9zY2hlZC9hY3RfbmF0LmM9MTE1PVRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfbmF0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0yNTktb3V0Olxcbm5ldC9zY2hlZC9hY3RfbmF0LmM6MjYwOlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L3NjaGVkL2FjdF9uYXQuYy0yNjEtXFx0cmV0dXJuIGFjdGlvbjtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYz0zODA9VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy01MTEtXFx0aWYgKGwzX2w0X2NoYW5nZWQpXFxubmV0L3NjaGVkL2FjdF9wZWRpdC5jOjUxMjpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy01MTMtXFxuLS1cXG5uZXQvc2N0cC9pbnB1dC5jPTg4PWludCBzY3RwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3NjdHAvaW5wdXQuYy0xOTAtXFx0XFx0Z290byBkaXNjYXJkX3JlbGVhc2U7XFxubmV0L3NjdHAvaW5wdXQuYzoxOTE6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQvc2N0cC9pbnB1dC5jLTE5Mi1cXG4tLVxcbm5ldC94ZnJtL3hmcm1faW5wdXQuYz00NjY9aW50IHhmcm1faW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5leHRoZHIsIF9fYmUzMiBzcGksIGludCBlbmNhcF90eXBlKVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTczNi1cXG5uZXQveGZybS94ZnJtX2lucHV0LmM6NzM3OlxcdG5mX3Jlc2V0X2N0KHNrYik7XFxubmV0L3hmcm0veGZybV9pbnB1dC5jLTczOC1cXG4tLVxcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYz0yOTM9c3RhdGljIHZvaWQgeGZybWlfc2NydWJfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgeG5ldClcXG4tLVxcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYy0yOTktXFx0c2tiX2RzdF9kcm9wKHNrYik7XFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jOjMwMDpcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYy0zMDEtXFx0bmZfcmVzZXRfdHJhY2Uoc2tiKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NTkzPWludCB4ZnJtX291dHB1dF9yZXN1bWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy01OTctXFx0d2hpbGUgKGxpa2VseSgoZXJyID0geGZybV9vdXRwdXRfb25lKHNrYiwgZXJyKSkgPT0gMCkpIHtcXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjU5ODpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTk5LVxcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYz02MjI9c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTYzNS1cXHRza2JfZHN0X3NldChza2IsIGRzdCk7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MzY6XFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTYzNy1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9Mjg5MD1zdGF0aWMgdm9pZCB4ZnJtX3BvbGljeV9xdWV1ZV9wcm9jZXNzKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0yOTU5LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mjk2MDpcXHRcXHRuZl9yZXNldF9jdChza2IpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMjk2MS1cXHRcXHRza2JfZHN0X2Ryb3Aoc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NDQuNTcxMzA0NTc1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MDI0MzkyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmZfcmVzZXRfY3RgLCB3aGljaCBJIHNlZSBpcyBkZWZpbmVkIGFzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiB3aXRoaW4gYGluY2x1ZGUvbGludXgvc2tidWZmLmhgLiBHb29kLCBzbyBpdCdzIGEgc2ltcGxlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbm5lY3Rpb24gdHJhY2tpbmcgaW5mb3JtYXRpb24uIEl0J3Mgbm90IGNvbmRpdGlvbmFsIG9uIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIEhvd2V2ZXIsIGl0IHNlZW1zIHRoaXMgaXMgYmVpbmcgdXNlZCBpbiB0aGUgY29udGV4dCBvZiB0cmFmZmljIGNvbnRyb2wsIGdpdmVuIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMsIHRoZXJlZm9yZSwgc2hpZnRzIHRvIHRob3NlIHR3byBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBuZXQvc2NoZWQvYWN0X25hdC5jYCBhbmQgYG5ldC9zY2hlZC9hY3RfcGVkaXQuY2AgdG8gdW5kZXJzdGFuZCBob3cgYG5mX3Jlc2V0X2N0YCBpcyBiZWluZyBpbmNvcnBvcmF0ZWQgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gRnJvbSB3aGF0IEkgY2FuIHNlZSBzbyBmYXIsIHdlJ3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX0FDVGAsIGBORVRfQUNUX05BVGAsIGFuZCBgTkVUX0FDVF9QRURJVGAuIEkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIGluIHRoaXMgYXJlYS4gU3BlY2lmaWNhbGx5LCBgTkVUX0FDVF9OQVRgIGFuZCBgTkVUX0FDVF9QRURJVGAgYXJlIGRlcGVuZGVudCBvbiBgTkVUX0NMU19BQ1RgLCB3aGljaCwgaW4gdHVybiwgZGVwZW5kcyBvbiBgTkVUX1NDSEVEYC4gU28gd2UgaGF2ZSBhIGNsZWFyIGRlcGVuZGVuY3kgY2hhaW4gaGVyZTogYE5FVF9TQ0hFRGAgLVx1MDAzZSBgTkVUX0NMU19BQ1RgIC1cdTAwM2UgKGBORVRfQUNUX05BVGAsIGBORVRfQUNUX1BFRElUYCkuIEknbGwgZG91YmxlIGNoZWNrIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUgYWdhaW4gdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzA0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA4OjUwLjI3Mzc0OTA4N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3NjMzNDY4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIE5FVF9TQ0hFRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NTMuMDUwMDk2MzQxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDk4NzY0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBsb29raW5nIGF0LiBSaWdodCwgY29uZmlybWVkLiBOb3csIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFsbCBzZXQgdXAsIHRoZSBjb3JlIGNvbmZpZ3MgSSdtIGVuYWJsaW5nIGhlcmUgYXJlIGBORVRfU0NIRURgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9OQVRgLCBhbmQgYE5FVF9BQ1RfUEVESVRgLiBUaG9zZSBzaG91bGQgZ2l2ZSBtZSB3aGF0IEkgbmVlZC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBORVRfQUNUX05BVGAgZG9lc24ndCBpbnRyb2R1Y2UgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgdGhhdCBJJ20gb3Zlcmxvb2tpbmcuIE5vIHBvaW50IGluIG1ha2luZyBhc3N1bXB0aW9ucywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGlzIGxldmVsIG9mIGNvbmZpZ3VyYXRpb24uIEJldHRlciBzYWZlIHRoYW4gc29ycnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzgwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NTcuNjk5OTc2OTE3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NjA6XFx0XFxuIDc2MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNzYyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9zYW1wbGUuXFxuIDc2MzpcXHRcXG4gNzY0OlxcdGNvbmZpZyBORVRfQUNUX05BVFxcbiA3NjU6XFx0XFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxuIDc2NjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxuIDc2NzpcXHRcXHRoZWxwXFxuIDc2ODpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZG8gc3RhdGVsZXNzIE5BVCBvbiBJUHY0IHBhY2tldHMuICBZb3Ugc2hvdWxkIHVzZVxcbiA3Njk6XFx0XFx0ICBuZXRmaWx0ZXIgZm9yIE5BVCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxcbiA3NzA6XFx0XFxuIDc3MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNzcyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9uYXQuXFxuIDc3MzpcXHRcXG4gNzc0OlxcdGNvbmZpZyBORVRfQUNUX1BFRElUXFxuIDc3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxuIDc3NjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxuIDc3NzpcXHRcXHRoZWxwXFxuIDc3ODpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gbWFuZ2xlIHRoZSBjb250ZW50IG9mIHBhY2tldHMuXFxuIDc3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDg6NTcuNzAwMDk0Njc3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjI4Mjg0MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIENvcmUgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIHRoZXJlIGFyZSBubyBoaWRkZW4gZGVwZW5kZW5jaWVzIGhlcmUsIHRoYXQncyBnb29kLiBNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucy4gVGhlIHBhdGNoIGRvY3VtZW50YXRpb24gY2xlYXJseSBpbmRpY2F0ZXMgdGhhdCB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLiBUaGVyZWZvcmUsIG15IGBGb2N1c1N5bWJvbHNgIHZhcmlhYmxlLCBvciB3aGF0ZXZlciBlcXVpdmFsZW50IEknbSB1c2luZywgbmVlZHMgdG8gYmUgc2V0IHRvIHRob3NlIHR3byBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5LiBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAuIE5vdywgSSBqdXN0IG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlc2UgYXJlIGV4cG9ydGVkIHN5bWJvbHMgb3IgZGVmaW5lZCBhcyBzdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsIG1vZHVsZS4gSSBuZWVkIHRvIGtub3cgdGhlIHNjb3BlIG9mIHRoZWlyIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5MjEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA5OjAxLjAyMjkyNjUyM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNDUwMzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfbmF0X2FjdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC90Y193cmFwcGVyLmg9MzY9VENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX21wbHNfYWN0KTtcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg6Mzc6VENfSU5ESVJFQ1RfQUNUSU9OX0RFQ0xBUkUodGNmX25hdF9hY3QpO1xcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0zOC1UQ19JTkRJUkVDVF9BQ1RJT05fREVDTEFSRSh0Y2ZfcGVkaXRfYWN0KTtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD00Nz1zdGF0aWMgaW5saW5lIGludCB0Y19hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0xMDUtI2lmIElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfTkFUKVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDoxMDY6XFx0aWYgKGEtXFx1MDAzZW9wcy1cXHUwMDNlYWN0ID09IHRjZl9uYXRfYWN0KVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDoxMDc6XFx0XFx0cmV0dXJuIHRjZl9uYXRfYWN0KHNrYiwgYSwgcmVzKTtcXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtMTA4LSNlbmRpZlxcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYz0zNT1zdGF0aWMgaW50IHRjZl9uYXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IG5sYXR0ciAqZXN0LFxcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0xMTQtXFxubmV0L3NjaGVkL2FjdF9uYXQuYzoxMTU6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9uYXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0xMTYtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYz0zMTc9c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9uYXRfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0zMjAtXFx0Lm93bmVyXFx0XFx0PVxcdFRISVNfTU9EVUxFLFxcbm5ldC9zY2hlZC9hY3RfbmF0LmM6MzIxOlxcdC5hY3RcXHRcXHQ9XFx0dGNmX25hdF9hY3QsXFxubmV0L3NjaGVkL2FjdF9uYXQuYy0zMjItXFx0LmR1bXBcXHRcXHQ9XFx0dGNmX25hdF9kdW1wLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowOTowMy4yMjc0MzY5ODVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2MzQ0MDQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBmb3JtYXR0ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBbmFseXppbmcgVmFyaWFibGUgU2NvcGUqKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZXNlIHZhcmlhYmxlcywgc3BlY2lmaWNhbGx5IGBUQ19JTkRJUkVDVF9TQ09QRSBpbnRgIHR5cGVzLiBUaGF0IG1lYW5zIHRoZXNlIGludGVnZXJzIGFyZW4ndCBzdGF0aWM7IHRoZXkgaGF2ZSBzb21lIHNvcnQgb2YgZHluYW1pYyBvciBpbmRpcmVjdCBzY29wZS4gSXQncyBhIGNsdWUsIHBvdGVudGlhbGx5LCBhYm91dCBob3cgdGhleSdyZSB1c2VkIGFuZCBob3cgdGhlaXIgdmFsdWVzIGFyZSBtYW5hZ2VkLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uc2lkZXIgaW4gdGhlIG92ZXJhbGwgY29kZSBmbG93LlxuXG5Ob3csIGB0Y2ZfcGVkaXRfYWN0YCBpcyBhbHNvIGRlY2xhcmVkIHdpdGggdGhlIHNhbWUgaW5kaXJlY3Qgc2NvcGUuIFRoaXMgbWVhbnMgaXQgaGFzIHNpbWlsYXIgY2hhcmFjdGVyaXN0aWNzIGluIHRlcm1zIG9mIGxpZmV0aW1lIGFuZCBhY2Nlc3NpYmlsaXR5LiBHaXZlbiB0aGF0IGJvdGggYFRDX0lORElSRUNUX1NDT1BFIGludGAgYW5kIGB0Y2ZfcGVkaXRfYWN0YCBzaGFyZSB0aGUgc2FtZSBwcm9wZXJ0aWVzLCBhIGRlZXBlciBsb29rIGludG8gYHRjZl9wZWRpdF9hY3RgIGlzIHByb2JhYmx5IHdhcnJhbnRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXRzIHZhbHVlIGlzIHNldCBhbmQgdXNlZCBpbiByZWxhdGlvbiB0byBvdGhlciBwaWVjZXMgb2YgdGhlIGNvZGUuIExldCdzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY2NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA5OjA3LjA5MDg4MjQyNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3OTc4NjM0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfcGVkaXRfYWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaD0zNz1UQ19JTkRJUkVDVF9BQ1RJT05fREVDTEFSRSh0Y2ZfbmF0X2FjdCk7XFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjM4OlRDX0lORElSRUNUX0FDVElPTl9ERUNMQVJFKHRjZl9wZWRpdF9hY3QpO1xcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaC0zOS1UQ19JTkRJUkVDVF9BQ1RJT05fREVDTEFSRSh0Y2ZfcG9saWNlX2FjdCk7XFxuLS1cXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmg9NDc9c3RhdGljIGlubGluZSBpbnQgdGNfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXFxuLS1cXG5pbmNsdWRlL25ldC90Y193cmFwcGVyLmgtNjEtI2lmIElTX0JVSUxUSU4oQ09ORklHX05FVF9BQ1RfUEVESVQpXFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oOjYyOlxcdGlmIChhLVxcdTAwM2VvcHMtXFx1MDAzZWFjdCA9PSB0Y2ZfcGVkaXRfYWN0KVxcbmluY2x1ZGUvbmV0L3RjX3dyYXBwZXIuaDo2MzpcXHRcXHRyZXR1cm4gdGNmX3BlZGl0X2FjdChza2IsIGEsIHJlcyk7XFxuaW5jbHVkZS9uZXQvdGNfd3JhcHBlci5oLTY0LSNlbmRpZlxcbi0tXFxubmV0L3NjaGVkL2FjdF9wZWRpdC5jPTM1MD1zdGF0aWMgaW50IHBlZGl0X3NrYl9oZHJfb2Zmc2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtMzc5LVxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYzozODA6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9wZWRpdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvc2NoZWQvYWN0X3BlZGl0LmMtMzgxLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9wZWRpdC5jPTY0OD1zdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X3BlZGl0X29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy02NTEtXFx0Lm93bmVyXFx0XFx0PVxcdFRISVNfTU9EVUxFLFxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYzo2NTI6XFx0LmFjdFxcdFxcdD1cXHR0Y2ZfcGVkaXRfYWN0LFxcbm5ldC9zY2hlZC9hY3RfcGVkaXQuYy02NTMtXFx0LnN0YXRzX3VwZGF0ZVxcdD1cXHR0Y2ZfcGVkaXRfc3RhdHNfdXBkYXRlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowOTowOC45NzA2NzkzOTdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzNTY5Njk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGp1c3QgYW5hbHl6ZWQgdGhpcyBwYXRjaC4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5ICpmdW5jdGlvbmFsKiBhbmQsIGltcG9ydGFudGx5LCAqcmVhY2hhYmxlKi4gVGhlIHZlcmRpY3QgaXMgY2xlYXI6IFdvcnRoRnV6emluZz10cnVlLlxuXG5TcGVjaWZpY2FsbHksIHdlJ3JlIGxvb2tpbmcgYXQgY2hhbmdlcyBpbnZvbHZpbmcgdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBhY3Rpb25zIC0gTkFUIGFuZCBwZWRpdCAtIGFzIHRoZSBjb25maWdzIGBORVRfU0NIRURgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0FDVF9OQVRgLCBhbmQgYE5FVF9BQ1RfUEVESVRgIGluZGljYXRlLiBUaGUga2V5IHN5bWJvbHMgdGhhdCBjYXB0dXJlIG15IGF0dGVudGlvbiBhcmUgYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgaW4gYWRkaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byB0aGVzZSBhY3Rpb25zIHdoZW4gTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb3BlcmF0aW9uYWwgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgTkFUIGFuZCBwZWRpdCBhY3Rpb25zLiBBbmQsIGFzIHdlIGtub3csIGJvdGggTkFUIGFuZCBwZWRpdCBhcmUgdHJpZ2dlcmVkIHRocm91Z2ggdHJhZmZpYyBjb250cm9sICh0YykgY29tbWFuZHMsIG1lYW5pbmcgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IGFjY2Vzc2libGUuIFRoaXMgaXMgYSBwZXJmZWN0IHNjZW5hcmlvIGZvciBpbmplY3RpbmcgY3JhZnRlZCBwYWNrZXRzIHRvIHRyaWdnZXIgdGhpcyBtb2RpZmllZCBiZWhhdmlvciBhbmQgZGlzY292ZXIgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuTGV0J3MgbG9nIHRoaXMgY2hhbmdlIGFzIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQ0NywiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDk6MTQuMTA2MzgxMTc5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTMyODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQUNUX05BVFwiLFxuICAgIFwiTkVUX0FDVF9QRURJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9uYXRfYWN0XCIsXG4gICAgXCJ0Y2ZfcGVkaXRfYWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBgbmZfcmVzZXRfY3Qoc2tiKWAgdG8gYHRjZl9uYXRfYWN0YCBhbmQgYHRjZl9wZWRpdF9hY3RgIHdoZW4gTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzY2hlZHVsaW5nIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHRyYWZmaWMgY29udHJvbCAodGMpIGNvbW1hbmRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9BQ1RfTkFUXCIsXG4gICAgXCJORVRfQUNUX1BFRElUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX25hdF9hY3RcIixcbiAgICBcInRjZl9wZWRpdF9hY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGBuZl9yZXNldF9jdChza2IpYCB0byBgdGNmX25hdF9hY3RgIGFuZCBgdGNmX3BlZGl0X2FjdGAgd2hlbiBMMy9MNCBoZWFkZXJzIGFyZSBtb2RpZmllZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxpbmcgYWN0aW9ucyAoTkFUIGFuZCBwZWRpdCkgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgdHJhZmZpYyBjb250cm9sICh0YykgY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA5OjE0LjIxMzkyMzA5NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNTg1NDEzNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMTowOToxNC4yMTQ1MzI0NzVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAyNTc5MjY0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGNvbm50cmFjayBzdGF0ZSB0cmFja2luZyB3aGVuIHBhY2tldHMgYXJlIG1vZGlmaWVkIGJ5IHRjIGFjdGlvbnMgKE5BVCBhbmQgcGVkaXQpLiBJdCBkb2VzIHNvIGJ5IGNhbGxpbmcgYG5mX3Jlc2V0X2N0KHNrYilgIHRvIGNsZWFyIHRoZSBjb25udHJhY2sgc3RhdGUgaWYgTDMvTDQgaGVhZGVycyBhcmUgbW9kaWZpZWQuIFRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwYWNrZXQgbWV0YWRhdGEgKHNrYi1cXHUwMDNlbmZjdCkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIHJlbGF0ZWQgdG8gc2tiIG1hbmlwdWxhdGlvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOWNmZDc2ODhkY2QzNTQ0MjhkNWMwM2MzOWExYWQwMmJiMzFhYWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MDc6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X25hdC5jIGIvbmV0L3NjaGVkL2FjdF9uYXQuY1xuaW5kZXggYWJiMzMyZGVlODM2ZC4uMGMzZDNiODlkMzQ5OSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfbmF0LmNcbisrKyBiL25ldC9zY2hlZC9hY3RfbmF0LmNcbkBAIC0yNTcsNiArMjU3LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9uYXRfYWN0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHR9XG4gXG4gb3V0OlxuK1x0bmZfcmVzZXRfY3Qoc2tiKTtcbiBcdHJldHVybiBhY3Rpb247XG4gXG4gZHJvcDpcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbmluZGV4IGQ0ZDQ3YTk5MjFmNDUuLmIwNzkyNTdjMmI3YjYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmNcbisrKyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuY1xuQEAgLTM4Niw2ICszODYsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c3RydWN0IHRjZl9wZWRpdCAqcCA9IHRvX3BlZGl0KGEpO1xuIFx0c3RydWN0IHRjZl9wZWRpdF9rZXlfZXggKnRrZXlfZXg7XG4gXHRzdHJ1Y3QgdGNmX3BlZGl0X3Bhcm1zICpwYXJtcztcbitcdGJvb2wgbDNfbDRfY2hhbmdlZCA9IGZhbHNlO1xuIFx0c3RydWN0IHRjX3BlZGl0X2tleSAqdGtleTtcbiBcdGludCBpO1xuIFxuQEAgLTM5OCw3ICszOTksNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dGtleV9leCA9IHBhcm1zLVx1MDAzZXRjZnBfa2V5c19leDtcbiBcbiBcdGZvciAoaSA9IHBhcm1zLVx1MDAzZXRjZnBfbmtleXM7IGkgXHUwMDNlIDA7IGktLSwgdGtleSsrKSB7XG4tXHRcdGludCB3cml0ZV9vZmZzZXQsIHdyaXRlX2xlbjtcbitcdFx0aW50IHdyaXRlX29mZnNldCwgd3JpdGVfbGVuLCBud19vZmZzZXQ7XG4gXHRcdGludCBvZmZzZXQgPSB0a2V5LVx1MDAzZW9mZjtcbiBcdFx0aW50IGhvZmZzZXQgPSAwO1xuIFx0XHR1MzIgY3VyX3ZhbCwgdmFsO1xuQEAgLTQxOCw2ICs0MTksOCBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdGdvdG8gYmFkO1xuIFx0XHR9XG4gXG4rXHRcdG53X29mZnNldCA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpO1xuK1xuIFx0XHRpZiAodGtleS1cdTAwM2VvZmZtYXNrKSB7XG4gXHRcdFx0dTggKmQsIF9kO1xuIFx0XHRcdGludCBhdF9vZmZzZXQ7XG5AQCAtNDg1LDYgKzQ4OCwxOSBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR9XG4gXG4gXHRcdHB1dF91bmFsaWduZWQoKGN1cl92YWwgXHUwMDI2IHRrZXktXHUwMDNlbWFzaykgXiB2YWwsIHB0cik7XG4rXG4rXHRcdC8qIFRyYWNrIGlmIEwzIG9yIEw0IGhlYWRlcnMgd2VyZSBtb2RpZmllZDpcbitcdFx0ICogLSBEaXJlY3QgTDMvTDQgaGVhZGVyIHR5cGVzXG4rXHRcdCAqIC0gRVRIIGhlYWRlciB0eXBlIHdpdGggb2Zmc2V0L2xlbmd0aCByZWFjaGluZyBpbnRvIEwzL0w0XG4rXHRcdCAqL1xuK1x0XHRpZiAoaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9ORVRXT1JLIHx8XG4rXHRcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX0lQNCB8fFxuK1x0XHQgICAgaHR5cGUgPT0gVENBX1BFRElUX0tFWV9FWF9IRFJfVFlQRV9JUDYgfHxcbitcdFx0ICAgIGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfVENQIHx8XG4rXHRcdCAgICBodHlwZSA9PSBUQ0FfUEVESVRfS0VZX0VYX0hEUl9UWVBFX1VEUCB8fFxuK1x0XHQgICAgKGh0eXBlID09IFRDQV9QRURJVF9LRVlfRVhfSERSX1RZUEVfRVRIIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIHdyaXRlX29mZnNldCArIChpbnQpc2l6ZW9mKCpwdHIpIFx1MDAzZSBud19vZmZzZXQpKVxuK1x0XHRcdGwzX2w0X2NoYW5nZWQgPSB0cnVlO1xuIFx0fVxuIFxuIFx0Z290byBkb25lO1xuQEAgLTQ5Miw2ICs1MDgsOSBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX3BlZGl0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIGJhZDpcbiBcdHRjZl9hY3Rpb25faW5jX292ZXJsaW1pdF9xc3RhdHMoXHUwMDI2cC1cdTAwM2Vjb21tb24pO1xuIGRvbmU6XG4rXHRpZiAobDNfbDRfY2hhbmdlZClcbitcdFx0bmZfcmVzZXRfY3Qoc2tiKTtcbitcbiBcdHJldHVybiBwYXJtcy1cdTAwM2VhY3Rpb247XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9jdC5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cbmluZGV4IDhhYjQ4ZGVmODliNmEuLjE4YTc3Mzc0ODM1ODAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvY3QuanNvblxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2N0Lmpzb25cbkBAIC03NDIsNSArNzQyLDE3MyBAQFxuICAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4gICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBjbHNhY3RcIlxuICAgICAgICAgXVxuKyAgICB9LFxuKyAgICB7XG4rICAgICAgICBcImlkXCI6IFwiYzJhOVwiLFxuKyAgICAgICAgXCJuYW1lXCI6IFwiVmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBwZWRpdCBtb2RpZmllcyBJUCBwcm90b2NvbFwiLFxuKyAgICAgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgICAgICAgXCJjdFwiLFxuKyAgICAgICAgICAgIFwicGVkaXRcIixcbisgICAgICAgICAgICBcInNjYXB5XCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogW1xuKyAgICAgICAgICAgICAgICBcIm5zUGx1Z2luXCIsXG4rICAgICAgICAgICAgICAgIFwic2NhcHlQbHVnaW5cIlxuKyAgICAgICAgICAgIF1cbisgICAgICAgIH0sXG4rICAgICAgICBcInNldHVwXCI6IFtcbisgICAgICAgICAgICBbXG4rICAgICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgICAgICAwLFxuKyAgICAgICAgICAgICAgICAxLFxuKyAgICAgICAgICAgICAgICAyLFxuKyAgICAgICAgICAgICAgICAyNTVcbisgICAgICAgICAgICBdLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCIsXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUEgUFJFUk9VVElORyAtaSAkREVWMSAtcCBpY21wIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBpcCBwcm90b2NvbCBzZXQgMSBwaXBlIGFjdGlvbiBjc3VtIGlwNGggY29udGludWVcIixcbisgICAgICAgIFwic2NhcHlcIjoge1xuKyAgICAgICAgICAgIFwiaWZhY2VcIjogXCIkREVWMFwiLFxuKyAgICAgICAgICAgIFwiY291bnRcIjogMSxcbisgICAgICAgICAgICBcInBhY2tldFwiOiBcIkV0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0nMTAuMC4wLjEwJyxkc3Q9JzEwLjAuMC4yMCcscHJvdG89NikvVENQKHNwb3J0PTEyMzQsZHBvcnQ9ODAsZmxhZ3M9J1MnKVwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiaXB0YWJsZXMtc2F2ZSAtYyAtdCByYXcgfCBncmVwICdjdHN0YXRlIElOVkFMSUQnXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcIl5cXFxcWzE6NDBcXFxcXVwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuKyAgICB7XG4rICAgICAgICBcImlkXCI6IFwiZDNiOFwiLFxuKyAgICAgICAgXCJuYW1lXCI6IFwiVmVyaWZ5IGNvbm50cmFjayByZXNldCBhZnRlciBUQ1AgcG9ydCBtb2RpZmljYXRpb25cIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgICAgICAgIFwiY3RcIixcbisgICAgICAgICAgICBcInBlZGl0XCIsXG4rICAgICAgICAgICAgXCJzY2FweVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFtcbisgICAgICAgICAgICAgICAgXCJuc1BsdWdpblwiLFxuKyAgICAgICAgICAgICAgICBcInNjYXB5UGx1Z2luXCJcbisgICAgICAgICAgICBdXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgW1xuKyAgICAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICAgICAgMCxcbisgICAgICAgICAgICAgICAgMSxcbisgICAgICAgICAgICAgICAgMixcbisgICAgICAgICAgICAgICAgMjU1XG4rICAgICAgICAgICAgXSxcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgdGNwIC1tIGNvbm50cmFjayAtLWN0c3RhdGUgSU5WQUxJRCAtaiBEUk9QXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgaXBfcHJvdG8gdGNwIGFjdGlvbiBjdCBjb21taXQgcGlwZSBhY3Rpb24gcGVkaXQgZXggbXVuZ2UgdGNwIHNwb3J0IHNldCA5OTk5IHBpcGVcIixcbisgICAgICAgIFwic2NhcHlcIjoge1xuKyAgICAgICAgICAgIFwiaWZhY2VcIjogXCIkREVWMFwiLFxuKyAgICAgICAgICAgIFwiY291bnRcIjogMSxcbisgICAgICAgICAgICBcInBhY2tldFwiOiBcIkV0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0nMTAuMC4wLjEwJyxkc3Q9JzEwLjAuMC4yMCcpL1RDUChzcG9ydD0xMjM0LGRwb3J0PTgwLGZsYWdzPSdTJylcIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBJTlZBTElEJ1wiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJeXFxcXFsxOjQwXFxcXF1cIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgaW5ncmVzc1wiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1GXCJcbisgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImExYjJcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBjb25udHJhY2sgTk9UIHJlc2V0IHdoZW4gcGVkaXQgbW9kaWZpZXMgb25seSBNQUNcIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgICAgICAgIFwiY3RcIixcbisgICAgICAgICAgICBcInBlZGl0XCIsXG4rICAgICAgICAgICAgXCJzY2FweVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFtcbisgICAgICAgICAgICAgICAgXCJuc1BsdWdpblwiLFxuKyAgICAgICAgICAgICAgICBcInNjYXB5UGx1Z2luXCJcbisgICAgICAgICAgICBdXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgW1xuKyAgICAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICAgICAgMCxcbisgICAgICAgICAgICAgICAgMSxcbisgICAgICAgICAgICAgICAgMixcbisgICAgICAgICAgICAgICAgMjU1XG4rICAgICAgICAgICAgXSxcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLXAgaWNtcCAtbSBjb25udHJhY2sgLS1jdHN0YXRlIE5FVyAtaiBEUk9QXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkREVWMSBpbmdyZXNzXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiAkREVWMSBpbmdyZXNzIHByb3RvY29sIGlwIHByaW8gMSBmbG93ZXIgYWN0aW9uIGN0IGNvbW1pdCBwaXBlIGFjdGlvbiBwZWRpdCBleCBtdW5nZSBldGggc3JjIHNldCAxMToyMjozMzo0NDo1NTo2NiBwaXBlXCIsXG4rICAgICAgICBcInNjYXB5XCI6IHtcbisgICAgICAgICAgICBcImlmYWNlXCI6IFwiJERFVjBcIixcbisgICAgICAgICAgICBcImNvdW50XCI6IDEsXG4rICAgICAgICAgICAgXCJwYWNrZXRcIjogXCJFdGhlcihzcmM9J2FhOmJiOmNjOmRkOmVlOmZmJyx0eXBlPTB4ODAwKS9JUChzcmM9JzEwLjAuMC4xMScsZHN0PScxMC4wLjAuMjEnKS9JQ01QKClcIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcImlwdGFibGVzLXNhdmUgLWMgLXQgcmF3IHwgZ3JlcCAnY3RzdGF0ZSBORVcnXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcIl5cXFxcWzE6MjhcXFxcXVwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuKyAgICB7XG4rICAgICAgICBcImlkXCI6IFwiYjdmNFwiLFxuKyAgICAgICAgXCJuYW1lXCI6IFwiVmVyaWZ5IGNvbm50cmFjayByZXNldCB3aGVuIEVUSCB3cml0ZSBleHRlbmRzIGludG8gSVAgbGF5ZXJcIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgICAgICAgIFwiY3RcIixcbisgICAgICAgICAgICBcInBlZGl0XCIsXG4rICAgICAgICAgICAgXCJzY2FweVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFtcbisgICAgICAgICAgICAgICAgXCJuc1BsdWdpblwiLFxuKyAgICAgICAgICAgICAgICBcInNjYXB5UGx1Z2luXCJcbisgICAgICAgICAgICBdXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgW1xuKyAgICAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIGluZ3Jlc3NcIixcbisgICAgICAgICAgICAgICAgMCxcbisgICAgICAgICAgICAgICAgMSxcbisgICAgICAgICAgICAgICAgMixcbisgICAgICAgICAgICAgICAgMjU1XG4rICAgICAgICAgICAgXSxcbisgICAgICAgICAgICBcImlwdGFibGVzIC10IHJhdyAtRlwiLFxuKyAgICAgICAgICAgIFwiaXB0YWJsZXMgLXQgcmF3IC1BIFBSRVJPVVRJTkcgLWkgJERFVjEgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBJTlZBTElEIC1qIERST1BcIixcbisgICAgICAgICAgICBcIiRUQyBxZGlzYyBhZGQgZGV2ICRERVYxIGluZ3Jlc3NcIlxuKyAgICAgICAgXSxcbisgICAgICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGZpbHRlciBhZGQgZGV2ICRERVYxIGluZ3Jlc3MgcHJvdG9jb2wgaXAgcHJpbyAxIGZsb3dlciBhY3Rpb24gY3QgY29tbWl0IHBpcGUgYWN0aW9uIHBlZGl0IGV4IG11bmdlIG9mZnNldCAxMiB1MzIgc2V0IDB4MDgwMDQ1MDAgcGlwZSBjc3VtIGlwNGggY29udGludWVcIixcbisgICAgICAgIFwic2NhcHlcIjoge1xuKyAgICAgICAgICAgIFwiaWZhY2VcIjogXCIkREVWMFwiLFxuKyAgICAgICAgICAgIFwiY291bnRcIjogMSxcbisgICAgICAgICAgICBcInBhY2tldFwiOiBcIkV0aGVyKHR5cGU9MHg4MDApL0lQKHNyYz0nMTAuMC4wLjEzJyxkc3Q9JzEwLjAuMC4yMycpL0lDTVAoKVwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiaXB0YWJsZXMtc2F2ZSAtdCByYXcgLWMgfCBncmVwICdjdHN0YXRlIElOVkFMSUQnXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcIl5cXFxcWzE6MjhcXFxcXVwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkREVWMSBpbmdyZXNzXCIsXG4rICAgICAgICAgICAgXCJpcHRhYmxlcyAtdCByYXcgLUZcIlxuKyAgICAgICAgXVxuICAgICB9XG4gXVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHlcbmluZGV4IDUxMWQ2NmMzNmEyYTAuLjE5YjhhMWZkMWM3MTYgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5weVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGMucHlcbkBAIC02MDAsNiArNjAwLDE4IEBAIGRlZiBtcF9iaW5zKGFsbHRlc3RzKTpcbiBcbiAgICAgcmV0dXJuIChzZXJpYWwsIHBhcmFsbGVsKVxuIFxuK21wX3BtID0gTm9uZVxuK21wX2FyZ3MgPSBOb25lXG4rXG4rZGVmIF9fbXBfaW5pdF9fKHBtLCBhcmdzKTpcbisgICAgXCJcIlwiXG4rICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2Ugd2hlbiBlYWNoIHdvcmtlciBwcm9jZXNzIHN0YXJ0cy5cbisgICAgSXQgc2V0cyB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBpbiB0aGUgY2hpbGQgcHJvY2VzcydzIG1lbW9yeSBzcGFjZS5cbisgICAgXCJcIlwiXG4rICAgIGdsb2JhbCBtcF9wbSwgbXBfYXJnc1xuKyAgICBtcF9wbSA9IHBtXG4rICAgIG1wX2FyZ3MgPSBhcmdzXG4rXG4gZGVmIF9fbXBfcnVubmVyKHRlc3RzKTpcbiAgICAgKF8sIHRzcikgPSB0ZXN0X3J1bm5lcihtcF9wbSwgbXBfYXJncywgdGVzdHMpXG4gICAgIHJldHVybiB0c3IuX3Rlc3RzdWl0ZVxuQEAgLTYxNSwxNCArNjI3LDEzIEBAIGRlZiB0ZXN0X3J1bm5lcl9tcChwbSwgYXJncywgYWxsdGVzdHMpOlxuICAgICBwcmludChcIkV4ZWN1dGluZyB7fSB0ZXN0cyBpbiBwYXJhbGxlbCBhbmQge30gaW4gc2VyaWFsXCIuZm9ybWF0KGxlbihwYXJhbGxlbCksIGxlbihzZXJpYWwpKSlcbiAgICAgcHJpbnQoXCJVc2luZyB7fSBiYXRjaGVzIGFuZCB7fSB3b3JrZXJzXCIuZm9ybWF0KGxlbihiYXRjaGVzKSwgYXJncy5tcCkpXG4gXG4tICAgICMgV2UgY2FuJ3QgcGlja2xlIHRoZXNlIG9iamVjdHMgc28gd29ya2Fyb3VuZCB0aGVtXG4tICAgIGdsb2JhbCBtcF9wbVxuLSAgICBtcF9wbSA9IHBtXG4tXG4tICAgIGdsb2JhbCBtcF9hcmdzXG4tICAgIG1wX2FyZ3MgPSBhcmdzXG4tXG4tICAgIHdpdGggUG9vbChhcmdzLm1wKSBhcyBwOlxuKyAgICAjIFVzZSB0aGUgJ2luaXRpYWxpemVyJyB0byBwYXNzIHRoZSB1bnBpY2tsZWFibGUvc2hhcmVkIG9iamVjdHNcbisgICAgIyB0byBlYWNoIHdvcmtlciBwcm9jZXNzIGV4YWN0bHkgb25jZSB1cG9uIHN0YXJ0dXAuXG4rICAgIHdpdGggUG9vbChcbisgICAgICAgIHByb2Nlc3Nlcz1hcmdzLm1wLFxuKyAgICAgICAgaW5pdGlhbGl6ZXI9X19tcF9pbml0X18sXG4rICAgICAgICBpbml0YXJncz0ocG0sIGFyZ3MpXG4rICAgICkgYXMgcDpcbiAgICAgICAgIHByZXMgPSBwLm1hcChfX21wX3J1bm5lciwgYmF0Y2hlcylcbiBcbiAgICAgdHNyID0gVGVzdFN1aXRlUmVwb3J0KClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjA5OjE0LjIxNDUzNDE4NVoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI1Nzg5MjkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbm50cmFjayBTdGF0ZSBSZXNldCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIG92ZXIgdGhpcyBwYXRjaC4gSXQgZm9jdXNlcyBvbiBgbmV0L3NjaGVkL2FjdF9uYXQuY2AgYW5kIGBuZXQvc2NoZWQvYWN0X3BlZGl0LmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgY2FsbGluZyBgbmZfcmVzZXRfY3Qoc2tiKWAgaW4gdGhvc2UgYWN0aW9ucy4gSW4gdGhlIE5BVCBhY3Rpb24sIGl0J3MgYSBkaXJlY3QgY2FsbCBiZWZvcmUgcmV0dXJuaW5nLiBGb3IgdGhlIHBlZGl0IGFjdGlvbiwgaXQncyBjb25kaXRpb25hbCwgdHJpZ2dlcmVkIGlmIGVpdGhlciBMMyBvciBMNCBoZWFkZXJzIGhhdmUgYmVlbiB0b3VjaGVkLCBiYXNlZCBvbiBjaGVja2luZyBgaHR5cGVgIGFuZCBgd3JpdGVfb2Zmc2V0YC4gVGhleSBhbHNvIHVwZGF0ZWQgc29tZSB0ZXN0cyBhbmQgZml4ZWQgYSBtdWx0aXByb2Nlc3NpbmcgaXNzdWUgaW4gdGhlIHRlc3Rpbmcgc2NyaXB0cywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgdG8gc2VlLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cyB3aXRoIGFueSBrZXJuZWwgcGF0Y2gsIGlzIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEgYW5kIGNhbiBsZWFkIHRvIHNlcmlvdXMgdnVsbmVyYWJpbGl0aWVzLiBCdXQsIGRpZ2dpbmcgZGVlcGVyLCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhpcyBwYXRjaCBpcyAqbm90KiBpbnRyb2R1Y2luZyBzdWNoIHJpc2tzLiBgbmZfcmVzZXRfY3Qoc2tiKWAgc2ltcGx5IGNsZWFycyB0aGUgY29ubnRyYWNrIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgYHNrYmAuIEl0J3MgZXNzZW50aWFsbHkgYSByZXNldC5cblxuVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzLCBubyBuZXcgYWxsb2NhdGlvbnMsIG5vdGhpbmcgYmVpbmcgc2VudCB0byB1c2Vyc3BhY2UuIEl0IGlzIGp1c3QgZGVhbGluZyB3aXRoIGNvbm50cmFjayBzdGF0ZSBjaGFuZ2VzLiBUaGF0J3MgYSBnb29kIHNpZ24sIHNvIGl0IHNob3VsZCBub3QgaW50cm9kdWNlIHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBjaGVja2VkIHRoZSBkZWZpbml0aW9uIG9mIGBuZl9yZXNldF9jdGAgKGl0J3MgZWl0aGVyIGlubGluZSBpbiBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAgb3Igd2l0aGluIGBpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLmhgKS4gSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBvcGVyYXRpb246IGl0IGNhbGxzIGBuZl9jb25udHJhY2tfcHV0KHNrYi1cdTAwM2VuZmN0KWAgYW5kIHRoZW4gc2V0cyBgc2tiLVx1MDAzZW5mY3RgIHRvIGBOVUxMYC4gTm8gZmFuY3kgbWVtb3J5IG1hbmlwdWxhdGlvbiB0aGVyZTsgYWxsIG9wZXJhdGlvbnMgaW52b2x2ZSBzdHJ1Y3R1cmVzIGFscmVhZHkgbWFuYWdlZCB3aXRoaW4gdGhlIGtlcm5lbC5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBzaG91bGQgKm5vdCogdHJpZ2dlciBhIGBOZWVkc0tNU0FOYCBmbGFnLiBJdCBpcyBwdXJlbHkgYSBsb2dpYyBmaXggZm9yIGNvbm50cmFjayBzdGF0ZSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zLiBJJ20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byBza2IgbWFuaXB1bGF0aW9uLiBJIHdpbGwgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gbWFyayB0aGUgcGF0Y2ggYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzOTQsIk91dHB1dFRva2VucyI6MTU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MDk6MjQuNDcyNDMxMzc2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBjb25udHJhY2sgc3RhdGUgdHJhY2tpbmcgd2hlbiBwYWNrZXRzIGFyZSBtb2RpZmllZCBieSB0YyBhY3Rpb25zIChOQVQgYW5kIHBlZGl0KS4gSXQgZG9lcyBzbyBieSBjYWxsaW5nIGBuZl9yZXNldF9jdChza2IpYCB0byBjbGVhciB0aGUgY29ubnRyYWNrIHN0YXRlIGlmIEwzL0w0IGhlYWRlcnMgYXJlIG1vZGlmaWVkLiBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcGFja2V0IG1ldGFkYXRhIChza2ItXFx1MDAzZW5mY3QpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgYnVncyByZWxhdGVkIHRvIHNrYiBtYW5pcHVsYXRpb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgY29ubnRyYWNrIHN0YXRlIHRyYWNraW5nIHdoZW4gcGFja2V0cyBhcmUgbW9kaWZpZWQgYnkgdGMgYWN0aW9ucyAoTkFUIGFuZCBwZWRpdCkuIEl0IGRvZXMgc28gYnkgY2FsbGluZyBgbmZfcmVzZXRfY3Qoc2tiKWAgdG8gY2xlYXIgdGhlIGNvbm50cmFjayBzdGF0ZSBpZiBMMy9MNCBoZWFkZXJzIGFyZSBtb2RpZmllZC4gVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBhY2tldCBtZXRhZGF0YSAoc2tiLVxcdTAwM2VuZmN0KSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgcmVsYXRlZCB0byBza2IgbWFuaXB1bGF0aW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[1] Phase: Succeeded StartedAt: 2026-08-19 21:09:36 +0000 UTC FinishedAt: 2026-08-19 21:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-19 21:09:36 +0000 UTC FinishedAt: 2026-08-19 21:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2] Phase: Succeeded StartedAt: 2026-08-19 21:09:36 +0000 UTC FinishedAt: 2026-08-20 00:51:47 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-19 21:09:36 +0000 UTC FinishedAt: 2026-08-20 00:51:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-19 21:09:36 +0000 UTC FinishedAt: 2026-08-19 21:09:46 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-19 21:09:36 +0000 UTC FinishedAt: 2026-08-19 21:09:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww49rt/series-workfloww49rt-convert-artifact-796152469/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-19 21:09:46 +0000 UTC FinishedAt: 2026-08-19 21:26:40 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-19 21:09:46 +0000 UTC FinishedAt: 2026-08-19 21:26:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*86ef6bb6-3a19-4ec5-bc25-b531be0cce09,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-workfloww49rt/series-workfloww49rt-convert-artifact-796152469/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": "0d638931-b56b-465e-9565-947a92053d2b", "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-workfloww49rt/series-workfloww49rt-build-action-1748282107/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-19 21:09:46 +0000 UTC FinishedAt: 2026-08-19 21:26:30 +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:*86ef6bb6-3a19-4ec5-bc25-b531be0cce09,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-workfloww49rt/series-workfloww49rt-convert-artifact-796152469/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": "0d638931-b56b-465e-9565-947a92053d2b", "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-workfloww49rt/series-workfloww49rt-build-action-1748282107/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-19 21:26:40 +0000 UTC FinishedAt: 2026-08-19 21:26:40 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-19 21:26:40 +0000 UTC FinishedAt: 2026-08-19 21:26:40 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-19 21:26:40 +0000 UTC FinishedAt: 2026-08-19 21:26:50 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-19 21:26:40 +0000 UTC FinishedAt: 2026-08-19 21:26:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww49rt/series-workfloww49rt-convert-artifact-2689924208/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-19 21:26:50 +0000 UTC FinishedAt: 2026-08-19 21:29:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-19 21:26:50 +0000 UTC FinishedAt: 2026-08-19 21:29:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d638931-b56b-465e-9565-947a92053d2b,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-workfloww49rt/series-workfloww49rt-build-action-1748282107/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-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-19 21:29:49 +0000 UTC FinishedAt: 2026-08-19 21:29:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-19 21:29:49 +0000 UTC FinishedAt: 2026-08-19 21:29:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-19 21:29:49 +0000 UTC FinishedAt: 2026-08-19 21:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-19 21:29:49 +0000 UTC FinishedAt: 2026-08-19 21:46:57 +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:*86ef6bb6-3a19-4ec5-bc25-b531be0cce09,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-workfloww49rt/series-workfloww49rt-convert-artifact-2689924208/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": "d0ca049a-42c1-48b7-8a0e-28640ae74bfc", "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-workfloww49rt/series-workfloww49rt-build-action-819944812/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-19 21:29:49 +0000 UTC FinishedAt: 2026-08-19 21:46:47 +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:*86ef6bb6-3a19-4ec5-bc25-b531be0cce09,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-workfloww49rt/series-workfloww49rt-convert-artifact-2689924208/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": "d0ca049a-42c1-48b7-8a0e-28640ae74bfc", "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-workfloww49rt/series-workfloww49rt-build-action-819944812/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-19 21:46:57 +0000 UTC FinishedAt: 2026-08-19 21:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-19 21:46:57 +0000 UTC FinishedAt: 2026-08-19 21:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-19 21:46:57 +0000 UTC FinishedAt: 2026-08-19 21:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-19 21:46:57 +0000 UTC FinishedAt: 2026-08-19 21:49:23 +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:*d0ca049a-42c1-48b7-8a0e-28640ae74bfc,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-workfloww49rt/series-workfloww49rt-build-action-819944812/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-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-19 21:49:33 +0000 UTC FinishedAt: 2026-08-20 00:51:47 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-19 21:49:33 +0000 UTC FinishedAt: 2026-08-20 00:51:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"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:*0d638931-b56b-465e-9565-947a92053d2b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d0ca049a-42c1-48b7-8a0e-28640ae74bfc,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-workfloww49rt/series-workfloww49rt-build-action-1748282107/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-workfloww49rt/series-workfloww49rt-build-action-819944812/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-19 21:49:33 +0000 UTC FinishedAt: 2026-08-19 21:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-19 21:49:33 +0000 UTC FinishedAt: 2026-08-19 21:49:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"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-workfloww49rt/series-workfloww49rt-convert-artifact-2553520105/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-19 21:49:33 +0000 UTC FinishedAt: 2026-08-19 21:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-19 21:49:33 +0000 UTC FinishedAt: 2026-08-19 21:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-19 21:49:33 +0000 UTC FinishedAt: 2026-08-19 21:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-19 21:49:43 +0000 UTC FinishedAt: 2026-08-20 00:51:47 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww49rt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_nat_act","tcf_pedit_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_ACT","NET_ACT_NAT","NET_ACT_PEDIT"],"series_id":"3c039f83-8cb5-47ad-ba4b-fe051ee2c90d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-19 21:49:43 +0000 UTC FinishedAt: 2026-08-20 00:51:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d638931-b56b-465e-9565-947a92053d2b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d0ca049a-42c1-48b7-8a0e-28640ae74bfc,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-workfloww49rt/series-workfloww49rt-build-action-1748282107/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-workfloww49rt/series-workfloww49rt-build-action-819944812/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-workfloww49rt/series-workfloww49rt-convert-artifact-2553520105/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,}