Name: series-workflowlbtwf Phase: Succeeded StartedAt: 2026-08-25 19:00:26 +0000 UTC FinishedAt: 2026-08-25 20:13:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[0] Phase: Succeeded StartedAt: 2026-08-25 19:00:26 +0000 UTC FinishedAt: 2026-08-25 19:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 19:00:26 +0000 UTC FinishedAt: 2026-08-25 19:19:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_8852AU", "RTW89_8851BU", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_8852AU", "RTW89_8851BU", "MAC80211" ], "series_id": "226c4bf7-76bc-4ca6-afd5-2250bf9becf2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_fw_download", "rtw89_mac_partial_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUxQlUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtydHc4OV9tYWNfcGFydGlhbF9pbml0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIGZpcm13YXJlIGhlYWRlcnMgaW4gYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAuIEl0IGVuc3VyZXMgdGhhdCB0aGUgZmlybXdhcmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiB0aGUgaGVhZGVyIGFuZCBpdHMgc2VjdGlvbnMsIGFuZCB2YWxpZGF0ZXMgdGhlIHNlY3Rpb24gbnVtYmVyLiBXaXRob3V0IHRoZXNlIGNoZWNrcywgdGhlIGNvZGUgY291bGQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpcm13YXJlIGJ1ZmZlciwgd2hpY2ggY29uc3RpdHV0ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIGZpcm13YXJlIGJ1ZmZlciBpdHNlbGYgaXMgcG9wdWxhdGVkIGJ5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN1YnN5c3RlbSwgc28gcmVhZGluZyBwYXN0IGl0cyBsZW5ndGggaXMgYSBzcGF0aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgKE9PQiksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlcmVmb3JlLCBubyBLTVNBTi1zcGVjaWZpYyByaXNrcyAobGlrZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3IgaW5mby1sZWFrcykgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciAocnR3ODkpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gd2hlbiBsb2FkaW5nIGZpcm13YXJlLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlciB2aWEgYHJlcXVlc3RfZmlybXdhcmVgIGludGVyY2VwdGlvbiBvciBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwNDBjNmY0MGYxMTUyOWFhMGFmNWRlODg1YzA3MDc3NjcxZDQ1OWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxOToxNzoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IDAwOTljNWMwM2U3YTYuLmIyOTkxYmM5M2Y4NTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuQEAgLTE1Niw4ICYjNDM7MTU2LDI0IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlXG4gXHRpZiAoIWluZm8pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqZndfaGRyKSkge1xuJiM0MztcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpbmZvLVx1MDAzZXNlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9XNl9TRUNfTlVNKTtcbiYjNDM7XHRpZiAoIWluZm8tXHUwMDNlc2VjdGlvbl9udW0gfHwgaW5mby1cdTAwM2VzZWN0aW9uX251bSBcdTAwM2UgRldETF9TRUNUSU9OX01BWF9OVU0pIHtcbiYjNDM7XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O1tFUlJdaW52YWxpZCBmdyBzZWN0aW9uIG51bSAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRiYXNlX2hkcl9sZW4gPSBzdHJ1Y3Rfc2l6ZShmd19oZHIsIHNlY3Rpb25zLCBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtKTtcbiYjNDM7XHRpZiAoYmFzZV9oZHJfbGVuIFx1MDAzZSBsZW4pIHtcbiYjNDM7XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aW5mby1cdTAwM2VkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc3LCBGV19IRFJfVzdfRFlOX0hEUik7XG4gXHRpbmZvLVx1MDAzZWlkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1c3X0lETUVNX1NIQVJFX01PREUpO1xuIFxuQEAgLTQ1NSw5ICYjNDM7NDcxLDI1IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlXG4gXHRpbnQgcmV0O1xuIFx0dTMyIGk7XG4gXG4mIzQzO1x0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCpmd19oZHIpKSB7XG4mIzQzO1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGluZm8tXHUwMDNlc2VjdGlvbl9udW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NiwgRldfSERSX1YxX1c2X1NFQ19OVU0pO1xuJiM0MztcdGlmICghaW5mby1cdTAwM2VzZWN0aW9uX251bSB8fCBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtIFx1MDAzZSBGV0RMX1NFQ1RJT05fTUFYX05VTSkge1xuJiM0MztcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7W0VSUl1pbnZhbGlkIGZ3IHNlY3Rpb24gbnVtICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGluZm8tXHUwMDNlZHNwX2NoZWNrc3VtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTtcbiBcdGJhc2VfaGRyX2xlbiA9IHN0cnVjdF9zaXplKGZ3X2hkciwgc2VjdGlvbnMsIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuJiM0MztcdGlmIChiYXNlX2hkcl9sZW4gXHUwMDNlIGxlbikge1xuJiM0MztcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpbmZvLVx1MDAzZWR5bmFtaWNfaGRyX2VuID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzcsIEZXX0hEUl9WMV9XN19EWU5fSERSKTtcbiBcdGluZm8tXHUwMDNlaWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc3LCBGV19IRFJfVjFfVzdfSURNRU1fU0hBUkVfTU9ERSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUxQlUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtydHc4OV9tYWNfcGFydGlhbF9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzA0MGM2ZjQwZjExNTI5YWEwYWY1ZGU4ODVjMDcwNzc2NzFkNDU5YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDE5OjE3OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCmluZGV4IDAwOTljNWMwM2U3YTYuLmIyOTkxYmM5M2Y4NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMKQEAgLTE1Niw4ICYjNDM7MTU2LDI0IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlCiAJaWYgKCFpbmZvKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAobGVuICZsdDsgc2l6ZW9mKCpmd19oZHIpKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NiwgRldfSERSX1c2X1NFQ19OVU0pOwomIzQzOwlpZiAoIWluZm8tJmd0O3NlY3Rpb25fbnVtIHx8IGluZm8tJmd0O3NlY3Rpb25fbnVtICZndDsgRldETF9TRUNUSU9OX01BWF9OVU0pIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1pbnZhbGlkIGZ3IHNlY3Rpb24gbnVtICV1XG4mIzM0OywKJiM0MzsJCQkgIGluZm8tJmd0O3NlY3Rpb25fbnVtKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJYmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby0mZ3Q7c2VjdGlvbl9udW0pOwomIzQzOwlpZiAoYmFzZV9oZHJfbGVuICZndDsgbGVuKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NywgRldfSERSX1c3X0RZTl9IRFIpOwogCWluZm8tJmd0O2lkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci0mZ3Q7dzcsIEZXX0hEUl9XN19JRE1FTV9TSEFSRV9NT0RFKTsKIApAQCAtNDU1LDkgJiM0Mzs0NzEsMjUgQEAgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGUKIAlpbnQgcmV0OwogCXUzMiBpOwogCiYjNDM7CWlmIChsZW4gJmx0OyBzaXplb2YoKmZ3X2hkcikpIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWluZm8tJmd0O3NlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItJmd0O3c2LCBGV19IRFJfVjFfVzZfU0VDX05VTSk7CiYjNDM7CWlmICghaW5mby0mZ3Q7c2VjdGlvbl9udW0gfHwgaW5mby0mZ3Q7c2VjdGlvbl9udW0gJmd0OyBGV0RMX1NFQ1RJT05fTUFYX05VTSkgewomIzQzOwkJcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcbiYjMzQ7LAomIzQzOwkJCSAgaW5mby0mZ3Q7c2VjdGlvbl9udW0pOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtkc3BfY2hlY2tzdW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci0mZ3Q7dzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTsKIAliYXNlX2hkcl9sZW4gPSBzdHJ1Y3Rfc2l6ZShmd19oZHIsIHNlY3Rpb25zLCBpbmZvLSZndDtzZWN0aW9uX251bSk7CiYjNDM7CWlmIChiYXNlX2hkcl9sZW4gJmd0OyBsZW4pIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWluZm8tJmd0O2R5bmFtaWNfaGRyX2VuID0gbGUzMl9nZXRfYml0cyhmd19oZHItJmd0O3c3LCBGV19IRFJfVjFfVzdfRFlOX0hEUik7CiAJaW5mby0mZ3Q7aWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NywgRldfSERSX1YxX1c3X0lETUVNX1NIQVJFX01PREUpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jYC4gSXQgc2VlbXMgdG8gYmUgYWRkaW5nIGJvdW5kcyBjaGVja3Mgd2l0aGluIHRoZSBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYCBmdW5jdGlvbnMuIFRoZSBwYXRjaCBpcyBjaGVja2luZyBmb3IgYSBmZXcgdGhpbmdzOiBpZiB0aGUgaW5wdXQgbGVuZ3RoIChgbGVuYCkgaXMgbGVzcyB0aGFuIHRoZSBzaXplIG9mIHRoZSBmaXJtd2FyZSBoZWFkZXIgKGBmd19oZHJgKSwgYW5kIGlmIGBpbmZvLSZndDtzZWN0aW9uX251bWAgaXMgdmFsaWQsIHBsdXMgaWYgdGhlIGJhc2UgaGVhZGVyIGxlbmd0aCAoYGJhc2VfaGRyX2xlbmApIGV4Y2VlZHMgdGhlIGlucHV0IGxlbmd0aC4gVGhpcyBpcyBvYnZpb3VzbHkgYSBmaXJtd2FyZSBwYXJzaW5nIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgZ2V0cyBjYWxsZWQgZHVyaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGxpa2VseSB0aGUgYHByb2JlYCBmdW5jdGlvbi4KCk5vdywgbXkgbWluZCBpcyByYWNpbmcuLi4gKmNhbiogdGhpcyBkcml2ZXIsIGBydHc4OWAsIGJlIGZ1enplZD8gSXQmIzM5O3MgYSBSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciwgc28gbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBsaWtlbHkgUENJIG9yIFVTQi4gVGhlIHBhdGNoIG1ha2VzIGl0IGNsZWFyIGl0JiMzOTtzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlci4gU28sIFBDSSBlbXVsYXRpb24gbWlnaHQgYmUgYW4gb3B0aW9uLCBidXQgdGhhdCYjMzk7cyBub3Qgc3RyYWlnaHRmb3J3YXJkLiBSZWFsIGhhcmR3YXJlIGRyaXZlcnMsIHVubGVzcyBVU0Igb3Igd2l0aCBzcGVjaWZpYyBQQ0kgZnV6emluZywgYXJlIGdlbmVyYWxseSBhIHBhaW4gdG8gZnV6ei4KCldhaXQsIHRob3VnaC4uLiBTeXprYWxsZXIgaGFzIGJlZW4gbWFraW5nIHN0cmlkZXMgaW4gVVNCIGZ1enppbmcgKHdpdGggYGR1bW15X2hjZGApLCBhbmQgaGFzIHNvbWUgUENJIHN1cHBvcnQgdG9vLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyB0aGluZyBpcyBVU0IgY29ubmVjdGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgcnR3ODlgIGhhcyBhIFVTQiBpbnRlcmZhY2UuIElmIGl0IGRvZXMsIHRoZW4gZnV6emluZyBiZWNvbWVzIGEgbXVjaCBtb3JlIHJlYWxpc3RpYyBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODA0NTQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0yPW1lbnVjb25maWcgUlRXODlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5Olx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHJ0dzg5LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xOTA9Y29uZmlnIFJUVzg5X0RFQlVHTVNHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTkxOlx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg5IGRlYnVnIG1lc3NhZ2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5Mi1cdGRlcGVuZHMgb24gUlRXODlfQ09SRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xOTk9Y29uZmlnIFJUVzg5X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDA6XHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjAxLVx0ZGVwZW5kcyBvbiBSVFc4OV9DT1JFIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19SVFc4OV9DT1JFKSAmIzQzOz0gcnR3ODlfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQ6cnR3ODlfY29yZS15ICYjNDM7PSBjb3JlLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNS1cdFx0bWFjODAyMTEubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjIzOnJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCKSAmIzQzOz0gcnR3ODlfODg1MWIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToyNjpydHc4OV84ODUxYi1vYmpzIDo9IHJ0dzg4NTFiLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjctXHRcdCAgICBydHc4ODUxYl90YWJsZS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCRSkgJiM0Mzs9IHJ0dzg5Xzg4NTFiZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjMyOnJ0dzg5Xzg4NTFiZS1vYmpzIDo9IHJ0dzg4NTFiZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfUlRXODlfODg1MUJVKSAmIzQzOz0gcnR3ODlfODg1MWJ1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzU6cnR3ODlfODg1MWJ1LW9ianMgOj0gcnR3ODg1MWJ1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19SVFc4OV84ODUyQSkgJiM0Mzs9IHJ0dzg5Xzg4NTJhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Mzg6cnR3ODlfODg1MmEtb2JqcyA6PSBydHc4ODUyYS5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTM5LVx0XHQgICAgcnR3ODg1MmFfdGFibGUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19SVFc4OV84ODUyQUUpICYjNDM7PSBydHc4OV84ODUyYWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0NDpydHc4OV84ODUyYWUtb2JqcyA6PSBydHc4ODUyYWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJBVSkgJiM0Mzs9IHJ0dzg5Xzg4NTJhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQ3OnJ0dzg5Xzg4NTJhdS1vYmpzIDo9IHJ0dzg4NTJhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJfQ09NTU9OKSAmIzQzOz0gcnR3ODlfODg1MmJfY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTA6cnR3ODlfODg1MmJfY29tbW9uLW9ianMgOj0gcnR3ODg1MmJfY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19SVFc4OV84ODUyQikgJiM0Mzs9IHJ0dzg5Xzg4NTJiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTM6cnR3ODlfODg1MmItb2JqcyA6PSBydHc4ODUyYi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTU0LVx0XHQgICAgcnR3ODg1MmJfdGFibGUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19SVFc4OV84ODUyQkUpICYjNDM7PSBydHc4OV84ODUyYmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo1OTpydHc4OV84ODUyYmUtb2JqcyA6PSBydHc4ODUyYmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS02MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCVSkgJiM0Mzs9IHJ0dzg5Xzg4NTJidS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjYyOnJ0dzg5Xzg4NTJidS1vYmpzIDo9IHJ0dzg4NTJidS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfUlRXODlfODg1MkJUKSAmIzQzOz0gcnR3ODlfODg1MmJ0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjU6cnR3ODlfODg1MmJ0LW9ianMgOj0gcnR3ODg1MmJ0Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjYtXHRcdCAgICBydHc4ODUyYnRfcmZrLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJURSkgJiM0Mzs9IHJ0dzg5Xzg4NTJidGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3MDpydHc4OV84ODUyYnRlLW9ianMgOj0gcnR3ODg1MmJ0ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfUlRXODlfODg1MkMpICYjNDM7PSBydHc4OV84ODUyYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjczOnJ0dzg5Xzg4NTJjLW9ianMgOj0gcnR3ODg1MmMubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03NC1cdFx0ICAgIHJ0dzg4NTJjX3RhYmxlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3ODpvYmotJChDT05GSUdfUlRXODlfODg1MkNFKSAmIzQzOz0gcnR3ODlfODg1MmNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Nzk6cnR3ODlfODg1MmNlLW9ianMgOj0gcnR3ODg1MmNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19SVFc4OV84ODUyQ1UpICYjNDM7PSBydHc4OV84ODUyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4MjpydHc4OV84ODUyY3Utb2JqcyA6PSBydHc4ODUyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODQ6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBKSAmIzQzOz0gcnR3ODlfODkyMmEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NTpydHc4OV84OTIyYS1vYmpzIDo9IHJ0dzg5MjJhLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODY6XHRcdCAgICBydHc4OTIyYV9yZmsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODg6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBRSkgJiM0Mzs9IHJ0dzg5Xzg5MjJhZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg5OnJ0dzg5Xzg5MjJhZS1vYmpzIDo9IHJ0dzg5MjJhZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5MTpvYmotJChDT05GSUdfUlRXODlfODkyMkFVKSAmIzQzOz0gcnR3ODlfODkyMmF1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTI6cnR3ODlfODkyMmF1LW9ianMgOj0gcnR3ODkyMmF1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk0Om9iai0kKENPTkZJR19SVFc4OV84OTIyRCkgJiM0Mzs9IHJ0dzg5Xzg5MjJkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTU6cnR3ODlfODkyMmQtb2JqcyA6PSBydHc4OTIyZC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk2Olx0XHQgICAgcnR3ODkyMmRfcmZrLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19SVFc4OV84OTIyREUpICYjNDM7PSBydHc4OV84OTIyZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5OTpydHc4OV84OTIyZGUtb2JqcyA6PSBydHc4OTIyZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwMTpydHc4OV9jb3JlLSQoQ09ORklHX1JUVzg5X0RFQlVHKSAmIzQzOz0gZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDI6cnR3ODlfY29yZS0kKENPTkZJR19SVFc4OV9MRURTKSAmIzQzOz0gbGVkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTAzOnJ0dzg5X2NvcmUtJChDT05GSUdfUlRXODlfTEVEU19NQykgJiM0Mzs9IGxlZF9tYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA1Om9iai0kKENPTkZJR19SVFc4OV9QQ0kpICYjNDM7PSBydHc4OV9wY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDY6cnR3ODlfcGNpLXkgOj0gcGNpLm8gcGNpX2JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgJiM0Mzs9IHJ0dzg5X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwOTpydHc4OV91c2IteSA6PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMTpzdGF0aWMgY29uc3QgZ3VpZF90IHJ0dzg5X2d1aWQgPSBHVUlEX0lOSVQoMHhEMkE4QzNFOCwgMHg0QjY5LCAweDRGMDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMi1cdFx0XHRcdFx0ICAgMHg4MiwgMHhCRCwgMHhGRSwgMHg4Nixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE1OnN0YXRpYyB1MzIgcnR3ODlfYWNwaV90cmF2ZXJzYWxfb2JqZWN0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2LVx0XHRcdFx0ICAgICAgIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosIHU4ICpwb3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzItXHRcdGlmICh1bmxpa2VseShvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCA9PSAwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzM6XHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0LVx0XHRcdFx0ICAgIFwmIzM0OyVzOiBpbnZhbGlkIGJ1ZmZlciB0eXBlXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDQtXHRcdGlmICh1bmxpa2VseShvYmotXHUwMDNlcGFja2FnZS5jb3VudCA9PSAwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDU6XHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ2LVx0XHRcdFx0ICAgIFwmIzM0OyVzOiBpbnZhbGlkIHBhY2thZ2UgdHlwZVxcblwmIzM0OywgX19mdW5jX18pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTQ6XHRcdFx0c3ViX2xlbiA9IHJ0dzg5X2FjcGlfdHJhdmVyc2FsX29iamVjdChydHdkZXYsIGVsbSwgdG1wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU1LVx0XHRcdGlmICh1bmxpa2VseShzdWJfbGVuID09IDApKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYxLVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYyOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogdW5oYW5kbGVkIHR5cGU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjMtXHRcdFx0ICAgIF9fZnVuY19fLCBvYmotXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzpzdGF0aWMgdTMyIHJ0dzg5X2FjcGlfY2FsY3VsYXRlX29iamVjdF9sZW5ndGgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzQtXHRcdFx0XHRcdCAgICAgIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3NjpcdHJldHVybiBydHc4OV9hY3BpX3RyYXZlcnNhbF9vYmplY3QocnR3ZGV2LCBvYmosIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3OTpzdGF0aWMgc3RydWN0IHJ0dzg5X2FjcGlfZGF0YSAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo4MDpydHc4OV9hY3BpX2V2YWx1YXRlX21ldGhvZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKm1ldGhvZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTgxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTgyLVx0c3RydWN0IGFjcGlfYnVmZmVyIGJ1ZiA9IHtBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo4MzpcdHN0cnVjdCBydHc4OV9hY3BpX2RhdGEgKmRhdGEgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtODQtXHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtOTAtXHRpZiAoIXJvb3QpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjkxOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtOTItXHRcdFx0ICAgIFwmIzM0O2FjcGkgKCVzKTogZmFpbGVkIHRvIGdldCByb290XFxuXCYjMzQ7LCBtZXRob2QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTk3LVx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo5ODpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTk5LVx0XHRcdCAgICBcJiMzNDthY3BpICglcyk6IGZhaWxlZCB0byBnZXQgaGFuZGxlXFxuXCYjMzQ7LCBtZXRob2QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEwNC1cdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTA1Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTA2LVx0XHRcdCAgICBcJiMzNDthY3BpICglcyk6IGZhaWxlZCB0byBldmFsdWF0ZSBvYmplY3RcXG5cJiMzNDssIG1ldGhvZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTEwLVx0b2JqID0gYnVmLnBvaW50ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMTE6XHRsZW4gPSBydHc4OV9hY3BpX2NhbGN1bGF0ZV9vYmplY3RfbGVuZ3RoKHJ0d2Rldiwgb2JqKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTExMi1cdGlmICh1bmxpa2VseShsZW4gPT0gMCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjExMzpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTExNC1cdFx0XHQgICAgXCYjMzQ7YWNwaSAoJXMpOiBmYWlsZWQgdG8gdHJhdmVyc2FsIG9iaiBsZW5cXG5cJiMzNDssIG1ldGhvZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTIyLVx0ZGF0YS1cdTAwM2VsZW4gPSBsZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMjM6XHRydHc4OV9hY3BpX3RyYXZlcnNhbF9vYmplY3QocnR3ZGV2LCBvYmosIGRhdGEtXHUwMDNlYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEyNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0xMzA9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMzE6aW50IHJ0dzg5X2FjcGlfZHNtX2dldF92YWx1ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzItXHRcdFx0ICAgICB1OCAqdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTM0LVx0aWYgKG9iai1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMzU6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzYtXHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBpbnRlZ2VyIGJ1dCB0eXBlOiAlZFxcblwmIzM0Oywgb2JqLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE0NDpzdGF0aWMgYm9vbCBjaGtfYWNwaV9wb2xpY3lfNmdoel9zaWcoY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHogKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTE1MT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE1MjppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE1My1cdFx0XHRcdCAgIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNTQ6XHRcdFx0XHQgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoeiAqKnBvbGljeV82Z2h6KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTU1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE1NjpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV82Z2h6ICpwdHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNTctXHR1MzIgZXhwZWN0X2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjAtXHRpZiAob2JqLVx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTYxOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTYyLVx0XHRcdCAgICBcJiMzNDthY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcblwmIzM0Oywgb2JqLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2Ny1cdGlmIChsZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTY4Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2OS1cdFx0XHQgICAgX19mdW5jX18sIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTc0LVx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTc1Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTc2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xODAtXHRpZiAobGVuIFx1MDAzYyBleHBlY3RfbGVuKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxODE6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFwmIzM0OyVzOiBleHBlY3QgJXUgYnV0IGxlbmd0aDogJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xODItXHRcdFx0ICAgIF9fZnVuY19fLCBleHBlY3RfbGVuLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE5MDpcdHJ0dzg5X2hleF9kdW1wKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFwmIzM0O3BvbGljeV82Z2h6OiBcJiMzNDssICpwb2xpY3lfNmdoeixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE5MS1cdFx0ICAgICAgIGV4cGVjdF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE5NTpzdGF0aWMgYm9vbCBjaGtfYWNwaV9wb2xpY3lfNmdoel9zcF9zaWcoY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHpfc3AgKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xOTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTIwMz1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIwNDppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6X3NwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIwNS1cdFx0XHRcdCAgICAgIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMDY6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel9zcCAqKnBvbGljeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIwNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMDg6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel9zcCAqcHRyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjA5LVx0dTMyIGJ1Zl9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjExLVx0aWYgKG9iai1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIxMjpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxMy1cdFx0XHQgICAgXCYjMzQ7YWNwaTogZXhwZWN0IGJ1ZmZlciBidXQgdHlwZTogJWRcXG5cJiMzNDssIG9iai1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTgtXHRpZiAoYnVmX2xlbiBcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMTk6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFwmIzM0OyVzOiBpbnZhbGlkIGJ1ZmZlciBsZW5ndGg6ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjIwLVx0XHRcdCAgICBfX2Z1bmNfXywgYnVmX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjI1LVx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zcF9zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjI2Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjI3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMzQ6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDtwb2xpY3lfNmdoel9zcDogXCYjMzQ7LCAqcG9saWN5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjM1LVx0XHQgICAgICAgc2l6ZW9mKCpwdHIpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMzk6c3RhdGljIGJvb2wgY2hrX2FjcGlfcG9saWN5XzZnaHpfdmxwX3NpZyhjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel92bHAgKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTI0Nz1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI0ODppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6X3ZscChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNDktXHRcdFx0XHQgICAgICAgdW5pb24gYWNwaV9vYmplY3QgKm9iaixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI1MDpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel92bHAgKipwb2xpY3kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjUyOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHpfdmxwICpwdHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTMtXHR1MzIgYnVmX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTUtXHRpZiAob2JqLVx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjU2Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU3LVx0XHRcdCAgICBcJiMzNDthY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcblwmIzM0Oywgb2JqLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2Mi1cdGlmIChidWZfbGVuIFx1MDAzYyBzaXplb2YoKnB0cikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI2MzpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXCYjMzQ7JXM6IGludmFsaWQgYnVmZmVyIGxlbmd0aDogJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjQtXHRcdFx0ICAgIF9fZnVuY19fLCBidWZfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjktXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3ZscF9zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjcwOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjcxLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNzg6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDtwb2xpY3lfNmdoel92bHA6IFwmIzM0OywgKnBvbGljeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI3OS1cdFx0ICAgICAgIHNpemVvZigqcHRyKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjgzOnN0YXRpYyBib29sIGNoa19hY3BpX3BvbGljeV90YXNfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV90YXMgKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI5MTpzdGF0aWMgaW50IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfdGFzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Mi1cdFx0XHRcdFx0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTM6XHRcdFx0XHRcdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfdGFzICoqcG9saWN5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI5NTpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV90YXMgKnB0cjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Ni1cdHUzMiBidWZfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5OC1cdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfQlVGRkVSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTk6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDAtXHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxuXCYjMzQ7LCBvYmotXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzA1LVx0aWYgKGJ1Zl9sZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzA2Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMwNy1cdFx0XHQgICAgX19mdW5jX18sIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMxMi1cdGlmICghY2hrX2FjcGlfcG9saWN5X3Rhc19zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzEzOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzE0LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMjE6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDtwb2xpY3lfdGFzOiBcJiMzNDssICpwb2xpY3ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMjItXHRcdCAgICAgICBzaXplb2YoKnB0cikpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTMyNj1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMyNzpib29sIGNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV9yZWdfcnVsZXMgKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTMzNT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMzNjppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV9yZWdfcnVsZXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzM3LVx0XHRcdFx0XHR1bmlvbiBhY3BpX29iamVjdCAqb2JqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzM4Olx0XHRcdFx0XHRzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfcmVnX3J1bGVzICoqcG9saWN5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzM5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0MDpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV9yZWdfcnVsZXMgKnB0cjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0MS1cdHUzMiBidWZfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0My1cdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfQlVGRkVSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNDQ6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNDUtXHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxuXCYjMzQ7LCBvYmotXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzUwLVx0aWYgKGJ1Zl9sZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzUxOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1Mi1cdFx0XHQgICAgX19mdW5jX18sIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1Ny1cdGlmICghY2hrX2FjcGlfcG9saWN5X3JlZ19ydWxlc19zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzU4Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzU5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNjY6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDtwb2xpY3lfcmVnX3J1bGVzOiBcJiMzNDssICpwb2xpY3ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNjctXHRcdCAgICAgICBzaXplb2YoKnB0cikpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM3MTppbnQgcnR3ODlfYWNwaV9ldmFsdWF0ZV9kc20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzcyOlx0XHRcdCAgICBlbnVtIHJ0dzg5X2FjcGlfZHNtX2Z1bmMgZnVuYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM3MzpcdFx0XHQgICAgc3RydWN0IHJ0dzg5X2FjcGlfZHNtX3Jlc3VsdCAqcmVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNzg6XHRvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShBQ1BJX0hBTkRMRShydHdkZXYtXHUwMDNlZGV2KSwgXHUwMDI2cnR3ODlfZ3VpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM3OS1cdFx0XHRcdDAsIGZ1bmMsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzgwLVx0aWYgKCFvYmopIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM4MTpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM4Mi1cdFx0XHQgICAgXCYjMzQ7YWNwaSBkc20gZmFpbCB0byBldmFsdWF0ZSBmdW5jOiAlZFxcblwmIzM0OywgZnVuYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg2LVx0aWYgKGZ1bmMgPT0gUlRXODlfQUNQSV9EU01fRlVOQ182R19CUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM4NzpcdFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6KHJ0d2Rldiwgb2JqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg4LVx0XHRcdFx0XHRcdCAgICAgXHUwMDI2cmVzLVx1MDAzZXUucG9saWN5XzZnaHopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg5LVx0ZWxzZSBpZiAoZnVuYyA9PSBSVFc4OV9BQ1BJX0RTTV9GVU5DXzZHSFpfU1BfU1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzkwOlx0XHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfc3AocnR3ZGV2LCBvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTEtXHRcdFx0XHRcdFx0XHRcdTAwMjZyZXMtXHUwMDNldS5wb2xpY3lfNmdoel9zcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTItXHRlbHNlIGlmIChmdW5jID09IFJUVzg5X0FDUElfRFNNX0ZVTkNfNkdIWl9WTFBfU1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzkzOlx0XHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfdmxwKHJ0d2Rldiwgb2JqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzk0LVx0XHRcdFx0XHRcdFx0IFx1MDAyNnJlcy1cdTAwM2V1LnBvbGljeV82Z2h6X3ZscCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTUtXHRlbHNlIGlmIChmdW5jID09IFJUVzg5X0FDUElfRFNNX0ZVTkNfVEFTX0VOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mzk2Olx0XHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5X3RhcyhydHdkZXYsIG9iaiwgXHUwMDI2cmVzLVx1MDAzZXUucG9saWN5X3Rhcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTctXHRlbHNlIGlmIChmdW5jID09IFJUVzg5X0FDUElfRFNNX0ZVTkNfUkVHX1JVTEVTX0VOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mzk4Olx0XHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5X3JlZ19ydWxlcyhydHdkZXYsIG9iaixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM5OS1cdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVzLVx1MDAzZXUucG9saWN5X3JlZ19ydWxlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MDAtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0MDE6XHRcdHJldCA9IHJ0dzg5X2FjcGlfZHNtX2dldF92YWx1ZShydHdkZXYsIG9iaiwgXHUwMDI2cmVzLVx1MDAzZXUudmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDAyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQwNzppbnQgcnR3ODlfYWNwaV9ldmFsdWF0ZV9ydGFnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQwODpcdFx0XHQgICAgIHN0cnVjdCBydHc4OV9hY3BpX3J0YWdfcmVzdWx0ICpyZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDEwOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZGF0YSAqZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQxMS1cdHUzMiBidWZfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQxNDpcdGRhdGEgPSBydHc4OV9hY3BpX2V2YWx1YXRlX21ldGhvZChydHdkZXYsIFwmIzM0O1JUQUdcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDE1LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQxOS1cdGlmIChidWZfbGVuICE9IHNpemVvZigqcmVzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDIwOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQyMS1cdFx0XHQgICAgX19mdW5jX18sIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQyNjpcdCpyZXMgPSAqKHN0cnVjdCBydHc4OV9hY3BpX3J0YWdfcmVzdWx0ICopZGF0YS1cdTAwM2VidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0Mjg6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDthbnRlbm5hX2dhaW46IFwmIzM0OywgcmVzLCBzaXplb2YoKnJlcykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQzNTplbnVtIHJ0dzg5X2FjcGlfc2FyX3N1YmJhbmQgcnR3ODlfYWNwaV9zYXJfZ2V0X3N1YmJhbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDM2LVx0XHRcdFx0XHRcdCAgICAgICB1MzIgY2VudGVyX2ZyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDM5LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQ0MDpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ0MS1cdFx0XHQgICAgXCYjMzQ7Y2VudGVyIGZyZXEgJXUgdG8gQUNQSSBTQVIgc3ViYmFuZCBpcyB1bmhhbmRsZWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDY2LVx0ICogYW5kIFJUVzg5X0FDUElfU0FSXzZHSFpfU1VCQkFORF84LCBzbyBkaXJlY3RseSBkZXNjcmliZSBpdCB3aXRoXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0Njc6XHQgKiBzdHJ1Y3QgcnR3ODlfNmdoel9zcGFuLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDY4LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDc1OmVudW0gcnR3ODlfYmFuZCBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kX3RvX2JhbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDc2Olx0XHRcdFx0XHQgICAgICAgZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00Nzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ3OS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0ODA6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00ODEtXHRcdFx0ICAgIFwmIzM0O0FDUEkgU0FSIHN1YmJhbmQgJXUgdG8gYmFuZCBpcyB1bmhhbmRsZWRcXG5cJiMzNDssIHN1YmJhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjUwODpzdGF0aWMgdTggcnR3ODlfYWNwaV9zYXJfcmZwYXRoX3RvX2hwX2FudGlkeChlbnVtIHJ0dzg5X3JmX3BhdGggcmZwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTA5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1MTk6c3RhdGljIHU4IHJ0dzg5X2FjcGlfc2FyX3JmcGF0aF90b19ydF9hbnRpZHgoZW51bSBydHc4OV9yZl9wYXRoIHJmcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTMwOnN0YXRpYyBzMTYgcnR3ODlfYWNwaV9zYXJfbm9ybWFsaXplX2hwX3ZhbCh1OCB2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NDQ6c3RhdGljIHMxNiBydHc4OV9hY3BpX3Nhcl9ub3JtYWxpemVfcnRfdmFsKHU4IHYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTU1Nj1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU1Nzp2b2lkIHJ0dzg5X2FjcGlfc2FyX2xvYWRfc3RkX2xlZ2FjeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NTg6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfc2FyX3JlY29nbml0aW9uICpyZWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NTktXHRcdFx0XHQgICAgY29uc3Qgdm9pZCAqY29udGVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU2MDpcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU2MjpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zdGRfbGVnYWN5ICpwdHIgPSBjb250ZW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTYzOlx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NjQ6XHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU2NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz01Nzk9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODA6dm9pZCBydHc4OV9hY3BpX3Nhcl9sb2FkX3N0ZF9oYXNfNmdoeihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODE6XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfcmVjb2duaXRpb24gKnJlYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU4Mi1cdFx0XHRcdCAgICAgIGNvbnN0IHZvaWQgKmNvbnRlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODM6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTg0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU4NTpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zdGRfaGFzXzZnaHogKnB0ciA9IGNvbnRlbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODY6XHRlbnVtIHJ0dzg5X2FjcGlfc2FyX3N1YmJhbmQgc3ViYmFuZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU4NzpcdGVudW0gcnR3ODlfcmZfcGF0aCBwYXRoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTYwMD1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYwMTp2b2lkIHJ0dzg5X2FjcGlfc2FyX2xvYWRfc21sX2xlZ2FjeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDI6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfc2FyX3JlY29nbml0aW9uICpyZWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02MDMtXHRcdFx0XHQgICAgY29uc3Qgdm9pZCAqY29udGVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYwNDpcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjA1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYwNjpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zbWxfbGVnYWN5ICpwdHIgPSBjb250ZW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjA3Olx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDg6XHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz02MjM9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MjQ6dm9pZCBydHc4OV9hY3BpX3Nhcl9sb2FkX3NtbF9oYXNfNmdoeihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MjU6XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfcmVjb2duaXRpb24gKnJlYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYyNi1cdFx0XHRcdCAgICAgIGNvbnN0IHZvaWQgKmNvbnRlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2Mjc6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYyOTpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zbWxfaGFzXzZnaHogKnB0ciA9IGNvbnRlbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MzA6XHRlbnVtIHJ0dzg5X2FjcGlfc2FyX3N1YmJhbmQgc3ViYmFuZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYzMTpcdGVudW0gcnR3ODlfcmZfcGF0aCBwYXRoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjMyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY0NDpzdGF0aWMgczE2IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ub3JtYWxpemVfZGVsdGEoczggZGVsdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02NDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY1MzpzdGF0aWMgZW51bSBydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9ocFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjU0OnJ0dzg5X2FjcGlfZ2VvX3Nhcl9yZWdkX2NvbnZlcnRfaHBfaWR4KGVudW0gcnR3ODlfcmVndWxhdGlvbl90eXBlIHJlZ2QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02NTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY3NTpzdGF0aWMgZW51bSBydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Njc2OnJ0dzg5X2FjcGlfZ2VvX3Nhcl9yZWdkX2NvbnZlcnRfcnRfaWR4KGVudW0gcnR3ODlfcmVndWxhdGlvbl90eXBlIHJlZ2QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02Nzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTcwMD1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwMTp2b2lkIHJ0dzg5X2FjcGlfZ2VvX3Nhcl9sb2FkX2J5X2hwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwMjpcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX2dlb19zYXJfaHBfdmFsICpwdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MDM6XHRcdFx0XHQgICBlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aCwgczE2ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzA1Olx0dTggYW50aWR4ID0gcnR3ODlfYWNwaV9zYXJfcmZwYXRoX3RvX2hwX2FudGlkeChwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwNjpcdHMxNiBkZWx0YSA9IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ub3JtYWxpemVfZGVsdGEocHRyLVx1MDAzZWRlbHRhW2FudGlkeF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzA3Olx0czE2IG1heCA9IHJ0dzg5X2FjcGlfc2FyX25vcm1hbGl6ZV9ocF92YWwocHRyLVx1MDAzZW1heCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9NzEyPXN0YXRpY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzEzOnZvaWQgcnR3ODlfYWNwaV9nZW9fc2FyX2xvYWRfYnlfcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzE0Olx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ydF92YWwgKnB0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTcxNS1cdFx0XHRcdCAgIHMxNiAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcxNzpcdHMxNiBkZWx0YSA9IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ub3JtYWxpemVfZGVsdGEocHRyLVx1MDAzZWRlbHRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcxODpcdHMxNiBtYXggPSBydHc4OV9hY3BpX3Nhcl9ub3JtYWxpemVfcnRfdmFsKHB0ci1cdTAwM2VtYXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzE5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTcyMz1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcyNDp2b2lkIHJ0dzg5X2FjcGlfZ2VvX3Nhcl9sb2FkX2hwX2xlZ2FjeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MjUtXHRcdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqY29udGVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcyNjpcdFx0XHRcdCAgICAgICBlbnVtIHJ0dzg5X3JlZ3VsYXRpb25fdHlwZSByZWdkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzI3Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBydHc4OV9zYXJfZW50cnlfZnJvbV9hY3BpICplbnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03Mjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzI5Olx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ocF9sZWdhY3kgKnB0ciA9IGNvbnRlbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzA6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9nZW9fc2FyX2hwX2xlZ2FjeV9lbnRyeSAqcHRyX2VudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMTpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX2dlb19zYXJfaHBfdmFsICpwdHJfZW50X3ZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMjpcdGVudW0gcnR3ODlfYWNwaV9nZW9fc2FyX3JlZ2RfaHAgZ2VvX2lkeCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzM6XHRcdHJ0dzg5X2FjcGlfZ2VvX3Nhcl9yZWdkX2NvbnZlcnRfaHBfaWR4KHJlZ2QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzM0Olx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzU6XHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczNjpcdGVudW0gcnR3ODlfYmFuZCBiYW5kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzM3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTc0MC1cdGZvciAoc3ViYmFuZCA9IDA7IHN1YmJhbmQgXHUwMDNjIE5VTV9PRl9SVFc4OV9BQ1BJX1NBUl9TVUJCQU5EOyBzdWJiYW5kJiM0MzsmIzQzOykge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk0NzkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBydHc4OSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBydHc4OWAgZHJpdmVyLiBTZWVtcyBsaWtlIGl0JiMzOTtzIGEgUENJIGFuZCBVU0IgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBvcGVucyB1cCBwb3NzaWJpbGl0aWVzLiBJIHNlZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBjb25maXJtcyB0aGlzOiBgb2JqLSQoQ09ORklHX1JUVzg5X1BDSSkgJiM0Mzs9IHJ0dzg5X3BjaS5vYCBhbmQgYG9iai0kKENPTkZJR19SVFc4OV9VU0IpICYjNDM7PSBydHc4OV91c2Iub2AuIFRoZSBVU0Igc3VwcG9ydCBpcyBrZXkgaGVyZSwgYmVjYXVzZSB0aGF0IG1lYW5zIEkgY2FuIHByb2JhYmx5IGZ1enogaXQgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgZm9yIFVTQi1zcGVjaWZpYyBmdXp6aW5nLCB3aGljaCBpcyBhIGNvbW1vbiBhcHByb2FjaC4KCkJ1dCBoYW5nIG9uLCB0aGVyZSYjMzk7cyBhIHBhdGNoIG1vZGlmeWluZyBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYCBpbiBgZncuY2AuIFRoYXQgc2NyZWFtcyBmaXJtd2FyZSBwYXJzaW5nIHRvIG1lLiBBbmQgZmlybXdhcmUsIHRoYXQgdXN1YWxseSBpbnZvbHZlcyBgcmVxdWVzdF9maXJtd2FyZSgpYC4gTm93LCBjYW4gc3l6a2FsbGVyIGhhbmRsZSBmdXp6aW5nIGZpcm13YXJlIGxvYWRlZCB0aGlzIHdheT8gWWVhaCwgaXQmIzM5O3MgZGVmaW5pdGVseSBnb3Qgc3VwcG9ydCBmb3IgZnV6emluZyBgcmVxdWVzdF9maXJtd2FyZWAsIGVpdGhlciBieSBpbnRlcmNlcHRpbmcgdGhlIGNhbGxzIG9yLCBldmVuIGJldHRlciwgYnkgcHJvdmlkaW5nIGNyYWZ0ZWQgZmlybXdhcmUgZmlsZXMgZGlyZWN0bHkuIFRoaXMgbWFrZXMgaXQgcmVhbGx5IGludGVyZXN0aW5nLgoKUmlnaHQsIHNvIHN5emthbGxlciAqZG9lcyogZnV6eiBmaXJtd2FyZS4gVGhhdCYjMzk7cyBhIGh1Z2Ugd2luLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCBpZiBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgaXMgZXZlbiByZWFjaGFibGUuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZmlybXdhcmUgcGFyc2luZyBjb2RlIGlzIGFjdHVhbGx5IGEgdmFsaWQgZnV6emluZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfZndfaGRyX3BhcnNlcl92MCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDY9aW50IHJ0dzg5X2Z3X2NoZWNrX3JkeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndkbF9jaGVja190eXBlIHR5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNDA6c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE0MS1cdFx0XHRcdCAgc3RydWN0IHJ0dzg5X2Z3X2Jpbl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz01NzE9c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTg0LVx0Y2FzZSAwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjU4NTpcdFx0cmV0dXJuIHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjAocnR3ZGV2LCBmdywgbGVuLCBpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01ODYtXHRjYXNlIDE6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0NTIKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIENhbGwgQ2hhaW4gb2YgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBydHc4OV9md19oZHJfcGFyc2VyYC4gVGhlIGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IGFuZCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGBydHc4OWAgZHJpdmVyLiBTbywgSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluIHVwd2FyZHMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgZnVuY3Rpb24gY2FsbCBvcmlnaW5hdGVzIGFuZCB3aGF0IGNvbnRleHR1YWwgZGF0YSB0aGUgZnVuY3Rpb24gdXNlcy4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBkZWJ1Z2dpbmcgYXBwcm9hY2ggd2hlbiBkZWFsaW5nIHdpdGggZmlybXdhcmUgcGFyc2luZywgZ2l2ZW4gSSYjMzk7bGwgd2FudCB0byBhc3Nlc3MgdGhlIGludGVncml0eSBvZiB0aGUgcGFyc2luZyBwcm9jZXNzIGFuZCB0aGUgZGF0YSB0aGF0IGdldHMgcGFzc2VkIGludG8gaXQuIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyBpcyBjcnVjaWFsLiBMZXQmIzM5O3Mgc2VlIGhvdyBkZWVwIHRoaXMgcmFiYml0IGhvbGUgZ29lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9md19oZHJfcGFyc2VyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTEwNj1pbnQgcnR3ODlfZndfY2hlY2tfcmR5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md2RsX2NoZWNrX3R5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE0MDpzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCB1OCAqZncsIHUzMiBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTQxLVx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTQyMD1zdGF0aWMgaW50IF9fcGFyc2Vfc2VjdXJpdHlfc2VjdGlvbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTQ1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo0NTk6c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTQ2MC1cdFx0XHRcdCAgc3RydWN0IHJ0dzg5X2Z3X2Jpbl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6NTcxOnN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTcyLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTg0LVx0Y2FzZSAwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjU4NTpcdFx0cmV0dXJuIHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjAocnR3ZGV2LCBmdywgbGVuLCBpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01ODYtXHRjYXNlIDE6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6NTg3Olx0XHRyZXR1cm4gcnR3ODlfZndfaGRyX3BhcnNlcl92MShydHdkZXYsIGZ3LCBsZW4sIGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTU4OC1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE5ODk9c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxOTk2Olx0cmV0ID0gcnR3ODlfZndfaGRyX3BhcnNlcihydHdkZXYsIGZ3X3N1aXQsIFx1MDAyNmluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5OTctXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdHJhY2luZyBgcnR3ODlfZndfZG93bmxvYWRfc3VpdGA6CgoqKlRyYWNpbmcgcnR3ODlfZndfZG93bmxvYWRfc3VpdCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgZGlzc2VjdGluZyBgcnR3ODlfZndfZG93bmxvYWRfc3VpdGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCYjMzk7cyBiZWluZyBhY2NvbXBsaXNoZWQgaGVyZSDigJMgd2hhdCYjMzk7cyB0aGUgYnJvYWRlciBjb250ZXh0PyBJcyBpdCBsb2FkaW5nIGZpcm13YXJlIGZvciBhIHNwZWNpZmljIFJlYWx0ZWsgd2lyZWxlc3MgY2hpcD8gSXMgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIG9yIHNvbWV0aGluZyB0cmlnZ2VyZWQgbGF0ZXIsIHBlcmhhcHMgZHVyaW5nIGRldmljZSByZXN1bWU/IFdlIG5lZWQgdG8ga25vdyB3aGVyZSBpdCBzaXRzIGluIHRoZSBsYXJnZXIgc2NoZW1lIG9mIHRoaW5ncyB0byB1bmRlcnN0YW5kIGl0cyBzaWduaWZpY2FuY2UuCgpNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uJiMzOTtzIGRlY2xhcmF0aW9uIGFuZCBoZWFkZXIgZmlsZXMuIExvb2tpbmcgYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSB3aWxsIGdpdmUgdXMgY2x1ZXMgYWJvdXQgcGFyYW1ldGVycywgYW5kIGxpa2VseSwgd2hhdCBpdCYjMzk7cyBleHBlY3RpbmcgdG8gZG8uIFNlZWluZyB0aGUgcmV0dXJuIHZhbHVlIHR5cGUgY291bGQgdGVsbCBtZSB3aGV0aGVyIGl0JiMzOTtzIGEgc3VjY2Vzcy9mYWlsdXJlIGluZGljYXRvciBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkLiBUaGUgaGVhZGVycyB3aWxsIHJldmVhbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlcyBvciBzdHJ1Y3R1cmVzLCB0aGUgZGF0YSBpdCBjb25zdW1lcywgYW5kIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGl0IHBvdGVudGlhbGx5IGludGVyYWN0cyB3aXRoLgoKTmV4dCwgSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBmdW5jdGlvbiBpcyAqdXNlZCouIFdoZXJlIGlzIGBydHc4OV9md19kb3dubG9hZF9zdWl0YCBjYWxsZWQgZnJvbT8gQnkgdHJhY2tpbmcgZG93biB0aGUgY2FsbGVycywgSSYjMzk7bGwgZ2V0IHRoZSBjcml0aWNhbCBpbnNpZ2h0IGludG8gdGhlIHRyaWdnZXIgcG9pbnRzIGZvciB0aGUgZmlybXdhcmUgZG93bmxvYWQuIFRoaXMgd2lsbCBlc3RhYmxpc2ggdGhlIGZsb3cgb2YgZXhlY3V0aW9uLCBhbmQgZ2l2ZSBtZSBjbHVlcyBhcyB0byB0aGUgaW50ZW50IG9mIHRoZSBkZXNpZ25lcnMuIEFyZSB0aGVyZSBhbnkgZXJyb3IgY2hlY2tzIGFyb3VuZCB0aGUgY2FsbHM/IEhhbmRsaW5nIG9mIHBvdGVudGlhbCBmYWlsdXJlcyBjYW4gYmUganVzdCBhcyBjcnVjaWFsIGFzIHRoZSBmdW5jdGlvbiBpdHNlbGYuCgpUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uJiMzOTtzIGludGVybmFscy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHdoYXQmIzM5O3MgZ29pbmcgb24gKmluc2lkZSogdGhlIGZ1bmN0aW9uLiBXaGF0IHJlc291cmNlcyBpcyBpdCBhY2Nlc3Npbmc/IEFyZSB0aGVyZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zIG9yIGRlYWxsb2NhdGlvbnM/IEFyZSB0aGVyZSBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMgb3IgdGhlIFJlYWx0ZWsgY2hpcCBkaXJlY3RseT8gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBkb3dubG9hZCBwcm9jZXNzLCBhbmQgbGVhcm4gYWJvdXQgYW55IHBvdGVudGlhbCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgZGlmZmVyZW50IGRvd25sb2FkIG1ldGhvZHMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBhYm91dCB0aGUgZmlybXdhcmUgaW1hZ2UgaXRzZWxmIC0gd2hlcmUgaXQgY29tZXMgZnJvbSwgaG93IGl0JiMzOTtzIHByZXBhcmVkLCBhbmQgaG93IGl0JiMzOTtzIHVsdGltYXRlbHkgc2VudCB0byB0aGUgaGFyZHdhcmUuCgpGaW5hbGx5LCBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBlcnJvciBoYW5kbGluZy4gRmlybXdhcmUgZG93bmxvYWRzIGNhbiBiZSBmcmFnaWxlOyBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZhaWx1cmUgbW9kZXMgYW5kIHdoYXQgbWVjaGFuaXNtcyBhcmUgaW4gcGxhY2UgZm9yIHJlY292ZXJ5IG9yIGZhbGxiYWNrLiBFcnJvciBjb2RlcywgbG9nZ2luZywgYW5kIHJldHJ5IG1lY2hhbmlzbXMgYXJlIGFsbCBlc3NlbnRpYWwgaGVyZS4gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3Igcm9idXN0bmVzcyBhbmQgZGVidWdnaW5nIHB1cnBvc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9md19kb3dubG9hZF9zdWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE5NzU9c3RhdGljIHZvaWQgcnR3ODlfZndfZGxfZmFpbF9kdW1wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxOTg5OnN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfc3VpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5MC1cdFx0XHRcdCAgc3RydWN0IHJ0dzg5X2Z3X3N1aXQgKmZ3X3N1aXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwMjY9aW50IF9fcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDQxOlx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfc3VpdChydHdkZXYsIGZ3X3N1aXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNDg6XHRcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQocnR3ZGV2LCBmd19zdWl0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQ5LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjUyOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBpbiB0aGUgZmlyc3QgcGVyc29uIGFuZCBhc3N1bWluZyBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIEZpcm13YXJlIERvd25sb2FkKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgX19ydHc4OV9md19kb3dubG9hZGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgV2lGaSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgZm9yIHRoaXMgUmVhbHRlayA4OSBkZXZpY2UuIEkga25vdyB0aGUgZ2VuZXJhbCBmbG93LCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBzcGVjaWZpYyBzdGVwcy4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IGEgbG93LWxldmVsIHJvdXRpbmUsIGxpa2VseSBjYWxsZWQgYWZ0ZXIgdGhlIGRldmljZSBoYXMgZ29uZSB0aHJvdWdoIGl0cyBpbml0aWFsIHBvd2VyLXVwIHNlcXVlbmNlIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEl0JiMzOTtzIGxpa2VseSBoYW5kbGluZyB0aGUgY3J1Y2lhbCB0YXNrIG9mIHRyYW5zZmVycmluZyB0aGUgYWN0dWFsIGZpcm13YXJlIGltYWdlIGZyb20gdGhlIGhvc3Qgc3lzdGVtIHRvIHRoZSBSZWFsdGVrIDg5IGNoaXAuCgpJJiMzOTttIG1lbnRhbGx5IHByZXBhcmluZyB0byBleGFtaW5lOgoKKiAgICoqRW50cnkgcG9pbnRzOioqIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dCB0byBhcHByZWNpYXRlIGl0cyByb2xlLiBJcyBpdCBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIG9yIHBlcmhhcHMgYSBsYXRlciBmaXJtd2FyZSB1cGRhdGUgbWVjaGFuaXNtPyBJIG5lZWQgdG8gbG9vayBmb3IgY2FsbHMgaW4gdGhlIGRyaXZlciBjb2RlLCBsaWtlbHkgd2l0aGluIHRoZSBgcnR3ODlgIGRyaXZlciBtb2R1bGUuCiogICAqKkRhdGEgU3RydWN0dXJlczoqKiBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgcGFzc2VkIHRvIGBfX3J0dzg5X2Z3X2Rvd25sb2FkYD8gSSB3YW50IHRvIGtub3cgYWJvdXQgdGhlIGZpcm13YXJlIGltYWdlIGl0c2VsZiAocHJvYmFibHkgYSBidWZmZXIgY29udGFpbmluZyB0aGUgcmF3IGRhdGEpLCBwbHVzIGRldmljZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBsaWtlIHJlZ2lzdGVycywgYWRkcmVzc2VzLCBhbmQgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgaXMgYSBoZWFkZXIuCiogICAqKkhhcmR3YXJlIEludGVyYWN0aW9uOioqIFRoaXMgaXMga2V5LiBIb3cgaXMgdGhlIGZpcm13YXJlIGFjdHVhbGx5IGdldHRpbmcgc2VudD8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBmb3JtIG9mIGJ1cyBjb21tdW5pY2F0aW9uLiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgU0RJTyBpbnRlcmZhY2Ugb3IgYSBQQ0llIGxpbms/IEFyZSB0aGVyZSBzcGVjaWZpYyBjb21tYW5kcyBvciBzZXF1ZW5jZXMgdGhhdCBhcmUgcGVyZm9ybWVkIHRvIGluaXRpYXRlIHRoZSBkb3dubG9hZD8gSSYjMzk7bSBleHBlY3Rpbmcgc29tZSBraW5kIG9mIHJlZ2lzdGVyIHdyaXRlcyB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlIGZvciB0aGUgdHJhbnNmZXIsIGZvbGxvd2VkIGJ5IHRoZSBhY3R1YWwgZGF0YSB0cmFuc2ZlciwgcGVyaGFwcyB0aHJvdWdoIERNQSBvciBQSU8gZGVwZW5kaW5nIG9uIHRoZSBpbnRlcmZhY2UuCiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQmIzM5O3MgdGhlIGVycm9yIGNoZWNraW5nIGxpa2U/IEhvdyBpcyB0aGUgZnVuY3Rpb24gaGFuZGxpbmcgcG90ZW50aWFsIGZhaWx1cmVzIGR1cmluZyB0aGUgdHJhbnNmZXIsIGxpa2UgY2hlY2tzdW0gZXJyb3JzLCB0aW1lb3V0IGlzc3Vlcywgb3IgYnVzIGNvbW11bmljYXRpb24gcHJvYmxlbXM/IEkgd2FudCB0byBrbm93IGFib3V0IHRoZSByb2J1c3RuZXNzIG9mIHRoZSBkb3dubG9hZCBwcm9jZWR1cmUuIElzIGl0IGNoZWNraW5nIGZvciBlcnJvcnMgb3IganVzdCBob3BpbmcgZm9yIHRoZSBiZXN0PyBXaGF0IGtpbmQgb2YgbG9nZ2luZyBhbmQgZXJyb3IgcmVwb3J0aW5nIGlzIGJlaW5nIGRvbmU/CiogICAqKlNlY3VyaXR5IChpZiBhcHBsaWNhYmxlKToqKiBEb2VzIGl0IGNvbnRhaW4gYW55IHNlY3VyaXR5IG1lY2hhbmlzbT8gSXMgdGhlcmUgYSB2ZXJpZmljYXRpb24gc3RlcD8KKiAgICoqQm9vdGxvYWRlciBJbnRlcmFjdGlvbjoqKiBJIGFzc3VtZSB0aGUgYF9fcnR3ODlfZndfZG93bmxvYWRgIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZSYjMzk7cyBib290bG9hZGVyLiBIb3cgZG9lcyBpdCBoYW5kIG92ZXIgY29udHJvbCBvbmNlIHRoZSBpbWFnZSBpcyB0cmFuc2ZlcnJlZD8gRG9lcyBpdCBzZW5kIGEgJiMzNDtnbyYjMzQ7IGNvbW1hbmQsIG9yIGlzIHRoZXJlIGEgc3BlY2lmaWMgcmVzZXQgc2VxdWVuY2U/IEkmIzM5O2QgbGlrZSB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBhZnRlciB0aGUgaW1hZ2UgaXMgc2VudC4KClRoZSBnb2FsIGhlcmUgaXMgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZpcm13YXJlIGRvd25sb2FkIHByb2Nlc3MuIEtub3dpbmcgZXhhY3RseSBob3cgaXQgd29ya3MgaXMgdml0YWwgZm9yIGRlYnVnZ2luZyBhbnkgcmVsYXRlZCBpc3N1ZXMgYW5kIGZvciBvcHRpbWl6aW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGhlYWRlcnMsIGFuZCBzdHVkeSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYF9fcnR3ODlfZndfZG93bmxvYWRgLCB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fcnR3ODlfZndfZG93bmxvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTY4OT1zdGF0aWMgdm9pZCBydHc4OV9oMmNfcGt0X3NldF9oZHJfZndkbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTcwODpzdGF0aWMgdTMyIF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzA5LVx0XHRcdFx0XHQgICAgc3RydWN0IHJ0dzg5X2Z3X2Jpbl9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3MzI6c3RhdGljIHUzMiBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTczMy1cdFx0XHRcdFx0ICAgIHN0cnVjdCBydHc4OV9md19iaW5faW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzYxOnN0YXRpYyBpbnQgX19ydHc4OV9md19kb3dubG9hZF9oZHIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3NjItXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4My1cdFx0ZndfaGRyID0gKHN0cnVjdCBydHc4OV9md19oZHIgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzg0Olx0XHR0cnVuY2F0ZWQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MChydHdkZXYsIGluZm8sIGZ3X2hkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODctXHRcdGZ3X2hkcl92MSA9IChzdHJ1Y3QgcnR3ODlfZndfaGRyX3YxICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc4ODpcdFx0dHJ1bmNhdGVkID0gX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjEocnR3ZGV2LCBpbmZvLCBmd19oZHJfdjEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xODE3PXN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTgyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxODI0Olx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9oZHIocnR3ZGV2LCBmd19zdWl0LCBpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODI1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE4NDI6c3RhdGljIGludCBfX3J0dzg5X2Z3X2Rvd25sb2FkX21haW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4NDMtXHRcdFx0XHQgICAgc3RydWN0IHJ0dzg5X2Z3X2hkcl9zZWN0aW9uX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE5MTk9c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9tYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkyOS1cdHdoaWxlIChzZWN0aW9uX251bS0tKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTkzMDpcdFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9tYWluKHJ0d2Rldiwgc2VjdGlvbl9pbmZvLCBpbmZvLVx1MDAzZXBhcnRfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkzMS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjAyNT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDI2OmludCBfX3J0dzg5X2Z3X2Rvd25sb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md190eXBlIHR5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAyNy1cdFx0XHRib29sIGluY2x1ZGVfYmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwNzU9aW50IHJ0dzg5X2Z3X2Rvd25sb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md190eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODEtXHRmb3IgKHJldHJ5ID0gMDsgcmV0cnkgXHUwMDNjIDU7IHJldHJ5JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwODI6XHRcdHJldCA9IF9fcnR3ODlfZndfZG93bmxvYWQocnR3ZGV2LCB0eXBlLCBpbmNsdWRlX2JiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDgzLVx0XHRpZiAoIXJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2NTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBydHc4OSBGaXJtd2FyZSBEb3dubG9hZCoqCgpPa2F5LCBzbyBJJiMzOTttIHN0YXJ0aW5nIHdpdGggYHJ0dzg5X2Z3X2Rvd25sb2FkYC4gVGhhdCBmdW5jdGlvbiBuYW1lIHNjcmVhbXMgJiMzNDt0aGUgcGxhY2Ugd2hlcmUgdGhlIGZpcm13YXJlIGdldHMgbG9hZGVkLCYjMzQ7IHdoaWNoIG1lYW5zIGl0JiMzOTtzIHByZXR0eSBjZW50cmFsIHRvIHRoZSB3aG9sZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZSwgc28gbXkgZmlyc3QgbW92ZSBpcyBkZWZpbml0ZWx5IHRvIGZpZ3VyZSBvdXQgaXRzIGNhbGwgc2l0ZXMuIFdoZXJlIGlzIHRoaXMgdGhpbmcgYmVpbmcgKmNhbGxlZCogZnJvbT8gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHBhaW50IGEgbXVjaCBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBhbmQgaG93IHRoaXMgZG93bmxvYWQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHNjaGVtZS4gSXQmIzM5O2xsIGdpdmUgbWUgY29udGV4dCDigJMgd2hpY2ggaXMgY3JpdGljYWwgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2Z3X2Rvd25sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE2ODk9c3RhdGljIHZvaWQgcnR3ODlfaDJjX3BrdF9zZXRfaGRyX2Z3ZGwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3MDg6c3RhdGljIHUzMiBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTcwOS1cdFx0XHRcdFx0ICAgIHN0cnVjdCBydHc4OV9md19iaW5faW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTczMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzMyOnN0YXRpYyB1MzIgX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3MzMtXHRcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc2MTpzdGF0aWMgaW50IF9fcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzYyLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3N1aXQgKmZ3X3N1aXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODMtXHRcdGZ3X2hkciA9IChzdHJ1Y3QgcnR3ODlfZndfaGRyICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc4NDpcdFx0dHJ1bmNhdGVkID0gX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjAocnR3ZGV2LCBpbmZvLCBmd19oZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzg3LVx0XHRmd19oZHJfdjEgPSAoc3RydWN0IHJ0dzg5X2Z3X2hkcl92MSAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3ODg6XHRcdHRydW5jYXRlZCA9IF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YxKHJ0d2RldiwgaW5mbywgZndfaGRyX3YxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzg5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTgxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxODE3OnN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODE4LVx0XHRcdFx0IGNvbnN0IHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE4MjQ6XHRyZXQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkX2hkcihydHdkZXYsIGZ3X3N1aXQsIGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4MjUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTg0MjpzdGF0aWMgaW50IF9fcnR3ODlfZndfZG93bmxvYWRfbWFpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTg0My1cdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfZndfaGRyX3NlY3Rpb25faW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTkwNj1ydHc4OV9md19nZXRfZndkbF9jaGtfdHlwZV9mcm9tX3N1aXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5MTk6c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9tYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTIwLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkyOS1cdHdoaWxlIChzZWN0aW9uX251bS0tKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTkzMDpcdFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9tYWluKHJ0d2Rldiwgc2VjdGlvbl9pbmZvLCBpbmZvLVx1MDAzZXBhcnRfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkzMS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTk3NT1zdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5ODk6c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTkwLVx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDE0Olx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfaGRyKHJ0d2RldiwgZndfc3VpdCwgXHUwMDI2aW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAxNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjAxODpcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX21haW4ocnR3ZGV2LCBmd19zdWl0LCBcdTAwMjZpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjAyNT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDI2OmludCBfX3J0dzg5X2Z3X2Rvd25sb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md190eXBlIHR5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAyNy1cdFx0XHRib29sIGluY2x1ZGVfYmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA0MTpcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQocnR3ZGV2LCBmd19zdWl0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDQ4Olx0XHRyZXQgPSBydHc4OV9md19kb3dubG9hZF9zdWl0KHJ0d2RldiwgZndfc3VpdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDc1OmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNzYtXHRcdCAgICAgIGJvb2wgaW5jbHVkZV9iYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA4MS1cdGZvciAocmV0cnkgPSAwOyByZXRyeSBcdTAwM2MgNTsgcmV0cnkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA4MjpcdFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZChydHdkZXYsIHR5cGUsIGluY2x1ZGVfYmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODMtXHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD01MzY1PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTM2OS1cdFx0XHRcdCBpbnQgKnVzZWRfZndfZm9ybWF0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1MzcwOmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTUzNzEtXHRcdCAgICAgIGJvb2wgaW5jbHVkZV9iYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz00MzA3PWludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDMzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDMzNTpcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkKHJ0d2RldiwgUlRXODlfRldfTk9STUFMLCBpbmNsdWRlX2JiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDMzNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xMjYwPXN0YXRpYyBpbnQgcnR3ODlfd293X3N3YXBfZncoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHdvdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEyOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEyOTM6XHRyZXQgPSBydHc4OV9md19kb3dubG9hZChydHdkZXYsIGZ3X3R5cGUsIGluY2x1ZGVfYmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMjk0LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzYxNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHJ0dzg5IEZpcm13YXJlIERvd25sb2FkKioKCk9rYXksIHNvIGBydHc4OV9md19kb3dubG9hZGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLiBUaGUgY29kZSB0ZWxscyBtZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0d28gcGxhY2VzOiBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAgYW5kIGBydHc4OV93b3dfc3dhcF9md2AuIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBsb29rcyBsaWtlIGl0JiMzOTtzIHByb2JhYmx5IGdldHRpbmcgdHJpZ2dlcmVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24g4oCTIHN0YW5kYXJkIHN0dWZmIGZvciBzZXR0aW5nIHRoaW5ncyB1cC4gR2l2ZW4gdGhhdCBgcnR3ODlgIGlzIGEgVVNCIGRyaXZlciAoYW5kIFBDSSwgZm9yIHRoYXQgbWF0dGVyKSwgdGhhdCBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7ZnV6emluZyB0YXJnZXQmIzM0OyB0byBtZSwgZXNwZWNpYWxseSB3aXRoIHNvbWV0aGluZyBsaWtlIGBkdW1teV9oY2RgLgoKQnV0IGJlZm9yZSBJIGdldCB0b28gY2FycmllZCBhd2F5IHdpdGggZnV6emluZyBzdHJhdGVnaWVzLCBJIHNob3VsZCBtYWtlIGFic29sdXRlbHkgc3VyZSB3aGVuIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBpcyBjYWxsZWQuIEl0JiMzOTtzIGNydWNpYWwgdG8gY29uZmlybSB0aGF0IGl0JiMzOTtzIGFjdHVhbGx5IGdldHRpbmcgaW52b2tlZCBkdXJpbmcgdGhlIHByb2JlIHNlcXVlbmNlLiBJIG5lZWQgdG8ga25vdyBleGFjdGx5IHdoZW4gdGhhdCBmaXJtd2FyZSBkb3dubG9hZCBwcm9jZXNzIGlzIGtpY2tlZCBvZmYgdG8gc3RyYXRlZ2l6ZSBwcm9wZXJseS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgcHJvYmUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfbWFjX3BhcnRpYWxfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTcyNzQ9c3RhdGljIGludCBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTcyODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3Mjg5Olx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlLCBiYl9wcmVpbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTcyOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NDMwNT1FWFBPUlRfU1lNQk9MKHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDMwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDMwNzppbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDMwOC1cdFx0XHQgICBib29sIGJiX3ByZWluaXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz00MzYwPWludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy00MzY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo0MzY3Olx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGluY2x1ZGVfYmIsIGluY2x1ZGVfYmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy00MzY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oPTEzMDU9dm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaDoxMzA2OmludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaC0xMzA3LVx0XHRcdCAgIGJvb2wgYmJfcHJlaW5pdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjAyCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgYHJ0dzg5YCBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHByb2Nlc3MuIFJpZ2h0IG5vdywgSSBzZWUgdGhhdCBgcnR3ODlfbWFjX2luaXRgIGlzIGNhbGxlZCBieSBgcnR3ODlfY29yZV9zdGFydGAuIFRoYXQgbWFrZXMgc2Vuc2UgLSBNQUMgaW5pdGlhbGl6YXRpb24gaGFwcGVuaW5nIGR1cmluZyB0aGUgY29yZSBzdGFydHVwLiBBbmQgKnRoYXQqIGlzIGNhbGxlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC4gVGhhdOKAmXMgdGhlIHRyaWdnZXIuIEhtbSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBiZXR0ZXIgYXMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBvdmVyYWxsIGRyaXZlciBiZWhhdmlvdXIuCgpXYWl0IGEgc2Vjb25kLCB0aGVyZSYjMzk7cyBhbm90aGVyIHBvaW50LiBJIGp1c3QgcmVtZW1iZXJlZCB0aGF0IGBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXBgIGlzIGFsc28gY2FsbGVkLCBhbmQgdGhhdCBoYXBwZW5zIGR1cmluZyB0aGUgcHJvYmUgc3RhZ2UsIHdoaWNoIGlzIGVhcmxpZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIGluaXRpYWxpc2luZyB0aGUgY2hpcCwgc28gSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGF0IHdvcmtzLiBMZXQgbWUgZGVsdmUgaW50byBgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGVhcmx5IHN0dWZmIGlzIHdvcmtpbmcgc28gSSBjYW4gYmUgc3VyZSB0aGF0IHRoZSBsYXRlciBwYXJ0cyB3aWxsIGJlIHdvcmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTcyMTI9aW50IHJ0dzg5X2NvcmVfbWxzcl9zd2l0Y2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzI3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjcyNzQ6c3RhdGljIGludCBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzI3NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzM4Mz1pbnQgcnR3ODlfY2hpcF9pbmZvX3NldHVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03NDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NzQwOTpcdHJldCA9IHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzQxMC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzAyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIHJ0dzg5IEZpcm13YXJlIFBhcnNpbmcgVnVsbmVyYWJpbGl0eSBNaXRpZ2F0aW9uKioKCk9rYXksIHNvIGBydHc4OV9jaGlwX2luZm9fc2V0dXBgIGdldHMga2lja2VkIG9mZiBieSBgcnR3ODlfY29yZV9pbml0YCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBieSBib3RoIGBydHc4OV9wY2lfcHJvYmVgIGFuZCBgcnR3ODlfdXNiX3Byb2JlYC4gVGhhdCBtZWFucywgd2l0aG91dCBhIGRvdWJ0LCB0aGUgZmlybXdhcmUgcGFyc2luZyBpcyBkZWZpbml0ZWx5IGhhcHBlbmluZyBkdXJpbmcgdGhlIGRyaXZlciBwcm9iZSBzZXF1ZW5jZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cgZm9yIGNvbnRleHQuCgpUaGlzIHBhdGNoIGlzIGFkZGluZyBjcnVjaWFsIGJvdW5kcyBjaGVja2luZyB0byBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICpyZWFsKiBpbXByb3ZlbWVudCwgYXMgaXQgcHJvdGVjdHMgYWdhaW5zdCB0aGUgbmFzdHkgcG9zc2liaWxpdHkgb2Ygb3V0LW9mLWJvdW5kcyByZWFkcywgd3JpdGVzLCBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Mgd2hlbiB0aGUgcGFyc2VyIGlzIGZlZCBjb3JydXB0ZWQgb3IgbWFsZm9ybWVkIGZpcm13YXJlLiBUaGF0JiMzOTtzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgbGVhZHMgdG8gY3Jhc2hlcyBvciwgd29yc2UsIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuCgpTaW5jZSBzeXprYWxsZXIgY2FuIHRhcmdldCBmaXJtd2FyZSBmaWxlcyB0aHJvdWdoIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJmYWNlLCB0aGlzIGlzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgd2Ugc2hvdWxkIGJlIGZ1enppbmcuIEJ1dCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gTGV0IG1lIHNlZS4uLiBkb2VzIHRoaXMgZHJpdmVyIGFjdHVhbGx5IHVzZSBgcmVxdWVzdF9maXJtd2FyZWA/IEkgbmVlZCB0byBsb29rIGF0IGBydHc4OV9md19kb3dubG9hZGAgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDI2PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDQzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZpcm13YXJlLCBmd19uYW1lLCBkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwNDQtXHRcdGlmICghcmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIxMDE9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMTYtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjExNzpcdFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZyZXEtXHUwMDNlZmlybXdhcmUsIGZ3X25hbWUsIHJ0d2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTE0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYHJlcXVlc3RfZmlybXdhcmVgIGlzIGRlZmluaXRlbHkgaW4gcGxheSBoZXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHN5emthbGxlciBpcyBhIHZpYWJsZSByb3V0ZSDigJMgd2UgY2FuIGZlZWQgaXQgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB6ZXJvIGluIG9uIGFyZSBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gQnV0IHdhaXQsIGFyZSB0aGV5IGV2ZW4gYWNjZXNzaWJsZT8gTGV0IG1lIGNoZWNrLi4uIEFoLCB0aGV5IGFyZSBgc3RhdGljYC4gQWxyaWdodCwgbGV0JiMzOTtzIGNvbmZpcm0gdGhhdDogYHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MCguLi4pYCBhbmQgYHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MSguLi4pYC4gU28sIHRoYXQgbWVhbnMgd2UgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlbS4KClRoZSBpbW1lZGlhdGUgY2FsbGVyIGlzIGBydHc4OV9md19oZHJfcGFyc2VyYCwgYW5kIHRoYXQmIzM5O3MgYWxzbyBgc3RhdGljYC4gVGhlIG5leHQgb25lIHVwIHRoZSBjaGFpbiBpcyBgcnR3ODlfZndfZG93bmxvYWRfc3VpdGAsIGFsc28gYHN0YXRpY2AuIFRoZW4gYF9fcnR3ODlfZndfZG93bmxvYWRgLCBzdGlsbCBgc3RhdGljYC4gRmluYWxseSwgd2UgZ2V0IHRvIGBydHc4OV9md19kb3dubG9hZGAsIHdoaWNoIGlzICpub24tc3RhdGljKi4gT2theSwgc28gdGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyBleHBvcnRlZCBvciBub24tc3RhdGljLCBvdGhlcndpc2UgaXQmIzM5O3Mgc3RpbGwgaW5hY2Nlc3NpYmxlIGZvciBmdXp6aW5nIHB1cnBvc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgcnR3ODlfZndfZG93bmxvYWRcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjAyNj1pbnQgX19ydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNzU6aW50IHJ0dzg5X2Z3X2Rvd25sb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md190eXBlIHR5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA3Ni1cdFx0ICAgICAgYm9vbCBpbmNsdWRlX2JiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD01MzY1PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTM2OS1cdFx0XHRcdCBpbnQgKnVzZWRfZndfZm9ybWF0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1MzcwOmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTUzNzEtXHRcdCAgICAgIGJvb2wgaW5jbHVkZV9iYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTA1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipGaXJtd2FyZSBEb3dubG9hZCBJbnF1aXJ5KioKCkFscmlnaHQsIHNvIGBydHc4OV9md19kb3dubG9hZGAgaXMgZGVmaW5pdGVseSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgY2xlYXIuIE5vdywgYSBrZXkgcmVsYXRlZCBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZDogd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBydHc4OV9sb2FkX2Zpcm13YXJlYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgcHJldmlvdXMgZnVuY3Rpb24sIHdoYXQgaXRzIHNjb3BlIGlzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGZ1bGx5IGNvbXByZWhlbmRpbmcgdGhlIHdvcmtmbG93IGhlcmUuIEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCB3aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgZGVzaWduZWQgdG8gYWNjb21wbGlzaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfbG9hZF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY5NjE9aW50IHJ0dzg5X2NvcmVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzAxMi1cdHdpcGh5X3dvcmtfaW5pdChcdTAwMjZydHdkZXYtXHUwMDNlY2FuY2VsXzZnaHpfcHJvYmVfd29yaywgcnR3ODlfY2FuY2VsXzZnaHpfcHJvYmVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MDEzOlx0SU5JVF9XT1JLKFx1MDAyNnJ0d2Rldi1cdTAwM2Vsb2FkX2Zpcm13YXJlX3dvcmssIHJ0dzg5X2xvYWRfZmlybXdhcmVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MDE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMDkwPWludCBydHc4OV93YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMDE6c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEwMi1cdFx0XHRcdCAgIHN0cnVjdCBydHc4OV9md19yZXFfaW5mbyAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMjQ6dm9pZCBydHc4OV9sb2FkX2Zpcm13YXJlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMzQ6XHRydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShydHdkZXYsIFx1MDAyNnJ0d2Rldi1cdTAwM2Vmdy5yZXEsIGZ3X25hbWUsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTM1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTM3MD1pbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01MzcxLVx0XHQgICAgICBib29sIGluY2x1ZGVfYmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjUzNzI6dm9pZCBydHc4OV9sb2FkX2Zpcm13YXJlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01MzczLXZvaWQgcnR3ODlfdW5sb2FkX2Zpcm13YXJlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDY2CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgcnR3ODkgRmlybXdhcmUgTG9hZGluZyoqCgpSaWdodCwgc28gYHJ0dzg5X2xvYWRfZmlybXdhcmVfd29ya2AgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUuIEdvb2QgdG8ga25vdywgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBjb3JlIG9mIHRoZSBwYXJzaW5nLiBIbW0sIGhhbmcgb24uLi4gYHJ0dzg5X2Z3X2Rvd25sb2FkYCAtIHRoYXQmIzM5O3Mgd2hlcmUgdGhlICphY3R1YWwqIGZpcm13YXJlIHBhcnNpbmcgaGFwcGVucy4gSW50ZXJlc3RpbmcuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBjaGVjayBob3cgYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCBhbmQgYHJ0dzg5X2xvYWRfZmlybXdhcmVfd29ya2AgaW50ZXJhY3QuIEFoLCBnb3QgaXQuIGBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcWAgY2FsbHMgYHJlcXVlc3RfZmlybXdhcmVgLCB0aGF0JiMzOTtzIHRoZSBzdGFuZGFyZCBrZXJuZWwgQVBJLiBOb3cgdGhlIHF1ZXN0aW9uIGlzOiBkb2VzIGBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcWAgaXRzZWxmIGRvIGFueSBwYXJzaW5nIGJlZm9yZSBoYW5kaW5nIGl0IG9mZj8gSSBoYXZlIHRvIGxvb2sgbW9yZSBjbG9zZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9sb2FkX2Zpcm13YXJlX3JlcSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMDkwPWludCBydHc4OV93YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMDE6c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEwMi1cdFx0XHRcdCAgIHN0cnVjdCBydHc4OV9md19yZXFfaW5mbyAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMTI0PXZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMTM0Olx0cnR3ODlfbG9hZF9maXJtd2FyZV9yZXEocnR3ZGV2LCBcdTAwMjZydHdkZXYtXHUwMDNlZncucmVxLCBmd19uYW1lLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEzNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzcxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCBmdW5jdGlvbi4gSSYjMzk7bSBhc3N1bWluZywgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCB0aGlzIGlzIGxpa2VseSBwYXJ0IG9mIHRoZSBSZWFsdGVrIFJUTDg4NTJBRS9CRSBkcml2ZXIgc3RhY2suIE15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlIGFyb3VuZCBob3cgaXQmIzM5O3Mgc3RydWN0dXJlZDogaXMgaXQgYSBzaW1wbGUgd3JhcHBlciwgb3IgZG9lcyBpdCBoYW5kbGUgbW9yZSBzb3BoaXN0aWNhdGVkIGFzcGVjdHMgb2YgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcz8gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBlbWJlZGRlZCBzeXN0ZW0sIHNvIEkmIzM5O20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCBpdCBsaWtlbHkgY29vcmRpbmF0ZXMgd2l0aCB0aGUgaGFyZHdhcmUmIzM5O3Mgc3BlY2lmaWMgbG9hZGluZyBtZWNoYW5pc21zLCBwZXJoYXBzIGludm9sdmluZyBETUEgdHJhbnNmZXJzLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBwb3NzaWJseSBldmVuIGRpcmVjdCBtZW1vcnkgYWNjZXNzIHJlc3RyaWN0aW9ucyBiYXNlZCBvbiB0aGUgc2VjdXJpdHkgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBjbHVlcyBhYm91dCB3aGV0aGVyIGl0IGludGVyYWN0cyB3aXRoIGFueSBzcGVjaWZpYyBoYXJkd2FyZSByZWdpc3RlcnMgb3IgdXNlcyBhbnkgUmVhbHRlay1zcGVjaWZpYyBmaXJtd2FyZSBsb2FkaW5nIHByb3RvY29scy4gSSB3aWxsIGFsc28gYmUgbG9va2luZyB0byBjaGVjayBob3cgZXJyb3IgaGFuZGxpbmcgaXMgaW1wbGVtZW50ZWQgaWYgaXQgZmFpbHMgdG8gbG9hZCB0aGUgZmlybXdhcmUgc3VjY2Vzc2Z1bGx5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaW5kaWNhdGlvbiBvZiB0aGUgb3ZlcmFsbCByb2J1c3RuZXNzIG9mIHRoZSBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTAxOlx0c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4yMTAyOlx0XHRcdFx0XHQgICBzdHJ1Y3QgcnR3ODlfZndfcmVxX2luZm8gKnJlcSxcbjIxMDM6XHRcdFx0XHRcdCAgIGNvbnN0IGNoYXIgKmZ3X25hbWUsIGJvb2wgbm93YXJuKVxuMjEwNDpcdHtcbjIxMDU6XHRcdGludCByZXQ7XG4yMTA2Olx0XG4yMTA3Olx0XHRpZiAocmVxLVx1MDAzZWZpcm13YXJlKSB7XG4yMTA4Olx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0ZXLFxuMjEwOTpcdFx0XHRcdCAgICBcJiMzNDtmdWxsIGZpcm13YXJlIGhhcyBiZWVuIGVhcmx5IHJlcXVlc3RlZFxcblwmIzM0Oyk7XG4yMTEwOlx0XHRcdGNvbXBsZXRlX2FsbChcdTAwMjZyZXEtXHUwMDNlY29tcGxldGlvbik7XG4yMTExOlx0XHRcdHJldHVybiAwO1xuMjExMjpcdFx0fVxuMjExMzpcdFxuMjExNDpcdFx0aWYgKG5vd2FybilcbjIxMTU6XHRcdFx0cmV0ID0gZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4oXHUwMDI2cmVxLVx1MDAzZWZpcm13YXJlLCBmd19uYW1lLCBydHdkZXYtXHUwMDNlZGV2KTtcbjIxMTY6XHRcdGVsc2VcbjIxMTc6XHRcdFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZyZXEtXHUwMDNlZmlybXdhcmUsIGZ3X25hbWUsIHJ0d2Rldi1cdTAwM2VkZXYpO1xuMjExODpcdFxuMjExOTpcdFx0Y29tcGxldGVfYWxsKFx1MDAyNnJlcS1cdTAwM2Vjb21wbGV0aW9uKTtcbjIxMjA6XHRcbjIxMjE6XHRcdHJldHVybiByZXQ7XG4yMTIyOlx0fVxuMjEyMzpcdFxuMjEyNDpcdHZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbjIxMjU6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNDUwCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgRG93bmxvYWQgUHJvY2VzcyoqCgpPa2F5LCBzbyBgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXFgIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ7IGl0IGp1c3QgZ3JhYnMgdGhlIGZpcm13YXJlIGFuZCBoYW5kbGVzIHRoZSBpbml0aWFsIGNvbXBsZXRpb24uIFRoZSByZWFsIHBhcnNpbmcgd29yaywgdGhlIGhlYXZ5IGxpZnRpbmcsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBoYXBwZW5pbmcgaW4gYHJ0dzg5X2Z3X2Rvd25sb2FkYC4gSXQgbWFrZXMgc2Vuc2UgaXQmIzM5O3MgY2FsbGVkIGxhdGVyLCBwcmVzdW1hYmx5IGFmdGVyIGV2ZXJ5dGhpbmcmIzM5O3Mgc2V0dGxlZCBmb2xsb3dpbmcgdGhlIGNvbXBsZXRpb24gdHJpZ2dlcmVkIGJ5IGBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcWAuIFNvLCBgcnR3ODlfZndfZG93bmxvYWRgIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyBpcy4gUmlnaHQsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhhdCBmdW5jdGlvbi4gV2FpdCwgaXMgaXQgZXhwb3J0ZWQ/IEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgaXQgYmVpbmcgc3RhdGljLiBOb3BlLCBpdCYjMzk7cyBub3QuIE9rYXksIHRoYXQgY2hhbmdlcyB0aGluZ3Mg4oCTIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gaXQmIzM5O3Mgbm90IGV4cG9ydGVkLCBiZWNhdXNlIHRoYXQmIzM5O3Mgc2lnbmlmaWNhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qcnR3ODlfZndfZG93bmxvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzg5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhbHRlayBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUmVhbHRlayBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHdvcmtzLCBzcGVjaWZpY2FsbHkgaG93IHRoZSBmaXJtd2FyZSBnZXRzIGRvd25sb2FkZWQuIEkmIzM5O3ZlIG5vdGljZWQgYSBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIG5vdCBleHBvcnRlZCwgYnV0IGltcG9ydGFudGx5LCBpdCYjMzk7cyAqbm90KiBzdGF0aWMsIHNvIEkgY2FuIHByb2JhYmx5IHRyYWNlIGl0LiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgY2hhaW4gSSBzaG91bGQgYmUgYXdhcmUgb2Y/CgpJIHNlZSB0aGF0IGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBpcyBjYWxsaW5nIGBydHc4OV9md19kb3dubG9hZGAuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB0aGUgZmlybXdhcmUgZG93bmxvYWQgSSYjMzk7bSBpbnRlcmVzdGVkIGluISBBbmQgZnVydGhlciwgSSBub3RpY2UgdGhhdCBgcnR3ODlfbWFjX2luaXRgIGNhbGxzIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YC4gRXhwYW5kaW5nIG91dCB0aGUgY2FsbHMgZXZlbiBtb3JlLCBgcnR3ODlfY29yZV9zdGFydGAgdGhlbiBjYWxscyBgcnR3ODlfbWFjX2luaXRgLiBUaGlzIGFsbCBzZWVtcyB0byBjaGFpbiB1cCB0byBgcnR3ODlfY29yZV9zdGFydGAsIHRoYXQgbG9va3MgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgdG8gYmVnaW4gaW52ZXN0aWdhdGluZy4KCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHRha2UgYSBsb29rIGF0IGBydHc4OV9jb3JlX3N0YXJ0YCBhbmQgdHJhY2UgZXZlcnl0aGluZyBmcm9tIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NjY1Nj1FWFBPUlRfU1lNQk9MKHJ0dzg5X2NoZWNrX3F1aXJrcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY1ODppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD05MzYyPXZvaWQgcnR3ODlfY29tcGxldGVfY29uZChzdHJ1Y3QgcnR3ODlfd2FpdF9pbmZvICp3YWl0LCB1bnNpZ25lZCBpbnQgY29uZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTkzNjMtXHRcdFx0IGNvbnN0IHN0cnVjdCBydHc4OV9jb21wbGV0aW9uX2RhdGEgKmRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6OTM2NDppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtOTM2NS12b2lkIHJ0dzg5X2NvcmVfc3RvcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz01Nz1zdGF0aWMgaW50IHJ0dzg5X29wc19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NjM6XHRyZXR1cm4gcnR3ODlfY29yZV9zdGFydChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmM9MjU3PXZvaWQgcnR3ODlfbGVhdmVfaXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jOjI2NzpcdHJldCA9IHJ0dzg5X2NvcmVfc3RhcnQocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYy0yNjgtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDgyNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgcnR3ODkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgcnR3ODlfY29yZV9zdGFydGAgaXMgdGhlIGtleSBmdW5jdGlvbiBiZWNhdXNlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBydHc4OV9vcHNfc3RhcnRgLCB3aGljaCBpcyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUaGF0IG1lYW5zIGJyaW5naW5nIHVwIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyB0aGUgdHJpZ2dlciwgbGVhZGluZyB0byBmaXJtd2FyZSBkb3dubG9hZCBhbmQgcGFyc2luZywgbWFraW5nIGl0IGEgdmVyeSBhY2Nlc3NpYmxlIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSB0YXJnZXRzIGFyZSBnb2luZyB0byBiZSBgcnR3ODlfZndfZG93bmxvYWRgLCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAsIGFuZCBgcnR3ODlfY29yZV9zdGFydGAuIEFjdHVhbGx5LCBgcnR3ODlfZndfZG93bmxvYWRgIHNlZW1zIGxpa2UgdGhlIG1vc3QgZGlyZWN0IHBhdGguIEkgc2hvdWxkIGNoZWNrIGlmIHRoYXQmIzM5O3MgYWN0dWFsbHkgaW4gYGZ3LmNgLiBZZXAsIGl0IGlzLiBBbmQgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBwZXJmZWN0ISBUaGF0IG1lYW5zIGBydHc4OV9md19kb3dubG9hZGAgY2FuIGRlZmluaXRlbHkgYmUgYSBgRm9jdXNTeW1ib2xgIGZvciBzeXprYWxsZXIuCgpMZXQmIzM5O3Mgc2VlLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBydHc4OV9md19oZHJfcGFyc2VyX3YwYCBhbmQgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjFgLiBCdXQgdGhvc2UgYXJlIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgdXNlIHRoZW0gZGlyZWN0bHkgYXMgYEZvY3VzU3ltYm9sc2AuIEl0IGxvb2tzIGxpa2UgSSBjYW4gc3RpbGwgZm9jdXMgb24gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgLgoKTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gVGhlIGNvcmUgbW9kdWxlIGlzIGBDT05GSUdfUlRXODlfQ09SRWAuIFdlJiMzOTt2ZSBnb3QgYnVzIG1vZHVsZXMgdG9vOiBgQ09ORklHX1JUVzg5X1BDSWAgYW5kIGBDT05GSUdfUlRXODlfVVNCYC4gU2luY2Ugc3l6a2FsbGVyIGNhbiBoYW5kbGUgVVNCLCBgQ09ORklHX1JUVzg5X1VTQmAgaXMgYSBnb29kIHRhcmdldC4gSG9sZCBvbiwgYENPTkZJR19SVFc4OV9VU0JgIG5lZWRzIGBDT05GSUdfVVNCYCwgc28gbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHkgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVFc4OV9VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTc9Y29uZmlnIFJUVzg5X1BDSVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDpjb25maWcgUlRXODlfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTgwMQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIGZpbGUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOgoKKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gTXkgaW5pdGlhbCBzY2FuIGlzIGZvciB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG92ZXJhbGwgb3JnYW5pemF0aW9uLCB0aGUgaGllcmFyY2h5IG9mIG9wdGlvbnMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gZWFjaCBvdGhlci4gSSBleHBlY3QgdG8gc2VlIGBjb25maWdgIHN0YXRlbWVudHMgZGVmaW5pbmcgdmFyaW91cyBmZWF0dXJlcywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdHMuIFRoZSBnb2FsIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhYmlsaXR5IG9mIHRoaXMgZHJpdmVyIOKAkyB3aGF0IG9wdGlvbnMgYXJlIGV4cG9zZWQgdG8gdGhlIHVzZXIgKG9yLCBtb3JlIGxpa2VseSwgdGhlIGRpc3RyaWJ1dGlvbiBtYWludGFpbmVyKSwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4KCkkmIzM5O2xsIGJlIGltbWVkaWF0ZWx5IGZvY3VzaW5nIG9uIHRoZSBpbXBvcnRhbnQgcGFydHMgc3VjaCBhcyB0aGUgYmFzZSBkcml2ZXIgc2VsZWN0aW9uLCB3aGljaCBzaG91bGQgYmUgbmVhciB0aGUgdG9wLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlZmluZXMgdGhlIGNvcmUgYHJ0dzg5YCBmdW5jdGlvbmFsaXR5LiBBcmUgdGhlcmUgc2VwYXJhdGUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IFJlYWx0ZWsgY2hpcHMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyPyBUaGF0JiMzOTtzIHdoYXQgSSYjMzk7ZCBleHBlY3QuIEkmIzM5O20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgYHNlbGVjdGAsIGBkZXBlbmRzIG9uYCwgYW5kIGBkZWZhdWx0YCBzdGF0ZW1lbnRzLiBUaGVzZSBhcmUgbXkgYnJlYWQgYW5kIGJ1dHRlciB3aGVuIGl0IGNvbWVzIHRvIHVuZGVyc3RhbmRpbmcgaG93IGEgZHJpdmVyIGlzIHBpZWNlZCB0b2dldGhlciBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuCgpJIHdpbGwgaGF2ZSB0byBjaGVjayBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgb3IgcmVndWxhdG9yeSBkb21haW4gY29uZmlndXJhdGlvbnMsIGFueSBwb3dlci1zYXZpbmcgb3B0aW9ucywgYW5kIGFueSBmZWF0dXJlcyByZWxhdGVkIHRvIGRlYnVnZ2luZyBvciB0ZXN0aW5nLiBDb25kaXRpb25hbCBjb21waWxhdGlvbiBpcyBrZXkg4oCTIEkgbmVlZCB0byB0cmFjayBkb3duIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBkZWZpbmVzIGFuZCBkZXRlcm1pbmUgaWYgdGhleSYjMzk7cmUgaGFuZGxlZCBncmFjZWZ1bGx5LiBBcmUgdGhlcmUgZmFsbGJhY2sgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIG9wdGlvbnMgdGhhdCBiZWNvbWUgYXZhaWxhYmxlIG9ubHkgd2hlbiBjZXJ0YWluIG90aGVyIGZlYXR1cmVzIGFyZSBlbmFibGVkPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGRlcGVuZGVuY2llcyB3aWxsIHBsYXkgYSBodWdlIHJvbGUgaW4gZGV0ZXJtaW5pbmcgd2hpY2ggcGFydHMgb2YgdGhlIGRyaXZlciBnZXQgY29tcGlsZWQuCgpUaGUgcHJlc2VuY2Ugb2YgYGhlbHBgIHNlY3Rpb25zIGlzIGFsd2F5cyBhIGdvb2Qgc2lnbi4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGludGVuZGVkIHVzZSBmb3IgZWFjaCBvZiB0aGVzZSBvcHRpb25zLiBBcmUgdGhleSBzZWxmLWV4cGxhbmF0b3J5PyBPciBhcmUgdGhlcmUgY29tcGxleCB0cmFkZS1vZmZzIHRvIGNvbnNpZGVyLCBzdWNoIGFzIHBlcmZvcm1hbmNlIHZzLiBwb3dlciBjb25zdW1wdGlvbj8gSSYjMzk7bGwgcHJvYmFibHkgYmUgYWJsZSB0byBpbmZlciBzb21lIHRoaW5ncyBiYXNlZCBvbiB0aGUgbmFtZXMgb2YgdGhlIG9wdGlvbnMsIGJ1dCBjb21wcmVoZW5zaXZlIGRvY3VtZW50YXRpb24gaXMgYWx3YXlzIHdlbGNvbWUuIEFueSBvYnZpb3VzIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgb3Igc2VjdXJpdHkgZmVhdHVyZXMgSSB3b3VsZCB3YW50IHRvIHRha2Ugbm90ZSBvZiBpbW1lZGlhdGVseS4gVWx0aW1hdGVseSwgbXkgZ29hbCBpcyB0byBmdWxseSBkb2N1bWVudCBob3cgdGhlIGRyaXZlciBjYW4gYmUgY29uZmlndXJlZCB0byBtYXhpbWl6ZSBmdW5jdGlvbmFsaXR5IGFuZCBwZXJmb3JtYW5jZSwgd2hpbGUgbWluaW1pemluZyBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gICAyOlx0bWVudWNvbmZpZyBSVFc4OVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XG4gICA3Olx0XHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHJ0dzg5LlxuICAxMDpcdFxuICAxMTpcdGlmIFJUVzg5XG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFJUVzg5X0NPUkVcbiAgMTQ6XHRcdHRyaXN0YXRlXG4gIDE1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgUlRXODlfUENJXG4gIDE4Olx0XHR0cmlzdGF0ZVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBSVFc4OV9VU0JcbiAgMjE6XHRcdHRyaXN0YXRlXG4gIDIyOlx0XG4gIDIzOlx0Y29uZmlnIFJUVzg5Xzg4NTFCXG4gIDI0Olx0XHR0cmlzdGF0ZVxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBSVFc4OV84ODUyQVxuICAyNzpcdFx0dHJpc3RhdGVcbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXG4gIDMwOlx0XHR0cmlzdGF0ZVxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBSVFc4OV84ODUyQlxuICAzMzpcdFx0dHJpc3RhdGVcbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgUlRXODlfODg1MkJUXG4gIDM2Olx0XHR0cmlzdGF0ZVxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBSVFc4OV84ODUyQ1xuICAzOTpcdFx0dHJpc3RhdGVcbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgUlRXODlfODkyMkFcbiAgNDI6XHRcdHRyaXN0YXRlXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIFJUVzg5Xzg5MjJEXG4gIDQ1Olx0XHR0cmlzdGF0ZVxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBSVFc4OV84ODUxQkVcbiAgNDg6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA1MDpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNTE6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgNTI6XHRcdHNlbGVjdCBSVFc4OV84ODUxQlxuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJFIGNoaXBzZXRcbiAgNTU6XHRcbiAgNTY6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIFJUVzg5Xzg4NTFCVVxuICA1OTpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAgNjA6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDYxOlx0XHRzZWxlY3QgUlRXODlfQ09SRVxuICA2MjpcdFx0c2VsZWN0IFJUVzg5X1VTQlxuICA2MzpcdFx0c2VsZWN0IFJUVzg5Xzg4NTFCXG4gIDY0Olx0XHRoZWxwXG4gIDY1Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQlUgY2hpcHNldFxuICA2NjpcdFxuICA2NzpcdFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBSVFc4OV84ODUyQUVcbiAgNzA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDcxOlx0XHRkZXBlbmRzIG9uIFBDSVxuICA3MjpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNzM6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgNzQ6XHRcdHNlbGVjdCBSVFc4OV84ODUyQVxuICA3NTpcdFx0aGVscFxuICA3NjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcbiAgNzc6XHRcbiAgNzg6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gIDc5Olx0XG4gIDgwOlx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxuICA4MTpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAgODI6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDgzOlx0XHRzZWxlY3QgUlRXODlfQ09SRVxuICA4NDpcdFx0c2VsZWN0IFJUVzg5X1VTQlxuICA4NTpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJBXG4gIDg2Olx0XHRoZWxwXG4gIDg3Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQVUgY2hpcHNldFxuICA4ODpcdFxuICA4OTpcdFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA5MDpcdFxuICA5MTpcdGNvbmZpZyBSVFc4OV84ODUyQkVcbiAgOTI6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDkzOlx0XHRkZXBlbmRzIG9uIFBDSVxuICA5NDpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgOTU6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgOTY6XHRcdHNlbGVjdCBSVFc4OV84ODUyQlxuICA5NzpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxuICA5ODpcdFx0aGVscFxuICA5OTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFIGNoaXBzZXRcbiAxMDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3MTMKCQkJCQkJCW91dHB1dDogMTU4CgkJCQkJCQl0aG91Z2h0czogNzA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBSZWFsdGVrIFJUVzg5IERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgZ29hbCBpcyB0byBzZXQgdXAgZnV6emluZyBmb3IgdGhlIFJlYWx0ZWsgUlRXODkgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBuZXcgYm91bmRzIGNoZWNrcyBpbnRyb2R1Y2VkIGluIHRoZSBwYXRjaC4gTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBjb2RlIGlzIGhpdCBkdXJpbmcgZmlybXdhcmUgbG9hZGluZywgd2hpY2ggbWFrZXMgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4gV2UgY2FuIHJlYWNoIGl0IHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yLCBldmVuIGJldHRlciwgVVNCIGZ1enppbmcuCgpJJiMzOTt2ZSBkZXRlcm1pbmVkIHRoYXQgdGhlIGtleSBjb25maWd1cmF0aW9ucyBuZWVkZWQgYXJlIGBSVFc4OWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MUJVYCwgYW5kIGBNQUM4MDIxMWAuIFdlIG5lZWQgYE1BQzgwMjExYCBiZWNhdXNlIGBSVFc4OWAgZGVwZW5kcyBvbiBpdC4gSSBhbHNvIGNvbmZpcm1lZCB0aGF0IGluY2x1ZGluZyBgUlRXODlfODg1MkFVYCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYCwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIFRoZSBvdGhlciBVU0IgdmFyaWFudCBpcyBhbHNvIGluY2x1ZGVkIGZvciBmbGV4aWJpbGl0eS4KClRoZSBtYWluIGZ1bmN0aW9ucyBJJiMzOTtsbCBiZSBmb2N1c2luZyBvbiBmb3IgZnV6emluZyBhcmUgYHJ0dzg5X2Z3X2Rvd25sb2FkYCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgLiBgcnR3ODlfZndfZG93bmxvYWRgIGlzIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludCBmb3IgZmlybXdhcmUgZG93bmxvYWRpbmcgYW5kIHBhcnNpbmcsIGFuZCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAgaXMgaXRzIGNhbGxlci4gQ3J1Y2lhbGx5LCBuZWl0aGVyIGlzIHN0YXRpYyBvciBpbmxpbmVkLCBtYWtpbmcgdGhlbSBpZGVhbCBzeW1ib2xzIHRvIHRhcmdldC4gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyBpbiBgZncuY2AsIGFuZCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAgaXMgaW4gYG1hYy5jYC4gVGhlIHBhdGNoIG1vZGlmaWVzIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZpcm13YXJlIGhlYWRlciBwYXJzaW5nLCBhbmQgd2hpbGUgdGhlIHN0YXRpYyBmdW5jdGlvbnMgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgKm1pZ2h0KiBiZSBhY2Nlc3NpYmxlLCBpdCBpcyBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgc2FmZXIgdG8gdXNlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBhcyB0aGUgZW50cnkgcG9pbnRzLgoKSSYjMzk7dmUgdmVyaWZpZWQgdGhhdCBgcnR3ODlfZndfZG93bmxvYWRgIGlzIGluZGVlZCB0aGUgbWFpbiBmdW5jdGlvbiB0aGF0IGlzIGhpdCBkdXJpbmcgZmlybXdhcmUgZG93bmxvYWQgYW5kIHRoYXQgaXQgaXMgdGhlIG1vc3Qgc3VpdGFibGUgc3RhcnRpbmcgcG9pbnQuCgpUaGVyZWZvcmUsIG15IGNvbmZpZ3VyYXRpb24gaXM6CgoqICAgYFdvcnRoRnV6emluZ2A6IGB0cnVlYAoqICAgYFJlYXNvbmluZ2A6IEJvdW5kcyBjaGVja2luZyBvbiBSZWFsdGVrIGZpcm13YXJlIHBhcnNpbmcgaXMgdnVsbmVyYWJsZSB0byBmdXp6aW5nLgoqICAgYEZvY3VzU3ltYm9sc2A6IGBydHc4OV9md19kb3dubG9hZGAsIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YAoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgUlRXODlgLCBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTFCVWAsIGBNQUM4MDIxMWAKSSYjMzk7bSBub3cgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODkmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg5X2Z3X2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O3J0dzg5X21hY19wYXJ0aWFsX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpbiB0aGUgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIgKHJ0dzg5KS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdoZW4gbG9hZGluZyBmaXJtd2FyZSwgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIgdmlhIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24gb3IgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUxQlUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtydHc4OV9tYWNfcGFydGlhbF9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIGZvciBmaXJtd2FyZSBoZWFkZXJzIGluIGBydHc4OV9md19oZHJfcGFyc2VyX3YwYCBhbmQgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjFgLiBJdCBlbnN1cmVzIHRoYXQgdGhlIGZpcm13YXJlIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvbnRhaW4gdGhlIGhlYWRlciBhbmQgaXRzIHNlY3Rpb25zLCBhbmQgdmFsaWRhdGVzIHRoZSBzZWN0aW9uIG51bWJlci4gV2l0aG91dCB0aGVzZSBjaGVja3MsIHRoZSBjb2RlIGNvdWxkIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBmaXJtd2FyZSBidWZmZXIsIHdoaWNoIGNvbnN0aXR1dGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBmaXJtd2FyZSBidWZmZXIgaXRzZWxmIGlzIHBvcHVsYXRlZCBieSB0aGUgZmlybXdhcmUgbG9hZGluZyBzdWJzeXN0ZW0sIHNvIHJlYWRpbmcgcGFzdCBpdHMgbGVuZ3RoIGlzIGEgc3BhdGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIChPT0IpLCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZXJlZm9yZSwgbm8gS01TQU4tc3BlY2lmaWMgcmlza3MgKGxpa2UgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IG9yIGluZm8tbGVha3MpIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzA0MGM2ZjQwZjExNTI5YWEwYWY1ZGU4ODVjMDcwNzc2NzFkNDU5YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDE5OjE3OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCmluZGV4IDAwOTljNWMwM2U3YTYuLmIyOTkxYmM5M2Y4NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMKQEAgLTE1Niw4ICYjNDM7MTU2LDI0IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlCiAJaWYgKCFpbmZvKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAobGVuICZsdDsgc2l6ZW9mKCpmd19oZHIpKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NiwgRldfSERSX1c2X1NFQ19OVU0pOwomIzQzOwlpZiAoIWluZm8tJmd0O3NlY3Rpb25fbnVtIHx8IGluZm8tJmd0O3NlY3Rpb25fbnVtICZndDsgRldETF9TRUNUSU9OX01BWF9OVU0pIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1pbnZhbGlkIGZ3IHNlY3Rpb24gbnVtICV1XG4mIzM0OywKJiM0MzsJCQkgIGluZm8tJmd0O3NlY3Rpb25fbnVtKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJYmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby0mZ3Q7c2VjdGlvbl9udW0pOwomIzQzOwlpZiAoYmFzZV9oZHJfbGVuICZndDsgbGVuKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NywgRldfSERSX1c3X0RZTl9IRFIpOwogCWluZm8tJmd0O2lkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci0mZ3Q7dzcsIEZXX0hEUl9XN19JRE1FTV9TSEFSRV9NT0RFKTsKIApAQCAtNDU1LDkgJiM0Mzs0NzEsMjUgQEAgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGUKIAlpbnQgcmV0OwogCXUzMiBpOwogCiYjNDM7CWlmIChsZW4gJmx0OyBzaXplb2YoKmZ3X2hkcikpIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWluZm8tJmd0O3NlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItJmd0O3c2LCBGV19IRFJfVjFfVzZfU0VDX05VTSk7CiYjNDM7CWlmICghaW5mby0mZ3Q7c2VjdGlvbl9udW0gfHwgaW5mby0mZ3Q7c2VjdGlvbl9udW0gJmd0OyBGV0RMX1NFQ1RJT05fTUFYX05VTSkgewomIzQzOwkJcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcbiYjMzQ7LAomIzQzOwkJCSAgaW5mby0mZ3Q7c2VjdGlvbl9udW0pOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtkc3BfY2hlY2tzdW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci0mZ3Q7dzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTsKIAliYXNlX2hkcl9sZW4gPSBzdHJ1Y3Rfc2l6ZShmd19oZHIsIHNlY3Rpb25zLCBpbmZvLSZndDtzZWN0aW9uX251bSk7CiYjNDM7CWlmIChiYXNlX2hkcl9sZW4gJmd0OyBsZW4pIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWluZm8tJmd0O2R5bmFtaWNfaGRyX2VuID0gbGUzMl9nZXRfYml0cyhmd19oZHItJmd0O3c3LCBGV19IRFJfVjFfVzdfRFlOX0hEUik7CiAJaW5mby0mZ3Q7aWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NywgRldfSERSX1YxX1c3X0lETUVNX1NIQVJFX01PREUpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzI4CgkJCQkJCQlvdXRwdXQ6IDE5NQoJCQkJCQkJdGhvdWdodHM6IDI5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGaXJtd2FyZSBIZWFkZXIgUGFyc2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLCBhbmQgaGVyZSYjMzk7cyBteSB0YWtlLiBJdCYjMzk7cyBmb2N1c2VkIG9uIGJvbHN0ZXJpbmcgdGhlIHNlY3VyaXR5IG9mIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGZpcm13YXJlIHBhcnNpbmcsIHNwZWNpZmljYWxseSBpbiB0aGUgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgZnVuY3Rpb25zIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBmaXJtd2FyZSBoZWFkZXIgaGFuZGxpbmcuCgpFc3NlbnRpYWxseSwgdGhleSYjMzk7cmUgaW1wbGVtZW50aW5nIGNoZWNrcyBmb3IgdGhyZWUga2V5IGNvbmRpdGlvbnM6IEZpcnN0LCBtYWtpbmcgc3VyZSB0aGUgbGVuZ3RoIG9mIHRoZSBpbmNvbWluZyBkYXRhIChgbGVuYCkgaXNuJiMzOTt0IHNtYWxsZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZmlybXdhcmUgaGVhZGVyIHN0cnVjdHVyZSBpdHNlbGYgKGBzaXplb2YoKmZ3X2hkcilgKS4gU2Vjb25kLCB2YWxpZGF0aW5nIHRoYXQgdGhlIHNlY3Rpb24gbnVtYmVyIGlzbiYjMzk7dCB6ZXJvIG9yIGV4Y2VlZHMgdGhlIGRlZmluZWQgbWF4aW11bSAoYEZXRExfU0VDVElPTl9NQVhfTlVNYCkuIEFuZCB0aGlyZCwgY2hlY2tpbmcgdGhhdCB0aGUgYmFzZSBoZWFkZXIgbGVuZ3RoIGRvZXNuJiMzOTt0IGV4Y2VlZCB0aGUgdG90YWwgYnVmZmVyIGxlbmd0aC4KClRoaXMgaXMgYWxsIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFuZCBxdWl0ZSBzb3VuZC4gVGhlc2UgY2hlY2tzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGR1cmluZyB0aGUgaGVhZGVyIHBhcnNpbmcgcHJvY2Vzcy4gVGhlIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGdvaW5nIHRvIGNhdGNoIHRob3NlIG91dC1vZi1ib3VuZHMgcmVhZHMsIHdoaWNoIGlzIHRoZSBwcmltYXJ5IGNvbmNlcm4gaGVyZS4gSSBkb24mIzM5O3Qgc2VlIGFueSBpbW1lZGlhdGUgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3Mgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGFzIGEgcmVzdWx0IG9mIHRoZXNlIGNoYW5nZXMuIEluIGZhY3QsIGl0IHNob3VsZCBlbGltaW5hdGUgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gSXQgc3RvcHMgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgZndgIGJ1ZmZlciwgd2hpY2ggaXMgdmVyeSBsaWtlbHkgdG8gYmUgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpcyBnb29kIHByYWN0aWNlLgoKTm93LCBJIGRpZCBhIHF1aWNrIG1lbnRhbCBjaGVjayB0byBlbnN1cmUgdGhhdCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBpc24mIzM5O3QgYW4gaXNzdWUuIFRoZSBgZndgIGJ1ZmZlciwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgaXMgdHlwaWNhbGx5IGhhbmRsZWQgYnkgYHJlcXVlc3RfZmlybXdhcmUoKWAuIFRoaXMgbWVhbnMgaXQmIzM5O3MgdXN1YWxseSBhbGxvY2F0ZWQgYW5kIHBvcHVsYXRlZCBiZWZvcmUgYmVpbmcgdXNlZC4gVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdXAgdG8gdGhlIHNwZWNpZmllZCBgbGVuYC4gU28gaWYgdGhlIGBsZW5gIGlzIHVuZXhwZWN0ZWRseSBzbWFsbCwgcmVhZGluZyBiZXlvbmQgaXQgaXMgY2xlYXJseSBhbiBvdXQtb2YtYm91bmRzIGlzc3VlLiBUaGF0JiMzOTtzIGEgS0FTQU4gcHJvYmxlbSwgbm90IGEgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpc3N1ZS4gVGhlcmVmb3JlLCBLTVNBTiBkb2VzbiYjMzk7dCBzZWVtIHJlbGV2YW50IGluIHRoaXMgY2FzZS4gVGhpcyBwYXRjaCBzZWVtcyB0byBiZSBvbiBzb2xpZCBncm91bmQgaW4gaXRzIGN1cnJlbnQgZm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIGZpcm13YXJlIGhlYWRlcnMgaW4gYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAuIEl0IGVuc3VyZXMgdGhhdCB0aGUgZmlybXdhcmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiB0aGUgaGVhZGVyIGFuZCBpdHMgc2VjdGlvbnMsIGFuZCB2YWxpZGF0ZXMgdGhlIHNlY3Rpb24gbnVtYmVyLiBXaXRob3V0IHRoZXNlIGNoZWNrcywgdGhlIGNvZGUgY291bGQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpcm13YXJlIGJ1ZmZlciwgd2hpY2ggY29uc3RpdHV0ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIGZpcm13YXJlIGJ1ZmZlciBpdHNlbGYgaXMgcG9wdWxhdGVkIGJ5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN1YnN5c3RlbSwgc28gcmVhZGluZyBwYXN0IGl0cyBsZW5ndGggaXMgYSBzcGF0aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgKE9PQiksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlcmVmb3JlLCBubyBLTVNBTi1zcGVjaWZpYyByaXNrcyAobGlrZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3IgaW5mby1sZWFrcykgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIGZpcm13YXJlIGhlYWRlcnMgaW4gYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAuIEl0IGVuc3VyZXMgdGhhdCB0aGUgZmlybXdhcmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiB0aGUgaGVhZGVyIGFuZCBpdHMgc2VjdGlvbnMsIGFuZCB2YWxpZGF0ZXMgdGhlIHNlY3Rpb24gbnVtYmVyLiBXaXRob3V0IHRoZXNlIGNoZWNrcywgdGhlIGNvZGUgY291bGQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpcm13YXJlIGJ1ZmZlciwgd2hpY2ggY29uc3RpdHV0ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIGZpcm13YXJlIGJ1ZmZlciBpdHNlbGYgaXMgcG9wdWxhdGVkIGJ5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN1YnN5c3RlbSwgc28gcmVhZGluZyBwYXN0IGl0cyBsZW5ndGggaXMgYSBzcGF0aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgKE9PQiksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlcmVmb3JlLCBubyBLTVNBTi1zcGVjaWZpYyByaXNrcyAobGlrZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3IgaW5mby1sZWFrcykgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxNzoxMi44OTA4MTQxOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzA5Nzc2MDAwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODlcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfODg1MUJVXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2Z3X2Rvd25sb2FkXCIsXG4gICAgXCJydHc4OV9tYWNfcGFydGlhbF9pbml0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgZmlybXdhcmUgaGVhZGVycyBpbiBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gSXQgZW5zdXJlcyB0aGF0IHRoZSBmaXJtd2FyZSBsZW5ndGggaXMgc3VmZmljaWVudCB0byBjb250YWluIHRoZSBoZWFkZXIgYW5kIGl0cyBzZWN0aW9ucywgYW5kIHZhbGlkYXRlcyB0aGUgc2VjdGlvbiBudW1iZXIuIFdpdGhvdXQgdGhlc2UgY2hlY2tzLCB0aGUgY29kZSBjb3VsZCByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgZmlybXdhcmUgYnVmZmVyLCB3aGljaCBjb25zdGl0dXRlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgZmlybXdhcmUgYnVmZmVyIGl0c2VsZiBpcyBwb3B1bGF0ZWQgYnkgdGhlIGZpcm13YXJlIGxvYWRpbmcgc3Vic3lzdGVtLCBzbyByZWFkaW5nIHBhc3QgaXRzIGxlbmd0aCBpcyBhIHNwYXRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSAoT09CKSwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGVyZWZvcmUsIG5vIEtNU0FOLXNwZWNpZmljIHJpc2tzIChsaWtlIHJlYWRpbmcgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBpbmZvLWxlYWtzKSBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpbiB0aGUgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIgKHJ0dzg5KS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdoZW4gbG9hZGluZyBmaXJtd2FyZSwgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIgdmlhIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24gb3IgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjEyLjg5MDgyMjk4NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1MjY0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzA0MGM2ZjQwZjExNTI5YWEwYWY1ZGU4ODVjMDcwNzc2NzFkNDU5YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxOToxNzoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcXG5pbmRleCAwMDk5YzVjMDNlN2E2Li5iMjk5MWJjOTNmODUyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbkBAIC0xNTYsOCArMTU2LDI0IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlXFxuIFxcdGlmICghaW5mbylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKCpmd19oZHIpKSB7XFxuK1xcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0aW5mby1cXHUwMDNlc2VjdGlvbl9udW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cXHUwMDNldzYsIEZXX0hEUl9XNl9TRUNfTlVNKTtcXG4rXFx0aWYgKCFpbmZvLVxcdTAwM2VzZWN0aW9uX251bSB8fCBpbmZvLVxcdTAwM2VzZWN0aW9uX251bSBcXHUwMDNlIEZXRExfU0VDVElPTl9NQVhfTlVNKSB7XFxuK1xcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgaW5mby1cXHUwMDNlc2VjdGlvbl9udW0pO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0YmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby1cXHUwMDNlc2VjdGlvbl9udW0pO1xcbitcXHRpZiAoYmFzZV9oZHJfbGVuIFxcdTAwM2UgbGVuKSB7XFxuK1xcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0aW5mby1cXHUwMDNlZHluYW1pY19oZHJfZW4gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cXHUwMDNldzcsIEZXX0hEUl9XN19EWU5fSERSKTtcXG4gXFx0aW5mby1cXHUwMDNlaWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVxcdTAwM2V3NywgRldfSERSX1c3X0lETUVNX1NIQVJFX01PREUpO1xcbiBcXG5AQCAtNDU1LDkgKzQ3MSwyNSBAQCBzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCB1OCAqZncsIHUzMiBsZVxcbiBcXHRpbnQgcmV0O1xcbiBcXHR1MzIgaTtcXG4gXFxuK1xcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKmZ3X2hkcikpIHtcXG4rXFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcIltFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRpbmZvLVxcdTAwM2VzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVxcdTAwM2V3NiwgRldfSERSX1YxX1c2X1NFQ19OVU0pO1xcbitcXHRpZiAoIWluZm8tXFx1MDAzZXNlY3Rpb25fbnVtIHx8IGluZm8tXFx1MDAzZXNlY3Rpb25fbnVtIFxcdTAwM2UgRldETF9TRUNUSU9OX01BWF9OVU0pIHtcXG4rXFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcIltFUlJdaW52YWxpZCBmdyBzZWN0aW9uIG51bSAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICBpbmZvLVxcdTAwM2VzZWN0aW9uX251bSk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRpbmZvLVxcdTAwM2Vkc3BfY2hlY2tzdW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cXHUwMDNldzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTtcXG4gXFx0YmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby1cXHUwMDNlc2VjdGlvbl9udW0pO1xcbitcXHRpZiAoYmFzZV9oZHJfbGVuIFxcdTAwM2UgbGVuKSB7XFxuK1xcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0aW5mby1cXHUwMDNlZHluYW1pY19oZHJfZW4gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cXHUwMDNldzcsIEZXX0hEUl9WMV9XN19EWU5fSERSKTtcXG4gXFx0aW5mby1cXHUwMDNlaWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVxcdTAwM2V3NywgRldfSERSX1YxX1c3X0lETUVNX1NIQVJFX01PREUpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6MTMuNDA3MTg2NDE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIxMjQ3MTMxNjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19kb3dubG9hZFwiLFxuICAgIFwicnR3ODlfbWFjX3BhcnRpYWxfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MDQwYzZmNDBmMTE1MjlhYTBhZjVkZTg4NWMwNzA3NzY3MWQ0NTlhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTk6MTc6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IDAwOTljNWMwM2U3YTYuLmIyOTkxYmM5M2Y4NTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuQEAgLTE1Niw4ICsxNTYsMjQgQEAgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVcbiBcdGlmICghaW5mbylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmZ3X2hkcikpIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2VzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc2LCBGV19IRFJfVzZfU0VDX05VTSk7XG4rXHRpZiAoIWluZm8tXHUwMDNlc2VjdGlvbl9udW0gfHwgaW5mby1cdTAwM2VzZWN0aW9uX251bSBcdTAwM2UgRldETF9TRUNUSU9OX01BWF9OVU0pIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcXG5cIixcbitcdFx0XHQgIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGJhc2VfaGRyX2xlbiA9IHN0cnVjdF9zaXplKGZ3X2hkciwgc2VjdGlvbnMsIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuK1x0aWYgKGJhc2VfaGRyX2xlbiBcdTAwM2UgbGVuKSB7XG4rXHRcdHJ0dzg5X2VycihydHdkZXYsIFwiW0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGluZm8tXHUwMDNlZHluYW1pY19oZHJfZW4gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1c3X0RZTl9IRFIpO1xuIFx0aW5mby1cdTAwM2VpZG1lbV9zaGFyZV9tb2RlID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzcsIEZXX0hEUl9XN19JRE1FTV9TSEFSRV9NT0RFKTtcbiBcbkBAIC00NTUsOSArNDcxLDI1IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlXG4gXHRpbnQgcmV0O1xuIFx0dTMyIGk7XG4gXG4rXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmZ3X2hkcikpIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2VzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc2LCBGV19IRFJfVjFfVzZfU0VDX05VTSk7XG4rXHRpZiAoIWluZm8tXHUwMDNlc2VjdGlvbl9udW0gfHwgaW5mby1cdTAwM2VzZWN0aW9uX251bSBcdTAwM2UgRldETF9TRUNUSU9OX01BWF9OVU0pIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcXG5cIixcbitcdFx0XHQgIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGluZm8tXHUwMDNlZHNwX2NoZWNrc3VtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTtcbiBcdGJhc2VfaGRyX2xlbiA9IHN0cnVjdF9zaXplKGZ3X2hkciwgc2VjdGlvbnMsIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuK1x0aWYgKGJhc2VfaGRyX2xlbiBcdTAwM2UgbGVuKSB7XG4rXHRcdHJ0dzg5X2VycihydHdkZXYsIFwiW0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGluZm8tXHUwMDNlZHluYW1pY19oZHJfZW4gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1YxX1c3X0RZTl9IRFIpO1xuIFx0aW5mby1cdTAwM2VpZG1lbV9zaGFyZV9tb2RlID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzcsIEZXX0hEUl9WMV9XN19JRE1FTV9TSEFSRV9NT0RFKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjEzLjQwNzE4ODQ4NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxNDcxMDYwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY2AuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBib3VuZHMgY2hlY2tzIHdpdGhpbiB0aGUgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggaXMgY2hlY2tpbmcgZm9yIGEgZmV3IHRoaW5nczogaWYgdGhlIGlucHV0IGxlbmd0aCAoYGxlbmApIGlzIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZmlybXdhcmUgaGVhZGVyIChgZndfaGRyYCksIGFuZCBpZiBgaW5mby1cdTAwM2VzZWN0aW9uX251bWAgaXMgdmFsaWQsIHBsdXMgaWYgdGhlIGJhc2UgaGVhZGVyIGxlbmd0aCAoYGJhc2VfaGRyX2xlbmApIGV4Y2VlZHMgdGhlIGlucHV0IGxlbmd0aC4gVGhpcyBpcyBvYnZpb3VzbHkgYSBmaXJtd2FyZSBwYXJzaW5nIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgZ2V0cyBjYWxsZWQgZHVyaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGxpa2VseSB0aGUgYHByb2JlYCBmdW5jdGlvbi5cblxuTm93LCBteSBtaW5kIGlzIHJhY2luZy4uLiAqY2FuKiB0aGlzIGRyaXZlciwgYHJ0dzg5YCwgYmUgZnV6emVkPyBJdCdzIGEgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIsIHNvIG15IGluaXRpYWwgdGhvdWdodCBpcywgbGlrZWx5IFBDSSBvciBVU0IuIFRoZSBwYXRjaCBtYWtlcyBpdCBjbGVhciBpdCdzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlci4gU28sIFBDSSBlbXVsYXRpb24gbWlnaHQgYmUgYW4gb3B0aW9uLCBidXQgdGhhdCdzIG5vdCBzdHJhaWdodGZvcndhcmQuIFJlYWwgaGFyZHdhcmUgZHJpdmVycywgdW5sZXNzIFVTQiBvciB3aXRoIHNwZWNpZmljIFBDSSBmdXp6aW5nLCBhcmUgZ2VuZXJhbGx5IGEgcGFpbiB0byBmdXp6LlxuXG5XYWl0LCB0aG91Z2guLi4gU3l6a2FsbGVyIGhhcyBiZWVuIG1ha2luZyBzdHJpZGVzIGluIFVTQiBmdXp6aW5nICh3aXRoIGBkdW1teV9oY2RgKSwgYW5kIGhhcyBzb21lIFBDSSBzdXBwb3J0IHRvby4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgdGhpbmcgaXMgVVNCIGNvbm5lY3RlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHJ0dzg5YCBoYXMgYSBVU0IgaW50ZXJmYWNlLiBJZiBpdCBkb2VzLCB0aGVuIGZ1enppbmcgYmVjb21lcyBhIG11Y2ggbW9yZSByZWFsaXN0aWMgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6MjAuNTU0Mjk4MDI2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDc2NTIxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgwNDU0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9Mj1tZW51Y29uZmlnIFJUVzg5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6OTpcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBydHc4OS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTkwPWNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTE6XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5Mi1cXHRkZXBlbmRzIG9uIFJUVzg5X0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xOTk9Y29uZmlnIFJUVzg5X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjAwOlxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDEtXFx0ZGVwZW5kcyBvbiBSVFc4OV9DT1JFIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExX0RFQlVHRlNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX1JUVzg5X0NPUkUpICs9IHJ0dzg5X2NvcmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDpydHc4OV9jb3JlLXkgKz0gY29yZS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUtXFx0XFx0bWFjODAyMTEubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjM6cnR3ODlfY29yZS0kKENPTkZJR19QTSkgKz0gd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCKSArPSBydHc4OV84ODUxYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToyNjpydHc4OV84ODUxYi1vYmpzIDo9IHJ0dzg4NTFiLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjctXFx0XFx0ICAgIHJ0dzg4NTFiX3RhYmxlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19SVFc4OV84ODUxQkUpICs9IHJ0dzg5Xzg4NTFiZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozMjpydHc4OV84ODUxYmUtb2JqcyA6PSBydHc4ODUxYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfUlRXODlfODg1MUJVKSArPSBydHc4OV84ODUxYnUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzU6cnR3ODlfODg1MWJ1LW9ianMgOj0gcnR3ODg1MWJ1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJBKSArPSBydHc4OV84ODUyYS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozODpydHc4OV84ODUyYS1vYmpzIDo9IHJ0dzg4NTJhLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzktXFx0XFx0ICAgIHJ0dzg4NTJhX3RhYmxlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19SVFc4OV84ODUyQUUpICs9IHJ0dzg5Xzg4NTJhZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0NDpydHc4OV84ODUyYWUtb2JqcyA6PSBydHc4ODUyYWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfUlRXODlfODg1MkFVKSArPSBydHc4OV84ODUyYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDc6cnR3ODlfODg1MmF1LW9ianMgOj0gcnR3ODg1MmF1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCX0NPTU1PTikgKz0gcnR3ODlfODg1MmJfY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjUwOnJ0dzg5Xzg4NTJiX2NvbW1vbi1vYmpzIDo9IHJ0dzg4NTJiX2NvbW1vbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19SVFc4OV84ODUyQikgKz0gcnR3ODlfODg1MmIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTM6cnR3ODlfODg1MmItb2JqcyA6PSBydHc4ODUyYi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTU0LVxcdFxcdCAgICBydHc4ODUyYl90YWJsZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfUlRXODlfODg1MkJFKSArPSBydHc4OV84ODUyYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTk6cnR3ODlfODg1MmJlLW9ianMgOj0gcnR3ODg1MmJlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCVSkgKz0gcnR3ODlfODg1MmJ1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjYyOnJ0dzg5Xzg4NTJidS1vYmpzIDo9IHJ0dzg4NTJidS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19SVFc4OV84ODUyQlQpICs9IHJ0dzg5Xzg4NTJidC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2NTpydHc4OV84ODUyYnQtb2JqcyA6PSBydHc4ODUyYnQubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS02Ni1cXHRcXHQgICAgcnR3ODg1MmJ0X3Jmay5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJURSkgKz0gcnR3ODlfODg1MmJ0ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3MDpydHc4OV84ODUyYnRlLW9ianMgOj0gcnR3ODg1MmJ0ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19SVFc4OV84ODUyQykgKz0gcnR3ODlfODg1MmMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NzM6cnR3ODlfODg1MmMtb2JqcyA6PSBydHc4ODUyYy5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTc0LVxcdFxcdCAgICBydHc4ODUyY190YWJsZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3ODpvYmotJChDT05GSUdfUlRXODlfODg1MkNFKSArPSBydHc4OV84ODUyY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Nzk6cnR3ODlfODg1MmNlLW9ianMgOj0gcnR3ODg1MmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJDVSkgKz0gcnR3ODlfODg1MmN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjgyOnJ0dzg5Xzg4NTJjdS1vYmpzIDo9IHJ0dzg4NTJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg0Om9iai0kKENPTkZJR19SVFc4OV84OTIyQSkgKz0gcnR3ODlfODkyMmEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODU6cnR3ODlfODkyMmEtb2JqcyA6PSBydHc4OTIyYS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg2OlxcdFxcdCAgICBydHc4OTIyYV9yZmsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfUlRXODlfODkyMkFFKSArPSBydHc4OV84OTIyYWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODk6cnR3ODlfODkyMmFlLW9ianMgOj0gcnR3ODkyMmFlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBVSkgKz0gcnR3ODlfODkyMmF1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjkyOnJ0dzg5Xzg5MjJhdS1vYmpzIDo9IHJ0dzg5MjJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk0Om9iai0kKENPTkZJR19SVFc4OV84OTIyRCkgKz0gcnR3ODlfODkyMmQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTU6cnR3ODlfODkyMmQtb2JqcyA6PSBydHc4OTIyZC5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk2OlxcdFxcdCAgICBydHc4OTIyZF9yZmsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfUlRXODlfODkyMkRFKSArPSBydHc4OV84OTIyZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTk6cnR3ODlfODkyMmRlLW9ianMgOj0gcnR3ODkyMmRlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwMTpydHc4OV9jb3JlLSQoQ09ORklHX1JUVzg5X0RFQlVHKSArPSBkZWJ1Zy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDI6cnR3ODlfY29yZS0kKENPTkZJR19SVFc4OV9MRURTKSArPSBsZWQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTAzOnJ0dzg5X2NvcmUtJChDT05GSUdfUlRXODlfTEVEU19NQykgKz0gbGVkX21jLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwNTpvYmotJChDT05GSUdfUlRXODlfUENJKSArPSBydHc4OV9wY2kub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA2OnJ0dzg5X3BjaS15IDo9IHBjaS5vIHBjaV9iZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgKz0gcnR3ODlfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwOTpydHc4OV91c2IteSA6PSB1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTE6c3RhdGljIGNvbnN0IGd1aWRfdCBydHc4OV9ndWlkID0gR1VJRF9JTklUKDB4RDJBOEMzRTgsIDB4NEI2OSwgMHg0RjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEyLVxcdFxcdFxcdFxcdFxcdCAgIDB4ODIsIDB4QkQsIDB4RkUsIDB4ODYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNTpzdGF0aWMgdTMyIHJ0dzg5X2FjcGlfdHJhdmVyc2FsX29iamVjdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTYtXFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosIHU4ICpwb3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMi1cXHRcXHRpZiAodW5saWtlbHkob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoID09IDApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzM6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNC1cXHRcXHRcXHRcXHQgICAgXFxcIiVzOiBpbnZhbGlkIGJ1ZmZlciB0eXBlXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NC1cXHRcXHRpZiAodW5saWtlbHkob2JqLVxcdTAwM2VwYWNrYWdlLmNvdW50ID09IDApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDU6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00Ni1cXHRcXHRcXHRcXHQgICAgXFxcIiVzOiBpbnZhbGlkIHBhY2thZ2UgdHlwZVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTQ6XFx0XFx0XFx0c3ViX2xlbiA9IHJ0dzg5X2FjcGlfdHJhdmVyc2FsX29iamVjdChydHdkZXYsIGVsbSwgdG1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NS1cXHRcXHRcXHRpZiAodW5saWtlbHkoc3ViX2xlbiA9PSAwKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYxLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjI6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiB1bmhhbmRsZWQgdHlwZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjMtXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBvYmotXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzM6c3RhdGljIHUzMiBydHc4OV9hY3BpX2NhbGN1bGF0ZV9vYmplY3RfbGVuZ3RoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03NC1cXHRcXHRcXHRcXHRcXHQgICAgICBjb25zdCB1bmlvbiBhY3BpX29iamVjdCAqb2JqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTc1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3NjpcXHRyZXR1cm4gcnR3ODlfYWNwaV90cmF2ZXJzYWxfb2JqZWN0KHJ0d2Rldiwgb2JqLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Nzk6c3RhdGljIHN0cnVjdCBydHc4OV9hY3BpX2RhdGEgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjgwOnJ0dzg5X2FjcGlfZXZhbHVhdGVfbWV0aG9kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgY2hhciAqbWV0aG9kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTgxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy04Mi1cXHRzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmID0ge0FDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo4MzpcXHRzdHJ1Y3QgcnR3ODlfYWNwaV9kYXRhICpkYXRhID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy04NC1cXHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy05MC1cXHRpZiAoIXJvb3QpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo5MTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTkyLVxcdFxcdFxcdCAgICBcXFwiYWNwaSAoJXMpOiBmYWlsZWQgdG8gZ2V0IHJvb3RcXFxcblxcXCIsIG1ldGhvZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy05Ny1cXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo5ODpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTk5LVxcdFxcdFxcdCAgICBcXFwiYWNwaSAoJXMpOiBmYWlsZWQgdG8gZ2V0IGhhbmRsZVxcXFxuXFxcIiwgbWV0aG9kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEwNC1cXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMDU6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMDYtXFx0XFx0XFx0ICAgIFxcXCJhY3BpICglcyk6IGZhaWxlZCB0byBldmFsdWF0ZSBvYmplY3RcXFxcblxcXCIsIG1ldGhvZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMTAtXFx0b2JqID0gYnVmLnBvaW50ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTExOlxcdGxlbiA9IHJ0dzg5X2FjcGlfY2FsY3VsYXRlX29iamVjdF9sZW5ndGgocnR3ZGV2LCBvYmopO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTExMi1cXHRpZiAodW5saWtlbHkobGVuID09IDApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTEzOlxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTE0LVxcdFxcdFxcdCAgICBcXFwiYWNwaSAoJXMpOiBmYWlsZWQgdG8gdHJhdmVyc2FsIG9iaiBsZW5cXFxcblxcXCIsIG1ldGhvZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMjItXFx0ZGF0YS1cXHUwMDNlbGVuID0gbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEyMzpcXHRydHc4OV9hY3BpX3RyYXZlcnNhbF9vYmplY3QocnR3ZGV2LCBvYmosIGRhdGEtXFx1MDAzZWJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTMwPXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEzMTppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3ZhbHVlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdW5pb24gYWNwaV9vYmplY3QgKm9iaixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzItXFx0XFx0XFx0ICAgICB1OCAqdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzQtXFx0aWYgKG9iai1cXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEzNTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEzNi1cXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBpbnRlZ2VyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNDQ6c3RhdGljIGJvb2wgY2hrX2FjcGlfcG9saWN5XzZnaHpfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV82Z2h6ICpwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE0NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0xNTE9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTUyOmludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHooc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE1My1cXHRcXHRcXHRcXHQgICB1bmlvbiBhY3BpX29iamVjdCAqb2JqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE1NDpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoeiAqKnBvbGljeV82Z2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE1NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTU2OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV82Z2h6ICpwdHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTU3LVxcdHUzMiBleHBlY3RfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTYwLVxcdGlmIChvYmotXFx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE2MTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2Mi1cXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxcXG5cXFwiLCBvYmotXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTY3LVxcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKnB0cikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNjg6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiBpbnZhbGlkIGJ1ZmZlciBsZW5ndGg6ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2OS1cXHRcXHRcXHQgICAgX19mdW5jX18sIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNzQtXFx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zaWcocHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE3NTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGJhZCBzaWduYXR1cmVcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNzYtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xODAtXFx0aWYgKGxlbiBcXHUwMDNjIGV4cGVjdF9sZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxODE6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiBleHBlY3QgJXUgYnV0IGxlbmd0aDogJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTgyLVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgZXhwZWN0X2xlbiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxOTA6XFx0cnR3ODlfaGV4X2R1bXAocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcInBvbGljeV82Z2h6OiBcXFwiLCAqcG9saWN5XzZnaHosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTkxLVxcdFxcdCAgICAgICBleHBlY3RfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxOTU6c3RhdGljIGJvb2wgY2hrX2FjcGlfcG9saWN5XzZnaHpfc3Bfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV82Z2h6X3NwICpwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0yMDM9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjA0OmludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfc3Aoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIwNS1cXHRcXHRcXHRcXHQgICAgICB1bmlvbiBhY3BpX29iamVjdCAqb2JqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIwNjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel9zcCAqKnBvbGljeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIwODpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel9zcCAqcHRyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIwOS1cXHR1MzIgYnVmX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxMS1cXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMTI6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTMtXFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxOC1cXHRpZiAoYnVmX2xlbiBcXHUwMDNjIHNpemVvZigqcHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIxOTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGludmFsaWQgYnVmZmVyIGxlbmd0aDogJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjIwLVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMjUtXFx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zcF9zaWcocHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIyNjpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGJhZCBzaWduYXR1cmVcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMjctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjM0OlxcdHJ0dzg5X2hleF9kdW1wKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCJwb2xpY3lfNmdoel9zcDogXFxcIiwgKnBvbGljeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzUtXFx0XFx0ICAgICAgIHNpemVvZigqcHRyKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjM5OnN0YXRpYyBib29sIGNoa19hY3BpX3BvbGljeV82Z2h6X3ZscF9zaWcoY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHpfdmxwICpwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0yNDc9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjQ4OmludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfdmxwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNDktXFx0XFx0XFx0XFx0ICAgICAgIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjUwOlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel92bHAgKipwb2xpY3kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjUxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNTI6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHpfdmxwICpwdHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjUzLVxcdHUzMiBidWZfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU1LVxcdGlmIChvYmotXFx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI1NjpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI1Ny1cXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxcXG5cXFwiLCBvYmotXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjYyLVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjYzOlxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCIlczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjQtXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBidWZfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2OS1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3ZscF9zaWcocHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI3MDpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGJhZCBzaWduYXR1cmVcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNzEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mjc4OlxcdHJ0dzg5X2hleF9kdW1wKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCJwb2xpY3lfNmdoel92bHA6IFxcXCIsICpwb2xpY3ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjc5LVxcdFxcdCAgICAgICBzaXplb2YoKnB0cikpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI4MzpzdGF0aWMgYm9vbCBjaGtfYWNwaV9wb2xpY3lfdGFzX3NpZyhjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfdGFzICpwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjkxOnN0YXRpYyBpbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Mi1cXHRcXHRcXHRcXHRcXHQgdW5pb24gYWNwaV9vYmplY3QgKm9iaixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTM6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV90YXMgKipwb2xpY3kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjk0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTU6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5X3RhcyAqcHRyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Ni1cXHR1MzIgYnVmX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5OC1cXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTk6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDAtXFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMwNS1cXHRpZiAoYnVmX2xlbiBcXHUwMDNjIHNpemVvZigqcHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMwNjpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGludmFsaWQgYnVmZmVyIGxlbmd0aDogJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzA3LVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMTItXFx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfdGFzX3NpZyhwdHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzEzOlxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCIlczogYmFkIHNpZ25hdHVyZVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMxNC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMjE6XFx0cnR3ODlfaGV4X2R1bXAocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcInBvbGljeV90YXM6IFxcXCIsICpwb2xpY3ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzIyLVxcdFxcdCAgICAgICBzaXplb2YoKnB0cikpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MzI2PXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMyNzpib29sIGNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV9yZWdfcnVsZXMgKnApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTMzNT1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMzY6aW50IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfcmVnX3J1bGVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMzctXFx0XFx0XFx0XFx0XFx0dW5pb24gYWNwaV9vYmplY3QgKm9iaixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMzg6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5X3JlZ19ydWxlcyAqKnBvbGljeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMzkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0MDpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfcmVnX3J1bGVzICpwdHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQxLVxcdHUzMiBidWZfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQzLVxcdGlmIChvYmotXFx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0NDpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0NS1cXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxcXG5cXFwiLCBvYmotXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzUwLVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzUxOlxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCIlczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNTItXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBidWZfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1Ny1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKHB0cikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNTg6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiBiYWQgc2lnbmF0dXJlXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzU5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM2NjpcXHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwicG9saWN5X3JlZ19ydWxlczogXFxcIiwgKnBvbGljeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNjctXFx0XFx0ICAgICAgIHNpemVvZigqcHRyKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzcxOmludCBydHc4OV9hY3BpX2V2YWx1YXRlX2RzbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzcyOlxcdFxcdFxcdCAgICBlbnVtIHJ0dzg5X2FjcGlfZHNtX2Z1bmMgZnVuYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNzM6XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9hY3BpX2RzbV9yZXN1bHQgKnJlcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM3ODpcXHRvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShBQ1BJX0hBTkRMRShydHdkZXYtXFx1MDAzZWRldiksIFxcdTAwMjZydHc4OV9ndWlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM3OS1cXHRcXHRcXHRcXHQwLCBmdW5jLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zODAtXFx0aWYgKCFvYmopIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozODE6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zODItXFx0XFx0XFx0ICAgIFxcXCJhY3BpIGRzbSBmYWlsIHRvIGV2YWx1YXRlIGZ1bmM6ICVkXFxcXG5cXFwiLCBmdW5jKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM4Ni1cXHRpZiAoZnVuYyA9PSBSVFc4OV9BQ1BJX0RTTV9GVU5DXzZHX0JQKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM4NzpcXHRcXHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHoocnR3ZGV2LCBvYmosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg4LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnJlcy1cXHUwMDNldS5wb2xpY3lfNmdoeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg5LVxcdGVsc2UgaWYgKGZ1bmMgPT0gUlRXODlfQUNQSV9EU01fRlVOQ182R0haX1NQX1NVUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozOTA6XFx0XFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6X3NwKHJ0d2Rldiwgb2JqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM5MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVzLVxcdTAwM2V1LnBvbGljeV82Z2h6X3NwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTItXFx0ZWxzZSBpZiAoZnVuYyA9PSBSVFc4OV9BQ1BJX0RTTV9GVU5DXzZHSFpfVkxQX1NVUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozOTM6XFx0XFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6X3ZscChydHdkZXYsIG9iaixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZyZXMtXFx1MDAzZXUucG9saWN5XzZnaHpfdmxwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTUtXFx0ZWxzZSBpZiAoZnVuYyA9PSBSVFc4OV9BQ1BJX0RTTV9GVU5DX1RBU19FTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozOTY6XFx0XFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV90YXMocnR3ZGV2LCBvYmosIFxcdTAwMjZyZXMtXFx1MDAzZXUucG9saWN5X3Rhcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzk3LVxcdGVsc2UgaWYgKGZ1bmMgPT0gUlRXODlfQUNQSV9EU01fRlVOQ19SRUdfUlVMRVNfRU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mzk4OlxcdFxcdHJldCA9IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfcmVnX3J1bGVzKHJ0d2Rldiwgb2JqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM5OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZyZXMtXFx1MDAzZXUucG9saWN5X3JlZ19ydWxlcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDAwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0MDE6XFx0XFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3ZhbHVlKHJ0d2Rldiwgb2JqLCBcXHUwMDI2cmVzLVxcdTAwM2V1LnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDA3OmludCBydHc4OV9hY3BpX2V2YWx1YXRlX3J0YWcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQwODpcXHRcXHRcXHQgICAgIHN0cnVjdCBydHc4OV9hY3BpX3J0YWdfcmVzdWx0ICpyZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDA5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0MTA6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MTEtXFx0dTMyIGJ1Zl9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDE0OlxcdGRhdGEgPSBydHc4OV9hY3BpX2V2YWx1YXRlX21ldGhvZChydHdkZXYsIFxcXCJSVEFHXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDE1LVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQxOS1cXHRpZiAoYnVmX2xlbiAhPSBzaXplb2YoKnJlcykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0MjA6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiBpbnZhbGlkIGJ1ZmZlciBsZW5ndGg6ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQyMS1cXHRcXHRcXHQgICAgX19mdW5jX18sIGJ1Zl9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQyNjpcXHQqcmVzID0gKihzdHJ1Y3QgcnR3ODlfYWNwaV9ydGFnX3Jlc3VsdCAqKWRhdGEtXFx1MDAzZWJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDI4OlxcdHJ0dzg5X2hleF9kdW1wKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCJhbnRlbm5hX2dhaW46IFxcXCIsIHJlcywgc2l6ZW9mKCpyZXMpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDM1OmVudW0gcnR3ODlfYWNwaV9zYXJfc3ViYmFuZCBydHc4OV9hY3BpX3Nhcl9nZXRfc3ViYmFuZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDM2LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICB1MzIgY2VudGVyX2ZyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MzktXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0NDA6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NDEtXFx0XFx0XFx0ICAgIFxcXCJjZW50ZXIgZnJlcSAldSB0byBBQ1BJIFNBUiBzdWJiYW5kIGlzIHVuaGFuZGxlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ2Ni1cXHQgKiBhbmQgUlRXODlfQUNQSV9TQVJfNkdIWl9TVUJCQU5EXzgsIHNvIGRpcmVjdGx5IGRlc2NyaWJlIGl0IHdpdGhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0Njc6XFx0ICogc3RydWN0IHJ0dzg5XzZnaHpfc3Bhbi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NjgtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDc1OmVudW0gcnR3ODlfYmFuZCBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kX3RvX2JhbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQ3NjpcXHRcXHRcXHRcXHRcXHQgICAgICAgZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ3OS1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQ4MDpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ4MS1cXHRcXHRcXHQgICAgXFxcIkFDUEkgU0FSIHN1YmJhbmQgJXUgdG8gYmFuZCBpcyB1bmhhbmRsZWRcXFxcblxcXCIsIHN1YmJhbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjUwODpzdGF0aWMgdTggcnR3ODlfYWNwaV9zYXJfcmZwYXRoX3RvX2hwX2FudGlkeChlbnVtIHJ0dzg5X3JmX3BhdGggcmZwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTE5OnN0YXRpYyB1OCBydHc4OV9hY3BpX3Nhcl9yZnBhdGhfdG9fcnRfYW50aWR4KGVudW0gcnR3ODlfcmZfcGF0aCByZnBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1MzA6c3RhdGljIHMxNiBydHc4OV9hY3BpX3Nhcl9ub3JtYWxpemVfaHBfdmFsKHU4IHYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NDQ6c3RhdGljIHMxNiBydHc4OV9hY3BpX3Nhcl9ub3JtYWxpemVfcnRfdmFsKHU4IHYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTU1Nj1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NTc6dm9pZCBydHc4OV9hY3BpX3Nhcl9sb2FkX3N0ZF9sZWdhY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU1ODpcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfc2FyX3JlY29nbml0aW9uICpyZWMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTU5LVxcdFxcdFxcdFxcdCAgICBjb25zdCB2b2lkICpjb250ZW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU2MDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg5X3Nhcl9lbnRyeV9mcm9tX2FjcGkgKmVudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU2MjpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfc3RkX2xlZ2FjeSAqcHRyID0gY29udGVudDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NjM6XFx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTY0OlxcdGVudW0gcnR3ODlfcmZfcGF0aCBwYXRoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTU3OT1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODA6dm9pZCBydHc4OV9hY3BpX3Nhcl9sb2FkX3N0ZF9oYXNfNmdoeihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTgxOlxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9yZWNvZ25pdGlvbiAqcmVjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU4Mi1cXHRcXHRcXHRcXHQgICAgICBjb25zdCB2b2lkICpjb250ZW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU4MzpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTg1OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zdGRfaGFzXzZnaHogKnB0ciA9IGNvbnRlbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTg2OlxcdGVudW0gcnR3ODlfYWNwaV9zYXJfc3ViYmFuZCBzdWJiYW5kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU4NzpcXHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01ODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz02MDA9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjAxOnZvaWQgcnR3ODlfYWNwaV9zYXJfbG9hZF9zbWxfbGVnYWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDI6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9yZWNvZ25pdGlvbiAqcmVjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYwMy1cXHRcXHRcXHRcXHQgICAgY29uc3Qgdm9pZCAqY29udGVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDQ6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9zYXJfZW50cnlfZnJvbV9hY3BpICplbnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjA1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDY6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfc2FyX3NtbF9sZWdhY3kgKnB0ciA9IGNvbnRlbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjA3OlxcdGVudW0gcnR3ODlfYWNwaV9zYXJfc3ViYmFuZCBzdWJiYW5kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYwODpcXHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02MDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz02MjM9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjI0OnZvaWQgcnR3ODlfYWNwaV9zYXJfbG9hZF9zbWxfaGFzXzZnaHooc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYyNTpcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfcmVjb2duaXRpb24gKnJlYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02MjYtXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgdm9pZCAqY29udGVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2Mjc6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X3Nhcl9lbnRyeV9mcm9tX2FjcGkgKmVudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02Mjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYyOTpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfc21sX2hhc182Z2h6ICpwdHIgPSBjb250ZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYzMDpcXHRlbnVtIHJ0dzg5X2FjcGlfc2FyX3N1YmJhbmQgc3ViYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MzE6XFx0ZW51bSBydHc4OV9yZl9wYXRoIHBhdGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY0NDpzdGF0aWMgczE2IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ub3JtYWxpemVfZGVsdGEoczggZGVsdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2NTM6c3RhdGljIGVudW0gcnR3ODlfYWNwaV9nZW9fc2FyX3JlZ2RfaHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2NTQ6cnR3ODlfYWNwaV9nZW9fc2FyX3JlZ2RfY29udmVydF9ocF9pZHgoZW51bSBydHc4OV9yZWd1bGF0aW9uX3R5cGUgcmVnZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY3NTpzdGF0aWMgZW51bSBydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9ydFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY3NjpydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9jb252ZXJ0X3J0X2lkeChlbnVtIHJ0dzg5X3JlZ3VsYXRpb25fdHlwZSByZWdkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz03MDA9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzAxOnZvaWQgcnR3ODlfYWNwaV9nZW9fc2FyX2xvYWRfYnlfaHAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwMjpcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9nZW9fc2FyX2hwX3ZhbCAqcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwMzpcXHRcXHRcXHRcXHQgICBlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aCwgczE2ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzA0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MDU6XFx0dTggYW50aWR4ID0gcnR3ODlfYWNwaV9zYXJfcmZwYXRoX3RvX2hwX2FudGlkeChwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MDY6XFx0czE2IGRlbHRhID0gcnR3ODlfYWNwaV9nZW9fc2FyX25vcm1hbGl6ZV9kZWx0YShwdHItXFx1MDAzZWRlbHRhW2FudGlkeF0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwNzpcXHRzMTYgbWF4ID0gcnR3ODlfYWNwaV9zYXJfbm9ybWFsaXplX2hwX3ZhbChwdHItXFx1MDAzZW1heCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9NzEyPXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcxMzp2b2lkIHJ0dzg5X2FjcGlfZ2VvX3Nhcl9sb2FkX2J5X3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MTQ6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ydF92YWwgKnB0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MTUtXFx0XFx0XFx0XFx0ICAgczE2ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzE2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MTc6XFx0czE2IGRlbHRhID0gcnR3ODlfYWNwaV9nZW9fc2FyX25vcm1hbGl6ZV9kZWx0YShwdHItXFx1MDAzZWRlbHRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MTg6XFx0czE2IG1heCA9IHJ0dzg5X2FjcGlfc2FyX25vcm1hbGl6ZV9ydF92YWwocHRyLVxcdTAwM2VtYXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTcxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTcyMz1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MjQ6dm9pZCBydHc4OV9hY3BpX2dlb19zYXJfbG9hZF9ocF9sZWdhY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTcyNS1cXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgdm9pZCAqY29udGVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MjY6XFx0XFx0XFx0XFx0ICAgICAgIGVudW0gcnR3ODlfcmVndWxhdGlvbl90eXBlIHJlZ2QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzI3OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTcyOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzI5OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX2dlb19zYXJfaHBfbGVnYWN5ICpwdHIgPSBjb250ZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMDpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9nZW9fc2FyX2hwX2xlZ2FjeV9lbnRyeSAqcHRyX2VudDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzE6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ocF92YWwgKnB0cl9lbnRfdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMjpcXHRlbnVtIHJ0dzg5X2FjcGlfZ2VvX3Nhcl9yZWdkX2hwIGdlb19pZHggPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMzpcXHRcXHRydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9jb252ZXJ0X2hwX2lkeChyZWdkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzQ6XFx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzM1OlxcdGVudW0gcnR3ODlfcmZfcGF0aCBwYXRoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczNjpcXHRlbnVtIHJ0dzg5X2JhbmQgYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03NDAtXFx0Zm9yIChzdWJiYW5kID0gMDsgc3ViYmFuZCBcXHUwMDNjIE5VTV9PRl9SVFc4OV9BQ1BJX1NBUl9TVUJCQU5EOyBzdWJiYW5kKyspIHtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6MjAuNzM5MDcxMDg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUyMzg3MzU4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHJ0dzg5IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBydHc4OWAgZHJpdmVyLiBTZWVtcyBsaWtlIGl0J3MgYSBQQ0kgYW5kIFVTQiBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIHBvc3NpYmlsaXRpZXMuIEkgc2VlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGNvbmZpcm1zIHRoaXM6IGBvYmotJChDT05GSUdfUlRXODlfUENJKSArPSBydHc4OV9wY2kub2AgYW5kIGBvYmotJChDT05GSUdfUlRXODlfVVNCKSArPSBydHc4OV91c2Iub2AuIFRoZSBVU0Igc3VwcG9ydCBpcyBrZXkgaGVyZSwgYmVjYXVzZSB0aGF0IG1lYW5zIEkgY2FuIHByb2JhYmx5IGZ1enogaXQgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgZm9yIFVTQi1zcGVjaWZpYyBmdXp6aW5nLCB3aGljaCBpcyBhIGNvbW1vbiBhcHByb2FjaC5cblxuQnV0IGhhbmcgb24sIHRoZXJlJ3MgYSBwYXRjaCBtb2RpZnlpbmcgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgaW4gYGZ3LmNgLiBUaGF0IHNjcmVhbXMgZmlybXdhcmUgcGFyc2luZyB0byBtZS4gQW5kIGZpcm13YXJlLCB0aGF0IHVzdWFsbHkgaW52b2x2ZXMgYHJlcXVlc3RfZmlybXdhcmUoKWAuIE5vdywgY2FuIHN5emthbGxlciBoYW5kbGUgZnV6emluZyBmaXJtd2FyZSBsb2FkZWQgdGhpcyB3YXk/IFllYWgsIGl0J3MgZGVmaW5pdGVseSBnb3Qgc3VwcG9ydCBmb3IgZnV6emluZyBgcmVxdWVzdF9maXJtd2FyZWAsIGVpdGhlciBieSBpbnRlcmNlcHRpbmcgdGhlIGNhbGxzIG9yLCBldmVuIGJldHRlciwgYnkgcHJvdmlkaW5nIGNyYWZ0ZWQgZmlybXdhcmUgZmlsZXMgZGlyZWN0bHkuIFRoaXMgbWFrZXMgaXQgcmVhbGx5IGludGVyZXN0aW5nLlxuXG5SaWdodCwgc28gc3l6a2FsbGVyICpkb2VzKiBmdXp6IGZpcm13YXJlLiBUaGF0J3MgYSBodWdlIHdpbi4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgaWYgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGlzIGV2ZW4gcmVhY2hhYmxlLiBUaGF0J3MgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZmlybXdhcmUgcGFyc2luZyBjb2RlIGlzIGFjdHVhbGx5IGEgdmFsaWQgZnV6emluZyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NDc5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjI4LjI2Mjk0ODg5NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjEzNDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9md19oZHJfcGFyc2VyX3YwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDY9aW50IHJ0dzg5X2Z3X2NoZWNrX3JkeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndkbF9jaGVja190eXBlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNDA6c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNDEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9NTcxPXN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTg0LVxcdGNhc2UgMDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6NTg1OlxcdFxcdHJldHVybiBydHc4OV9md19oZHJfcGFyc2VyX3YwKHJ0d2RldiwgZncsIGxlbiwgaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTU4Ni1cXHRjYXNlIDE6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjI4LjM1OTA4ODUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0OTYxNjYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBDYWxsIENoYWluIG9mIGBydHc4OV9md19oZHJfcGFyc2VyYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHQgb2YgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJgLiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgYW5kIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIuIFNvLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgY2hhaW4gdXB3YXJkcy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGZ1bmN0aW9uIGNhbGwgb3JpZ2luYXRlcyBhbmQgd2hhdCBjb250ZXh0dWFsIGRhdGEgdGhlIGZ1bmN0aW9uIHVzZXMuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIGFwcHJvYWNoIHdoZW4gZGVhbGluZyB3aXRoIGZpcm13YXJlIHBhcnNpbmcsIGdpdmVuIEknbGwgd2FudCB0byBhc3Nlc3MgdGhlIGludGVncml0eSBvZiB0aGUgcGFyc2luZyBwcm9jZXNzIGFuZCB0aGUgZGF0YSB0aGF0IGdldHMgcGFzc2VkIGludG8gaXQuIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyBpcyBjcnVjaWFsLiBMZXQncyBzZWUgaG93IGRlZXAgdGhpcyByYWJiaXQgaG9sZSBnb2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQ1MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjMzLjkwODcxMDMxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzEwMjE5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9md19oZHJfcGFyc2VyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDY9aW50IHJ0dzg5X2Z3X2NoZWNrX3JkeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndkbF9jaGVja190eXBlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNDA6c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNDEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9NDIwPXN0YXRpYyBpbnQgX19wYXJzZV9zZWN1cml0eV9zZWN0aW9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy00NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjQ1OTpzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCB1OCAqZncsIHUzMiBsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTQ2MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV9md19iaW5faW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjU3MTpzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01NzItXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTU4NC1cXHRjYXNlIDA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjU4NTpcXHRcXHRyZXR1cm4gcnR3ODlfZndfaGRyX3BhcnNlcl92MChydHdkZXYsIGZ3LCBsZW4sIGluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01ODYtXFx0Y2FzZSAxOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo1ODc6XFx0XFx0cmV0dXJuIHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjEocnR3ZGV2LCBmdywgbGVuLCBpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTg4LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTk4OT1zdGF0aWMgaW50IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5OTY6XFx0cmV0ID0gcnR3ODlfZndfaGRyX3BhcnNlcihydHdkZXYsIGZ3X3N1aXQsIFxcdTAwMjZpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5Ny1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjMzLjk5MTgxODczNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyNjIyNzM2NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0cmFjaW5nIGBydHc4OV9md19kb3dubG9hZF9zdWl0YDpcblxuKipUcmFjaW5nIHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQqKlxuXG5BbHJpZ2h0LCBsZXQncyBzdGFydCBkaXNzZWN0aW5nIGBydHc4OV9md19kb3dubG9hZF9zdWl0YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0J3MgYmVpbmcgYWNjb21wbGlzaGVkIGhlcmUg4oCTIHdoYXQncyB0aGUgYnJvYWRlciBjb250ZXh0PyBJcyBpdCBsb2FkaW5nIGZpcm13YXJlIGZvciBhIHNwZWNpZmljIFJlYWx0ZWsgd2lyZWxlc3MgY2hpcD8gSXMgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIG9yIHNvbWV0aGluZyB0cmlnZ2VyZWQgbGF0ZXIsIHBlcmhhcHMgZHVyaW5nIGRldmljZSByZXN1bWU/IFdlIG5lZWQgdG8ga25vdyB3aGVyZSBpdCBzaXRzIGluIHRoZSBsYXJnZXIgc2NoZW1lIG9mIHRoaW5ncyB0byB1bmRlcnN0YW5kIGl0cyBzaWduaWZpY2FuY2UuXG5cbk15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgZnVuY3Rpb24ncyBkZWNsYXJhdGlvbiBhbmQgaGVhZGVyIGZpbGVzLiBMb29raW5nIGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgd2lsbCBnaXZlIHVzIGNsdWVzIGFib3V0IHBhcmFtZXRlcnMsIGFuZCBsaWtlbHksIHdoYXQgaXQncyBleHBlY3RpbmcgdG8gZG8uIFNlZWluZyB0aGUgcmV0dXJuIHZhbHVlIHR5cGUgY291bGQgdGVsbCBtZSB3aGV0aGVyIGl0J3MgYSBzdWNjZXNzL2ZhaWx1cmUgaW5kaWNhdG9yIG9yIHNvbWV0aGluZyBtb3JlIG51YW5jZWQuIFRoZSBoZWFkZXJzIHdpbGwgcmV2ZWFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzIG9yIHN0cnVjdHVyZXMsIHRoZSBkYXRhIGl0IGNvbnN1bWVzLCBhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgaXQgcG90ZW50aWFsbHkgaW50ZXJhY3RzIHdpdGguXG5cbk5leHQsIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBmdW5jdGlvbiBpcyAqdXNlZCouIFdoZXJlIGlzIGBydHc4OV9md19kb3dubG9hZF9zdWl0YCBjYWxsZWQgZnJvbT8gQnkgdHJhY2tpbmcgZG93biB0aGUgY2FsbGVycywgSSdsbCBnZXQgdGhlIGNyaXRpY2FsIGluc2lnaHQgaW50byB0aGUgdHJpZ2dlciBwb2ludHMgZm9yIHRoZSBmaXJtd2FyZSBkb3dubG9hZC4gVGhpcyB3aWxsIGVzdGFibGlzaCB0aGUgZmxvdyBvZiBleGVjdXRpb24sIGFuZCBnaXZlIG1lIGNsdWVzIGFzIHRvIHRoZSBpbnRlbnQgb2YgdGhlIGRlc2lnbmVycy4gQXJlIHRoZXJlIGFueSBlcnJvciBjaGVja3MgYXJvdW5kIHRoZSBjYWxscz8gSGFuZGxpbmcgb2YgcG90ZW50aWFsIGZhaWx1cmVzIGNhbiBiZSBqdXN0IGFzIGNydWNpYWwgYXMgdGhlIGZ1bmN0aW9uIGl0c2VsZi5cblxuVGhlbiwgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uJ3MgaW50ZXJuYWxzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0J3MgZ29pbmcgb24gKmluc2lkZSogdGhlIGZ1bmN0aW9uLiBXaGF0IHJlc291cmNlcyBpcyBpdCBhY2Nlc3Npbmc/IEFyZSB0aGVyZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zIG9yIGRlYWxsb2NhdGlvbnM/IEFyZSB0aGVyZSBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMgb3IgdGhlIFJlYWx0ZWsgY2hpcCBkaXJlY3RseT8gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIGRvd25sb2FkIHByb2Nlc3MsIGFuZCBsZWFybiBhYm91dCBhbnkgcG90ZW50aWFsIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgYW5kIHRoZSBkaWZmZXJlbnQgZG93bmxvYWQgbWV0aG9kcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgdGhlIGZpcm13YXJlIGltYWdlIGl0c2VsZiAtIHdoZXJlIGl0IGNvbWVzIGZyb20sIGhvdyBpdCdzIHByZXBhcmVkLCBhbmQgaG93IGl0J3MgdWx0aW1hdGVseSBzZW50IHRvIHRoZSBoYXJkd2FyZS5cblxuRmluYWxseSwgSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBlcnJvciBoYW5kbGluZy4gRmlybXdhcmUgZG93bmxvYWRzIGNhbiBiZSBmcmFnaWxlOyBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmFpbHVyZSBtb2RlcyBhbmQgd2hhdCBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZSBmb3IgcmVjb3Zlcnkgb3IgZmFsbGJhY2suIEVycm9yIGNvZGVzLCBsb2dnaW5nLCBhbmQgcmV0cnkgbWVjaGFuaXNtcyBhcmUgYWxsIGVzc2VudGlhbCBoZXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciByb2J1c3RuZXNzIGFuZCBkZWJ1Z2dpbmcgcHVycG9zZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTE5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6NDEuMjU0MDk3MDkxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU3ODQ2MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfZndfZG93bmxvYWRfc3VpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTk3NT1zdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5ODk6c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwMjY9aW50IF9fcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDQxOlxcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQocnR3ZGV2LCBmd19zdWl0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNDg6XFx0XFx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfc3VpdChydHdkZXYsIGZ3X3N1aXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQ5LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjQxLjM2OTg5MTA5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjk5MTk0NTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGluIHRoZSBmaXJzdCBwZXJzb24gYW5kIGFzc3VtaW5nIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBGaXJtd2FyZSBEb3dubG9hZCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBfX3J0dzg5X2Z3X2Rvd25sb2FkYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgYnJvYWRlciBXaUZpIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBmb3IgdGhpcyBSZWFsdGVrIDg5IGRldmljZS4gSSBrbm93IHRoZSBnZW5lcmFsIGZsb3csIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgdGhlIHNwZWNpZmljIHN0ZXBzLiBJJ20gcHJvYmFibHkgbG9va2luZyBhdCBhIGxvdy1sZXZlbCByb3V0aW5lLCBsaWtlbHkgY2FsbGVkIGFmdGVyIHRoZSBkZXZpY2UgaGFzIGdvbmUgdGhyb3VnaCBpdHMgaW5pdGlhbCBwb3dlci11cCBzZXF1ZW5jZSBhbmQgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJdCdzIGxpa2VseSBoYW5kbGluZyB0aGUgY3J1Y2lhbCB0YXNrIG9mIHRyYW5zZmVycmluZyB0aGUgYWN0dWFsIGZpcm13YXJlIGltYWdlIGZyb20gdGhlIGhvc3Qgc3lzdGVtIHRvIHRoZSBSZWFsdGVrIDg5IGNoaXAuXG5cbkknbSBtZW50YWxseSBwcmVwYXJpbmcgdG8gZXhhbWluZTpcblxuKiAgICoqRW50cnkgcG9pbnRzOioqIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dCB0byBhcHByZWNpYXRlIGl0cyByb2xlLiBJcyBpdCBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIG9yIHBlcmhhcHMgYSBsYXRlciBmaXJtd2FyZSB1cGRhdGUgbWVjaGFuaXNtPyBJIG5lZWQgdG8gbG9vayBmb3IgY2FsbHMgaW4gdGhlIGRyaXZlciBjb2RlLCBsaWtlbHkgd2l0aGluIHRoZSBgcnR3ODlgIGRyaXZlciBtb2R1bGUuXG4qICAgKipEYXRhIFN0cnVjdHVyZXM6KiogV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHBhc3NlZCB0byBgX19ydHc4OV9md19kb3dubG9hZGA/IEkgd2FudCB0byBrbm93IGFib3V0IHRoZSBmaXJtd2FyZSBpbWFnZSBpdHNlbGYgKHByb2JhYmx5IGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHJhdyBkYXRhKSwgcGx1cyBkZXZpY2Utc3BlY2lmaWMgaW5mb3JtYXRpb24gbGlrZSByZWdpc3RlcnMsIGFkZHJlc3NlcywgYW5kIGFueSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIGEgaGVhZGVyLlxuKiAgICoqSGFyZHdhcmUgSW50ZXJhY3Rpb246KiogVGhpcyBpcyBrZXkuIEhvdyBpcyB0aGUgZmlybXdhcmUgYWN0dWFsbHkgZ2V0dGluZyBzZW50PyBJJ20gYW50aWNpcGF0aW5nIHNvbWUgZm9ybSBvZiBidXMgY29tbXVuaWNhdGlvbi4gSXMgaXQgdXNpbmcgdGhlIHN0YW5kYXJkIFNESU8gaW50ZXJmYWNlIG9yIGEgUENJZSBsaW5rPyBBcmUgdGhlcmUgc3BlY2lmaWMgY29tbWFuZHMgb3Igc2VxdWVuY2VzIHRoYXQgYXJlIHBlcmZvcm1lZCB0byBpbml0aWF0ZSB0aGUgZG93bmxvYWQ/IEknbSBleHBlY3Rpbmcgc29tZSBraW5kIG9mIHJlZ2lzdGVyIHdyaXRlcyB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlIGZvciB0aGUgdHJhbnNmZXIsIGZvbGxvd2VkIGJ5IHRoZSBhY3R1YWwgZGF0YSB0cmFuc2ZlciwgcGVyaGFwcyB0aHJvdWdoIERNQSBvciBQSU8gZGVwZW5kaW5nIG9uIHRoZSBpbnRlcmZhY2UuXG4qICAgKipFcnJvciBIYW5kbGluZzoqKiBXaGF0J3MgdGhlIGVycm9yIGNoZWNraW5nIGxpa2U/IEhvdyBpcyB0aGUgZnVuY3Rpb24gaGFuZGxpbmcgcG90ZW50aWFsIGZhaWx1cmVzIGR1cmluZyB0aGUgdHJhbnNmZXIsIGxpa2UgY2hlY2tzdW0gZXJyb3JzLCB0aW1lb3V0IGlzc3Vlcywgb3IgYnVzIGNvbW11bmljYXRpb24gcHJvYmxlbXM/IEkgd2FudCB0byBrbm93IGFib3V0IHRoZSByb2J1c3RuZXNzIG9mIHRoZSBkb3dubG9hZCBwcm9jZWR1cmUuIElzIGl0IGNoZWNraW5nIGZvciBlcnJvcnMgb3IganVzdCBob3BpbmcgZm9yIHRoZSBiZXN0PyBXaGF0IGtpbmQgb2YgbG9nZ2luZyBhbmQgZXJyb3IgcmVwb3J0aW5nIGlzIGJlaW5nIGRvbmU/XG4qICAgKipTZWN1cml0eSAoaWYgYXBwbGljYWJsZSk6KiogRG9lcyBpdCBjb250YWluIGFueSBzZWN1cml0eSBtZWNoYW5pc20/IElzIHRoZXJlIGEgdmVyaWZpY2F0aW9uIHN0ZXA/XG4qICAgKipCb290bG9hZGVyIEludGVyYWN0aW9uOioqIEkgYXNzdW1lIHRoZSBgX19ydHc4OV9md19kb3dubG9hZGAgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGV2aWNlJ3MgYm9vdGxvYWRlci4gSG93IGRvZXMgaXQgaGFuZCBvdmVyIGNvbnRyb2wgb25jZSB0aGUgaW1hZ2UgaXMgdHJhbnNmZXJyZWQ/IERvZXMgaXQgc2VuZCBhIFwiZ29cIiBjb21tYW5kLCBvciBpcyB0aGVyZSBhIHNwZWNpZmljIHJlc2V0IHNlcXVlbmNlPyBJJ2QgbGlrZSB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBhZnRlciB0aGUgaW1hZ2UgaXMgc2VudC5cblxuVGhlIGdvYWwgaGVyZSBpcyBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2Vzcy4gS25vd2luZyBleGFjdGx5IGhvdyBpdCB3b3JrcyBpcyB2aXRhbCBmb3IgZGVidWdnaW5nIGFueSByZWxhdGVkIGlzc3VlcyBhbmQgZm9yIG9wdGltaXppbmcgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBoZWFkZXJzLCBhbmQgc3R1ZHkgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBfX3J0dzg5X2Z3X2Rvd25sb2FkYCwgdG8gaWRlbnRpZnkgYW55IHBvdGVudGlhbCBpc3N1ZXMgb3IgYXJlYXMgZm9yIGltcHJvdmVtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjUyOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjQ3LjY2OTA4ODc3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzEzNTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fcnR3ODlfZndfZG93bmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE2ODk9c3RhdGljIHZvaWQgcnR3ODlfaDJjX3BrdF9zZXRfaGRyX2Z3ZGwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3MDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3MDg6c3RhdGljIHUzMiBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3MDktXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9md19iaW5faW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzMyOnN0YXRpYyB1MzIgX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzMzLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc2MTpzdGF0aWMgaW50IF9fcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc2Mi1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzgzLVxcdFxcdGZ3X2hkciA9IChzdHJ1Y3QgcnR3ODlfZndfaGRyICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzg0OlxcdFxcdHRydW5jYXRlZCA9IF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YwKHJ0d2RldiwgaW5mbywgZndfaGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzg3LVxcdFxcdGZ3X2hkcl92MSA9IChzdHJ1Y3QgcnR3ODlfZndfaGRyX3YxICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzg4OlxcdFxcdHRydW5jYXRlZCA9IF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YxKHJ0d2RldiwgaW5mbywgZndfaGRyX3YxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4OS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xODE3PXN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxODI0OlxcdHJldCA9IF9fcnR3ODlfZndfZG93bmxvYWRfaGRyKHJ0d2RldiwgZndfc3VpdCwgaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4MjUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE4NDI6c3RhdGljIGludCBfX3J0dzg5X2Z3X2Rvd25sb2FkX21haW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODQzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODlfZndfaGRyX3NlY3Rpb25faW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xOTE5PXN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfbWFpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkyOS1cXHR3aGlsZSAoc2VjdGlvbl9udW0tLSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxOTMwOlxcdFxcdHJldCA9IF9fcnR3ODlfZndfZG93bmxvYWRfbWFpbihydHdkZXYsIHNlY3Rpb25faW5mbywgaW5mby1cXHUwMDNlcGFydF9zaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkzMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwMjU9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwMjY6aW50IF9fcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAyNy1cXHRcXHRcXHRib29sIGluY2x1ZGVfYmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjA3NT1pbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDgxLVxcdGZvciAocmV0cnkgPSAwOyByZXRyeSBcXHUwMDNjIDU7IHJldHJ5KyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA4MjpcXHRcXHRyZXQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkKHJ0d2RldiwgdHlwZSwgaW5jbHVkZV9iYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODMtXFx0XFx0aWYgKCFyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjQ3Ljc3MTgwNzQzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjcwNzY5NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBydHc4OSBGaXJtd2FyZSBEb3dubG9hZCoqXG5cbk9rYXksIHNvIEknbSBzdGFydGluZyB3aXRoIGBydHc4OV9md19kb3dubG9hZGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBzY3JlYW1zIFwidGhlIHBsYWNlIHdoZXJlIHRoZSBmaXJtd2FyZSBnZXRzIGxvYWRlZCxcIiB3aGljaCBtZWFucyBpdCdzIHByZXR0eSBjZW50cmFsIHRvIHRoZSB3aG9sZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBzbyBteSBmaXJzdCBtb3ZlIGlzIGRlZmluaXRlbHkgdG8gZmlndXJlIG91dCBpdHMgY2FsbCBzaXRlcy4gV2hlcmUgaXMgdGhpcyB0aGluZyBiZWluZyAqY2FsbGVkKiBmcm9tPyBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgcGFpbnQgYSBtdWNoIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGFuZCBob3cgdGhpcyBkb3dubG9hZCBmaXRzIGludG8gdGhlIGJyb2FkZXIgc2NoZW1lLiBJdCdsbCBnaXZlIG1lIGNvbnRleHQg4oCTIHdoaWNoIGlzIGNyaXRpY2FsIGJlZm9yZSBJIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY1NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjU2LjQ0MjU4MjE0N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3OTc4Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2Z3X2Rvd25sb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xNjg5PXN0YXRpYyB2b2lkIHJ0dzg5X2gyY19wa3Rfc2V0X2hkcl9md2RsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzA4OnN0YXRpYyB1MzIgX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzA5LVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTczMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTczMjpzdGF0aWMgdTMyIF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTczMy1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg5X2Z3X2Jpbl9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3NjE6c3RhdGljIGludCBfX3J0dzg5X2Z3X2Rvd25sb2FkX2hkcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3NjItXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3N1aXQgKmZ3X3N1aXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4My1cXHRcXHRmd19oZHIgPSAoc3RydWN0IHJ0dzg5X2Z3X2hkciAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc4NDpcXHRcXHR0cnVuY2F0ZWQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MChydHdkZXYsIGluZm8sIGZ3X2hkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4Ny1cXHRcXHRmd19oZHJfdjEgPSAoc3RydWN0IHJ0dzg5X2Z3X2hkcl92MSAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc4ODpcXHRcXHR0cnVuY2F0ZWQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MShydHdkZXYsIGluZm8sIGZ3X2hkcl92MSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTgxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTgxNzpzdGF0aWMgaW50IHJ0dzg5X2Z3X2Rvd25sb2FkX2hkcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4MTgtXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE4MjQ6XFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9oZHIocnR3ZGV2LCBmd19zdWl0LCBpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTgyNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTg0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTg0MjpzdGF0aWMgaW50IF9fcnR3ODlfZndfZG93bmxvYWRfbWFpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4NDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9md19oZHJfc2VjdGlvbl9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE5MDY9cnR3ODlfZndfZ2V0X2Z3ZGxfY2hrX3R5cGVfZnJvbV9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxOTE5OnN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfbWFpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5MjAtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTI5LVxcdHdoaWxlIChzZWN0aW9uX251bS0tKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5MzA6XFx0XFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9tYWluKHJ0d2Rldiwgc2VjdGlvbl9pbmZvLCBpbmZvLVxcdTAwM2VwYXJ0X3NpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTMxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTk3NT1zdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5ODk6c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwMTQ6XFx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfaGRyKHJ0d2RldiwgZndfc3VpdCwgXFx1MDAyNmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDE1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjAxODpcXHRyZXQgPSBydHc4OV9md19kb3dubG9hZF9tYWluKHJ0d2RldiwgZndfc3VpdCwgXFx1MDAyNmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjAyNT1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjAyNjppbnQgX19ydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDI3LVxcdFxcdFxcdGJvb2wgaW5jbHVkZV9iYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDQxOlxcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQocnR3ZGV2LCBmd19zdWl0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNDg6XFx0XFx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfc3VpdChydHdkZXYsIGZ3X3N1aXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQ5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA3NTppbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA3Ni1cXHRcXHQgICAgICBib29sIGluY2x1ZGVfYmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA4MS1cXHRmb3IgKHJldHJ5ID0gMDsgcmV0cnkgXFx1MDAzYyA1OyByZXRyeSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwODI6XFx0XFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZChydHdkZXYsIHR5cGUsIGluY2x1ZGVfYmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDgzLVxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTUzNjU9cnR3ODlfZWFybHlfZndfZmVhdHVyZV9yZWNvZ25pemUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTUzNjktXFx0XFx0XFx0XFx0IGludCAqdXNlZF9md19mb3JtYXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1MzcwOmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01MzcxLVxcdFxcdCAgICAgIGJvb2wgaW5jbHVkZV9iYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQzMDc9aW50IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGluY2x1ZGVfYmIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo0MzM1OlxcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkKHJ0d2RldiwgUlRXODlfRldfTk9STUFMLCBpbmNsdWRlX2JiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzMzYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9MTI2MD1zdGF0aWMgaW50IHJ0dzg5X3dvd19zd2FwX2Z3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB3b3cpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEyOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMjkzOlxcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkKHJ0d2RldiwgZndfdHlwZSwgaW5jbHVkZV9iYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMjk0LVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6NTYuNTUwNTgzOTQyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMTg2MDU4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBydHc4OSBGaXJtd2FyZSBEb3dubG9hZCoqXG5cbk9rYXksIHNvIGBydHc4OV9md19kb3dubG9hZGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzIGNhbGxlZCBmcm9tIHR3byBwbGFjZXM6IGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBhbmQgYHJ0dzg5X3dvd19zd2FwX2Z3YC4gYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgIGxvb2tzIGxpa2UgaXQncyBwcm9iYWJseSBnZXR0aW5nIHRyaWdnZXJlZCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIOKAkyBzdGFuZGFyZCBzdHVmZiBmb3Igc2V0dGluZyB0aGluZ3MgdXAuIEdpdmVuIHRoYXQgYHJ0dzg5YCBpcyBhIFVTQiBkcml2ZXIgKGFuZCBQQ0ksIGZvciB0aGF0IG1hdHRlciksIHRoYXQgaW1tZWRpYXRlbHkgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0XCIgdG8gbWUsIGVzcGVjaWFsbHkgd2l0aCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYC5cblxuQnV0IGJlZm9yZSBJIGdldCB0b28gY2FycmllZCBhd2F5IHdpdGggZnV6emluZyBzdHJhdGVnaWVzLCBJIHNob3VsZCBtYWtlIGFic29sdXRlbHkgc3VyZSB3aGVuIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBpcyBjYWxsZWQuIEl0J3MgY3J1Y2lhbCB0byBjb25maXJtIHRoYXQgaXQncyBhY3R1YWxseSBnZXR0aW5nIGludm9rZWQgZHVyaW5nIHRoZSBwcm9iZSBzZXF1ZW5jZS4gSSBuZWVkIHRvIGtub3cgZXhhY3RseSB3aGVuIHRoYXQgZmlybXdhcmUgZG93bmxvYWQgcHJvY2VzcyBpcyBraWNrZWQgb2ZmIHRvIHN0cmF0ZWdpemUgcHJvcGVybHkuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIHByb2JlIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjE2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjAzLjY2OTE5MTkzNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMDAwMzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X21hY19wYXJ0aWFsX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzI3ND1zdGF0aWMgaW50IHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03Mjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjcyODk6XFx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlLCBiYl9wcmVpbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQzMDU9RVhQT1JUX1NZTUJPTChydHc4OV9tYWNfZGlzYWJsZV9iYl9yZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy00MzA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDMwNzppbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzMDgtXFx0XFx0XFx0ICAgYm9vbCBiYl9wcmVpbml0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz00MzYwPWludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo0MzY3OlxcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBpbmNsdWRlX2JiLCBpbmNsdWRlX2JiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzNjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmg9MTMwNT12b2lkIHJ0dzg5X21hY19wd3Jfb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaDoxMzA2OmludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmgtMTMwNy1cXHRcXHRcXHQgICBib29sIGJiX3ByZWluaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODowMy43NzIxOTkzMloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjgwMDM0MTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBgcnR3ODlgIGRyaXZlciwgYW5kIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgcHJvY2Vzcy4gUmlnaHQgbm93LCBJIHNlZSB0aGF0IGBydHc4OV9tYWNfaW5pdGAgaXMgY2FsbGVkIGJ5IGBydHc4OV9jb3JlX3N0YXJ0YC4gVGhhdCBtYWtlcyBzZW5zZSAtIE1BQyBpbml0aWFsaXphdGlvbiBoYXBwZW5pbmcgZHVyaW5nIHRoZSBjb3JlIHN0YXJ0dXAuIEFuZCAqdGhhdCogaXMgY2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBicm91Z2h0IHVwLiBUaGF04oCZcyB0aGUgdHJpZ2dlci4gSG1tLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGJldHRlciBhcyBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgb3ZlcmFsbCBkcml2ZXIgYmVoYXZpb3VyLlxuXG5XYWl0IGEgc2Vjb25kLCB0aGVyZSdzIGFub3RoZXIgcG9pbnQuIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaXMgYWxzbyBjYWxsZWQsIGFuZCB0aGF0IGhhcHBlbnMgZHVyaW5nIHRoZSBwcm9iZSBzdGFnZSwgd2hpY2ggaXMgZWFybGllci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgaW5pdGlhbGlzaW5nIHRoZSBjaGlwLCBzbyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoYXQgd29ya3MuIExldCBtZSBkZWx2ZSBpbnRvIGBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXBgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBlYXJseSBzdHVmZiBpcyB3b3JraW5nIHNvIEkgY2FuIGJlIHN1cmUgdGhhdCB0aGUgbGF0ZXIgcGFydHMgd2lsbCBiZSB3b3JraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODYwMiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjA4LjQ1MjIzOTIyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MDExNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz03MjEyPWludCBydHc4OV9jb3JlX21sc3Jfc3dpdGNoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZiAqcnR3dmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzI3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3Mjc0OnN0YXRpYyBpbnQgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03Mjc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTczODM9aW50IHJ0dzg5X2NoaXBfaW5mb19zZXR1cChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03NDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjc0MDk6XFx0cmV0ID0gcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzQxMC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODowOC41NjEyNTY4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjUxMzA1NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIHJ0dzg5IEZpcm13YXJlIFBhcnNpbmcgVnVsbmVyYWJpbGl0eSBNaXRpZ2F0aW9uKipcblxuT2theSwgc28gYHJ0dzg5X2NoaXBfaW5mb19zZXR1cGAgZ2V0cyBraWNrZWQgb2ZmIGJ5IGBydHc4OV9jb3JlX2luaXRgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGJvdGggYHJ0dzg5X3BjaV9wcm9iZWAgYW5kIGBydHc4OV91c2JfcHJvYmVgLiBUaGF0IG1lYW5zLCB3aXRob3V0IGEgZG91YnQsIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGlzIGRlZmluaXRlbHkgaGFwcGVuaW5nIGR1cmluZyB0aGUgZHJpdmVyIHByb2JlIHNlcXVlbmNlLiBUaGF0J3MgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LlxuXG5UaGlzIHBhdGNoIGlzIGFkZGluZyBjcnVjaWFsIGJvdW5kcyBjaGVja2luZyB0byBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICpyZWFsKiBpbXByb3ZlbWVudCwgYXMgaXQgcHJvdGVjdHMgYWdhaW5zdCB0aGUgbmFzdHkgcG9zc2liaWxpdHkgb2Ygb3V0LW9mLWJvdW5kcyByZWFkcywgd3JpdGVzLCBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Mgd2hlbiB0aGUgcGFyc2VyIGlzIGZlZCBjb3JydXB0ZWQgb3IgbWFsZm9ybWVkIGZpcm13YXJlLiBUaGF0J3MgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBsZWFkcyB0byBjcmFzaGVzIG9yLCB3b3JzZSwgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy5cblxuU2luY2Ugc3l6a2FsbGVyIGNhbiB0YXJnZXQgZmlybXdhcmUgZmlsZXMgdGhyb3VnaCB0aGUgYHJlcXVlc3RfZmlybXdhcmVgIGludGVyZmFjZSwgdGhpcyBpcyAqYWJzb2x1dGVseSogc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIExldCBtZSBzZWUuLi4gZG9lcyB0aGlzIGRyaXZlciBhY3R1YWxseSB1c2UgYHJlcXVlc3RfZmlybXdhcmVgPyBJIG5lZWQgdG8gbG9vayBhdCBgcnR3ODlfZndfZG93bmxvYWRgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzAyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjE0LjgxMjU2NTczOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc2MDA2MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVxdWVzdF9maXJtd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTAyNj1ydHc4OV9lYXJseV9md19mZWF0dXJlX3JlY29nbml6ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTA0MzpcXHRcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmaXJtd2FyZSwgZndfbmFtZSwgZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA0NC1cXHRcXHRpZiAoIXJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIxMDE9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjExNi1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMTc6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODoxNC44ODAxODMwNjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2Mjk4MDExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYHJlcXVlc3RfZmlybXdhcmVgIGlzIGRlZmluaXRlbHkgaW4gcGxheSBoZXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHN5emthbGxlciBpcyBhIHZpYWJsZSByb3V0ZSDigJMgd2UgY2FuIGZlZWQgaXQgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB6ZXJvIGluIG9uIGFyZSBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gQnV0IHdhaXQsIGFyZSB0aGV5IGV2ZW4gYWNjZXNzaWJsZT8gTGV0IG1lIGNoZWNrLi4uIEFoLCB0aGV5IGFyZSBgc3RhdGljYC4gQWxyaWdodCwgbGV0J3MgY29uZmlybSB0aGF0OiBgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKC4uLilgIGFuZCBgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKC4uLilgLiBTbywgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVtLlxuXG5UaGUgaW1tZWRpYXRlIGNhbGxlciBpcyBgcnR3ODlfZndfaGRyX3BhcnNlcmAsIGFuZCB0aGF0J3MgYWxzbyBgc3RhdGljYC4gVGhlIG5leHQgb25lIHVwIHRoZSBjaGFpbiBpcyBgcnR3ODlfZndfZG93bmxvYWRfc3VpdGAsIGFsc28gYHN0YXRpY2AuIFRoZW4gYF9fcnR3ODlfZndfZG93bmxvYWRgLCBzdGlsbCBgc3RhdGljYC4gRmluYWxseSwgd2UgZ2V0IHRvIGBydHc4OV9md19kb3dubG9hZGAsIHdoaWNoIGlzICpub24tc3RhdGljKi4gT2theSwgc28gdGhhdCdzIHRoZSBlbnRyeSBwb2ludC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgcnR3ODlfZndfZG93bmxvYWRgIGlzIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMsIG90aGVyd2lzZSBpdCdzIHN0aWxsIGluYWNjZXNzaWJsZSBmb3IgZnV6emluZyBwdXJwb3Nlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMTQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6MjEuNTQzMTY1OTg3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY4NDA1OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IHJ0dzg5X2Z3X2Rvd25sb2FkXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwMjY9aW50IF9fcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDc1OmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDc2LVxcdFxcdCAgICAgIGJvb2wgaW5jbHVkZV9iYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD01MzY1PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01MzY5LVxcdFxcdFxcdFxcdCBpbnQgKnVzZWRfZndfZm9ybWF0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg6NTM3MDppbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTM3MS1cXHRcXHQgICAgICBib29sIGluY2x1ZGVfYmIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODoyMS42NTAwMTA3NDJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5NjE4NjY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipGaXJtd2FyZSBEb3dubG9hZCBJbnF1aXJ5KipcblxuQWxyaWdodCwgc28gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyBkZWZpbml0ZWx5IGEgbm9uLXN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGNsZWFyLiBOb3csIGEga2V5IHJlbGF0ZWQgcXVlc3Rpb24gcG9wcyBpbnRvIG15IGhlYWQ6IHdoYXQncyB0aGUgZGVhbCB3aXRoIGBydHc4OV9sb2FkX2Zpcm13YXJlYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgcHJldmlvdXMgZnVuY3Rpb24sIHdoYXQgaXRzIHNjb3BlIGlzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGZ1bGx5IGNvbXByZWhlbmRpbmcgdGhlIHdvcmtmbG93IGhlcmUuIEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCB3aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgZGVzaWduZWQgdG8gYWNjb21wbGlzaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExMDUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODoyNS40NDYyMDA1OTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDkxMjk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9sb2FkX2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY5NjE9aW50IHJ0dzg5X2NvcmVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MDEyLVxcdHdpcGh5X3dvcmtfaW5pdChcXHUwMDI2cnR3ZGV2LVxcdTAwM2VjYW5jZWxfNmdoel9wcm9iZV93b3JrLCBydHc4OV9jYW5jZWxfNmdoel9wcm9iZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MDEzOlxcdElOSVRfV09SSyhcXHUwMDI2cnR3ZGV2LVxcdTAwM2Vsb2FkX2Zpcm13YXJlX3dvcmssIHJ0dzg5X2xvYWRfZmlybXdhcmVfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzAxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMDkwPWludCBydHc4OV93YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMDE6c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMDItXFx0XFx0XFx0XFx0ICAgc3RydWN0IHJ0dzg5X2Z3X3JlcV9pbmZvICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjEyNDp2b2lkIHJ0dzg5X2xvYWRfZmlybXdhcmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMzQ6XFx0cnR3ODlfbG9hZF9maXJtd2FyZV9yZXEocnR3ZGV2LCBcXHUwMDI2cnR3ZGV2LVxcdTAwM2Vmdy5yZXEsIGZ3X25hbWUsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEzNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTM3MD1pbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTM3MS1cXHRcXHQgICAgICBib29sIGluY2x1ZGVfYmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1MzcyOnZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTUzNzMtdm9pZCBydHc4OV91bmxvYWRfZmlybXdhcmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6MjUuNTY3MTE3NzI5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODYzNjg0MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgcnR3ODkgRmlybXdhcmUgTG9hZGluZyoqXG5cblJpZ2h0LCBzbyBgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrYCBpc24ndCBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0J3MgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUuIEdvb2QgdG8ga25vdywgYnV0IHRoYXQncyBub3QgdGhlIGNvcmUgb2YgdGhlIHBhcnNpbmcuIEhtbSwgaGFuZyBvbi4uLiBgcnR3ODlfZndfZG93bmxvYWRgIC0gdGhhdCdzIHdoZXJlIHRoZSAqYWN0dWFsKiBmaXJtd2FyZSBwYXJzaW5nIGhhcHBlbnMuIEludGVyZXN0aW5nLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIExldCdzIHNlZS4uLiBJJ2xsIGNoZWNrIGhvdyBgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXFgIGFuZCBgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrYCBpbnRlcmFjdC4gQWgsIGdvdCBpdC4gYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCBjYWxscyBgcmVxdWVzdF9maXJtd2FyZWAsIHRoYXQncyB0aGUgc3RhbmRhcmQga2VybmVsIEFQSS4gTm93IHRoZSBxdWVzdGlvbiBpczogZG9lcyBgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXFgIGl0c2VsZiBkbyBhbnkgcGFyc2luZyBiZWZvcmUgaGFuZGluZyBpdCBvZmY/IEkgaGF2ZSB0byBsb29rIG1vcmUgY2xvc2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIwNjYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6MzAuMjUzNDg4NjgzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA0NTA5NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfbG9hZF9maXJtd2FyZV9yZXFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwOTA9aW50IHJ0dzg5X3dhaXRfZmlybXdhcmVfY29tcGxldGlvbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjEwMTpzdGF0aWMgaW50IHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEwMi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcnR3ODlfZndfcmVxX2luZm8gKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMTI0PXZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMTM0OlxcdHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxKHJ0d2RldiwgXFx1MDAyNnJ0d2Rldi1cXHUwMDNlZncucmVxLCBmd19uYW1lLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMzUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODozMC40NzM5NDQ4NzRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyNDU4NjQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcWAgZnVuY3Rpb24uIEknbSBhc3N1bWluZywgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCB0aGlzIGlzIGxpa2VseSBwYXJ0IG9mIHRoZSBSZWFsdGVrIFJUTDg4NTJBRS9CRSBkcml2ZXIgc3RhY2suIE15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlIGFyb3VuZCBob3cgaXQncyBzdHJ1Y3R1cmVkOiBpcyBpdCBhIHNpbXBsZSB3cmFwcGVyLCBvciBkb2VzIGl0IGhhbmRsZSBtb3JlIHNvcGhpc3RpY2F0ZWQgYXNwZWN0cyBvZiB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzPyBXZSdyZSBkZWFsaW5nIHdpdGggYW4gZW1iZWRkZWQgc3lzdGVtLCBzbyBJJ20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCBpdCBsaWtlbHkgY29vcmRpbmF0ZXMgd2l0aCB0aGUgaGFyZHdhcmUncyBzcGVjaWZpYyBsb2FkaW5nIG1lY2hhbmlzbXMsIHBlcmhhcHMgaW52b2x2aW5nIERNQSB0cmFuc2ZlcnMsIGludGVycnVwdCBoYW5kbGluZywgYW5kIHBvc3NpYmx5IGV2ZW4gZGlyZWN0IG1lbW9yeSBhY2Nlc3MgcmVzdHJpY3Rpb25zIGJhc2VkIG9uIHRoZSBzZWN1cml0eSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgd2hldGhlciBpdCBpbnRlcmFjdHMgd2l0aCBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIG9yIHVzZXMgYW55IFJlYWx0ZWstc3BlY2lmaWMgZmlybXdhcmUgbG9hZGluZyBwcm90b2NvbHMuIEkgd2lsbCBhbHNvIGJlIGxvb2tpbmcgdG8gY2hlY2sgaG93IGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkIGlmIGl0IGZhaWxzIHRvIGxvYWQgdGhlIGZpcm13YXJlIHN1Y2Nlc3NmdWxseS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGluZGljYXRpb24gb2YgdGhlIG92ZXJhbGwgcm9idXN0bmVzcyBvZiB0aGUgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjc3MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjM0LjQ5ODUzNDg4NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTYxODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTAxOlxcdHN0YXRpYyBpbnQgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbjIxMDI6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHJ0dzg5X2Z3X3JlcV9pbmZvICpyZXEsXFxuMjEwMzpcXHRcXHRcXHRcXHRcXHQgICBjb25zdCBjaGFyICpmd19uYW1lLCBib29sIG5vd2FybilcXG4yMTA0OlxcdHtcXG4yMTA1OlxcdFxcdGludCByZXQ7XFxuMjEwNjpcXHRcXG4yMTA3OlxcdFxcdGlmIChyZXEtXFx1MDAzZWZpcm13YXJlKSB7XFxuMjEwODpcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19GVyxcXG4yMTA5OlxcdFxcdFxcdFxcdCAgICBcXFwiZnVsbCBmaXJtd2FyZSBoYXMgYmVlbiBlYXJseSByZXF1ZXN0ZWRcXFxcblxcXCIpO1xcbjIxMTA6XFx0XFx0XFx0Y29tcGxldGVfYWxsKFxcdTAwMjZyZXEtXFx1MDAzZWNvbXBsZXRpb24pO1xcbjIxMTE6XFx0XFx0XFx0cmV0dXJuIDA7XFxuMjExMjpcXHRcXHR9XFxuMjExMzpcXHRcXG4yMTE0OlxcdFxcdGlmIChub3dhcm4pXFxuMjExNTpcXHRcXHRcXHRyZXQgPSBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybihcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbjIxMTY6XFx0XFx0ZWxzZVxcbjIxMTc6XFx0XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbjIxMTg6XFx0XFxuMjExOTpcXHRcXHRjb21wbGV0ZV9hbGwoXFx1MDAyNnJlcS1cXHUwMDNlY29tcGxldGlvbik7XFxuMjEyMDpcXHRcXG4yMTIxOlxcdFxcdHJldHVybiByZXQ7XFxuMjEyMjpcXHR9XFxuMjEyMzpcXHRcXG4yMTI0OlxcdHZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4yMTI1OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6MzQuNTAxNzAyMzM2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDgwODMzMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBEb3dubG9hZCBQcm9jZXNzKipcblxuT2theSwgc28gYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOyBpdCBqdXN0IGdyYWJzIHRoZSBmaXJtd2FyZSBhbmQgaGFuZGxlcyB0aGUgaW5pdGlhbCBjb21wbGV0aW9uLiBUaGUgcmVhbCBwYXJzaW5nIHdvcmssIHRoZSBoZWF2eSBsaWZ0aW5nLCB0aGF0J3MgZGVmaW5pdGVseSBoYXBwZW5pbmcgaW4gYHJ0dzg5X2Z3X2Rvd25sb2FkYC4gSXQgbWFrZXMgc2Vuc2UgaXQncyBjYWxsZWQgbGF0ZXIsIHByZXN1bWFibHkgYWZ0ZXIgZXZlcnl0aGluZydzIHNldHRsZWQgZm9sbG93aW5nIHRoZSBjb21wbGV0aW9uIHRyaWdnZXJlZCBieSBgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXFgLiBTbywgYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgbG9naWMgaXMuIFJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhhdCBmdW5jdGlvbi4gV2FpdCwgaXMgaXQgZXhwb3J0ZWQ/IEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgaXQgYmVpbmcgc3RhdGljLiBOb3BlLCBpdCdzIG5vdC4gT2theSwgdGhhdCBjaGFuZ2VzIHRoaW5ncyDigJMgbGV0J3MganVzdCBjb25maXJtIGl0J3Mgbm90IGV4cG9ydGVkLCBiZWNhdXNlIHRoYXQncyBzaWduaWZpY2FudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0NTAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODo0MC41NDk3ODg3OTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzkxNTkzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qcnR3ODlfZndfZG93bmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjQwLjY1NzcxMDkxOVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTMxNzYzMDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFJlYWx0ZWsgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB3b3Jrcywgc3BlY2lmaWNhbGx5IGhvdyB0aGUgZmlybXdhcmUgZ2V0cyBkb3dubG9hZGVkLiBJJ3ZlIG5vdGljZWQgYSBmdW5jdGlvbiwgYW5kIGl0J3Mgbm90IGV4cG9ydGVkLCBidXQgaW1wb3J0YW50bHksIGl0J3MgKm5vdCogc3RhdGljLCBzbyBJIGNhbiBwcm9iYWJseSB0cmFjZSBpdC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGNoYWluIEkgc2hvdWxkIGJlIGF3YXJlIG9mP1xuXG5JIHNlZSB0aGF0IGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBpcyBjYWxsaW5nIGBydHc4OV9md19kb3dubG9hZGAuIFRoYXQncyBnb29kLCB0aGF0J3MgdGhlIGZpcm13YXJlIGRvd25sb2FkIEknbSBpbnRlcmVzdGVkIGluISBBbmQgZnVydGhlciwgSSBub3RpY2UgdGhhdCBgcnR3ODlfbWFjX2luaXRgIGNhbGxzIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YC4gRXhwYW5kaW5nIG91dCB0aGUgY2FsbHMgZXZlbiBtb3JlLCBgcnR3ODlfY29yZV9zdGFydGAgdGhlbiBjYWxscyBgcnR3ODlfbWFjX2luaXRgLiBUaGlzIGFsbCBzZWVtcyB0byBjaGFpbiB1cCB0byBgcnR3ODlfY29yZV9zdGFydGAsIHRoYXQgbG9va3MgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgdG8gYmVnaW4gaW52ZXN0aWdhdGluZy5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlciBhbmQgdGFrZSBhIGxvb2sgYXQgYHJ0dzg5X2NvcmVfc3RhcnRgIGFuZCB0cmFjZSBldmVyeXRoaW5nIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzg5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjQ1Ljc4OTQ3NzI4NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQxMTMwOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfY29yZV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02NjU2PUVYUE9SVF9TWU1CT0wocnR3ODlfY2hlY2tfcXVpcmtzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjY2NTg6aW50IHJ0dzg5X2NvcmVfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9OTM2Mj12b2lkIHJ0dzg5X2NvbXBsZXRlX2NvbmQoc3RydWN0IHJ0dzg5X3dhaXRfaW5mbyAqd2FpdCwgdW5zaWduZWQgaW50IGNvbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtOTM2My1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHJ0dzg5X2NvbXBsZXRpb25fZGF0YSAqZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6OTM2NDppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTkzNjUtdm9pZCBydHc4OV9jb3JlX3N0b3Aoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz01Nz1zdGF0aWMgaW50IHJ0dzg5X29wc19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NjM6XFx0cmV0dXJuIHJ0dzg5X2NvcmVfc3RhcnQocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jPTI1Nz12b2lkIHJ0dzg5X2xlYXZlX2lwcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmMtMjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYzoyNjc6XFx0cmV0ID0gcnR3ODlfY29yZV9zdGFydChydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYy0yNjgtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6NDUuODczNTk2OTdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyODY3MTk2NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIHJ0dzg5IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGUgcnR3ODkgd2lyZWxlc3MgZHJpdmVyLiBMZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHJ0dzg5X2NvcmVfc3RhcnRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gYmVjYXVzZSBpdCdzIGNhbGxlZCBmcm9tIGBydHc4OV9vcHNfc3RhcnRgLCB3aGljaCBpcyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUaGF0IG1lYW5zIGJyaW5naW5nIHVwIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyB0aGUgdHJpZ2dlciwgbGVhZGluZyB0byBmaXJtd2FyZSBkb3dubG9hZCBhbmQgcGFyc2luZywgbWFraW5nIGl0IGEgdmVyeSBhY2Nlc3NpYmxlIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IHRhcmdldHMgYXJlIGdvaW5nIHRvIGJlIGBydHc4OV9md19kb3dubG9hZGAsIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCwgYW5kIGBydHc4OV9jb3JlX3N0YXJ0YC4gQWN0dWFsbHksIGBydHc4OV9md19kb3dubG9hZGAgc2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3QgcGF0aC4gSSBzaG91bGQgY2hlY2sgaWYgdGhhdCdzIGFjdHVhbGx5IGluIGBmdy5jYC4gWWVwLCBpdCBpcy4gQW5kIGl0J3MgKm5vdCogc3RhdGljLCBwZXJmZWN0ISBUaGF0IG1lYW5zIGBydHc4OV9md19kb3dubG9hZGAgY2FuIGRlZmluaXRlbHkgYmUgYSBgRm9jdXNTeW1ib2xgIGZvciBzeXprYWxsZXIuXG5cbkxldCdzIHNlZSwgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gQnV0IHRob3NlIGFyZSBzdGF0aWMsIHNvIEkgY2FuJ3QgdXNlIHRoZW0gZGlyZWN0bHkgYXMgYEZvY3VzU3ltYm9sc2AuIEl0IGxvb2tzIGxpa2UgSSBjYW4gc3RpbGwgZm9jdXMgb24gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBUaGUgY29yZSBtb2R1bGUgaXMgYENPTkZJR19SVFc4OV9DT1JFYC4gV2UndmUgZ290IGJ1cyBtb2R1bGVzIHRvbzogYENPTkZJR19SVFc4OV9QQ0lgIGFuZCBgQ09ORklHX1JUVzg5X1VTQmAuIFNpbmNlIHN5emthbGxlciBjYW4gaGFuZGxlIFVTQiwgYENPTkZJR19SVFc4OV9VU0JgIGlzIGEgZ29vZCB0YXJnZXQuIEhvbGQgb24sIGBDT05GSUdfUlRXODlfVVNCYCBuZWVkcyBgQ09ORklHX1VTQmAsIHNvIGxldCdzIHZlcmlmeSB0aGF0IHF1aWNrbHkgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODI1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjU2LjE2MDMyMDQxMVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMjUwMjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OV9VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTE3PWNvbmZpZyBSVFc4OV9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODo1Ni4yNjI1NzgwMjdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY5NTQ1MTU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIGZpbGUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gTXkgaW5pdGlhbCBzY2FuIGlzIGZvciB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUuIEknbSBsb29raW5nIGZvciB0aGUgb3ZlcmFsbCBvcmdhbml6YXRpb24sIHRoZSBoaWVyYXJjaHkgb2Ygb3B0aW9ucywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byBlYWNoIG90aGVyLiBJIGV4cGVjdCB0byBzZWUgYGNvbmZpZ2Agc3RhdGVtZW50cyBkZWZpbmluZyB2YXJpb3VzIGZlYXR1cmVzLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0cy4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmFiaWxpdHkgb2YgdGhpcyBkcml2ZXIg4oCTIHdoYXQgb3B0aW9ucyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciAob3IsIG1vcmUgbGlrZWx5LCB0aGUgZGlzdHJpYnV0aW9uIG1haW50YWluZXIpLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLlxuXG5JJ2xsIGJlIGltbWVkaWF0ZWx5IGZvY3VzaW5nIG9uIHRoZSBpbXBvcnRhbnQgcGFydHMgc3VjaCBhcyB0aGUgYmFzZSBkcml2ZXIgc2VsZWN0aW9uLCB3aGljaCBzaG91bGQgYmUgbmVhciB0aGUgdG9wLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlZmluZXMgdGhlIGNvcmUgYHJ0dzg5YCBmdW5jdGlvbmFsaXR5LiBBcmUgdGhlcmUgc2VwYXJhdGUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IFJlYWx0ZWsgY2hpcHMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyPyBUaGF0J3Mgd2hhdCBJJ2QgZXhwZWN0LiBJJ20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgYHNlbGVjdGAsIGBkZXBlbmRzIG9uYCwgYW5kIGBkZWZhdWx0YCBzdGF0ZW1lbnRzLiBUaGVzZSBhcmUgbXkgYnJlYWQgYW5kIGJ1dHRlciB3aGVuIGl0IGNvbWVzIHRvIHVuZGVyc3RhbmRpbmcgaG93IGEgZHJpdmVyIGlzIHBpZWNlZCB0b2dldGhlciBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy5cblxuSSB3aWxsIGhhdmUgdG8gY2hlY2sgZm9yIHNwZWNpZmljIGhhcmR3YXJlIG9yIHJlZ3VsYXRvcnkgZG9tYWluIGNvbmZpZ3VyYXRpb25zLCBhbnkgcG93ZXItc2F2aW5nIG9wdGlvbnMsIGFuZCBhbnkgZmVhdHVyZXMgcmVsYXRlZCB0byBkZWJ1Z2dpbmcgb3IgdGVzdGluZy4gQ29uZGl0aW9uYWwgY29tcGlsYXRpb24gaXMga2V5IOKAkyBJIG5lZWQgdG8gdHJhY2sgZG93biBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgZGVmaW5lcyBhbmQgZGV0ZXJtaW5lIGlmIHRoZXkncmUgaGFuZGxlZCBncmFjZWZ1bGx5LiBBcmUgdGhlcmUgZmFsbGJhY2sgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIG9wdGlvbnMgdGhhdCBiZWNvbWUgYXZhaWxhYmxlIG9ubHkgd2hlbiBjZXJ0YWluIG90aGVyIGZlYXR1cmVzIGFyZSBlbmFibGVkPyBJJ20gYW50aWNpcGF0aW5nIHRoYXQgZGVwZW5kZW5jaWVzIHdpbGwgcGxheSBhIGh1Z2Ugcm9sZSBpbiBkZXRlcm1pbmluZyB3aGljaCBwYXJ0cyBvZiB0aGUgZHJpdmVyIGdldCBjb21waWxlZC5cblxuVGhlIHByZXNlbmNlIG9mIGBoZWxwYCBzZWN0aW9ucyBpcyBhbHdheXMgYSBnb29kIHNpZ24uIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGludGVuZGVkIHVzZSBmb3IgZWFjaCBvZiB0aGVzZSBvcHRpb25zLiBBcmUgdGhleSBzZWxmLWV4cGxhbmF0b3J5PyBPciBhcmUgdGhlcmUgY29tcGxleCB0cmFkZS1vZmZzIHRvIGNvbnNpZGVyLCBzdWNoIGFzIHBlcmZvcm1hbmNlIHZzLiBwb3dlciBjb25zdW1wdGlvbj8gSSdsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGluZmVyIHNvbWUgdGhpbmdzIGJhc2VkIG9uIHRoZSBuYW1lcyBvZiB0aGUgb3B0aW9ucywgYnV0IGNvbXByZWhlbnNpdmUgZG9jdW1lbnRhdGlvbiBpcyBhbHdheXMgd2VsY29tZS4gQW55IG9idmlvdXMgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBvciBzZWN1cml0eSBmZWF0dXJlcyBJIHdvdWxkIHdhbnQgdG8gdGFrZSBub3RlIG9mIGltbWVkaWF0ZWx5LiBVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIGZ1bGx5IGRvY3VtZW50IGhvdyB0aGUgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIHRvIG1heGltaXplIGZ1bmN0aW9uYWxpdHkgYW5kIHBlcmZvcm1hbmNlLCB3aGlsZSBtaW5pbWl6aW5nIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4MDEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOTowMS45NTgwMzI0MDlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg5XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODkuXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg5XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OV9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OV9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OV9VU0JcXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBSVFc4OV84ODUxQlxcbiAgMjQ6XFx0XFx0dHJpc3RhdGVcXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBXFxuICAyNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuICAzMDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgUlRXODlfODg1MkJcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBSVFc4OV84ODUyQlRcXG4gIDM2OlxcdFxcdHRyaXN0YXRlXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBSVFc4OV84ODUyQ1xcbiAgMzk6XFx0XFx0dHJpc3RhdGVcXG4gIDQwOlxcdFxcbiAgNDE6XFx0Y29uZmlnIFJUVzg5Xzg5MjJBXFxuICA0MjpcXHRcXHR0cmlzdGF0ZVxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgUlRXODlfODkyMkRcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBSVFc4OV84ODUxQkVcXG4gIDQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA1MDpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNTE6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAgNTI6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTFCXFxuICA1MzpcXHRcXHRoZWxwXFxuICA1NDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQkUgY2hpcHNldFxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNTc6XFx0XFxuICA1ODpcXHRjb25maWcgUlRXODlfODg1MUJVXFxuICA1OTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNjE6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDYyOlxcdFxcdHNlbGVjdCBSVFc4OV9VU0JcXG4gIDYzOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbiAgNjQ6XFx0XFx0aGVscFxcbiAgNjU6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgUlRXODlfODg1MkFFXFxuICA3MDpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNzI6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDczOlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDc0OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbiAgNzU6XFx0XFx0aGVscFxcbiAgNzY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcXG4gIDc3OlxcdFxcbiAgNzg6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDc5OlxcdFxcbiAgODA6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbiAgODE6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgODI6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDgzOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA4NDpcXHRcXHRzZWxlY3QgUlRXODlfVVNCXFxuICA4NTpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkFcXG4gIDg2OlxcdFxcdGhlbHBcXG4gIDg3OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJBVSBjaGlwc2V0XFxuICA4ODpcXHRcXG4gIDg5OlxcdFxcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDkwOlxcdFxcbiAgOTE6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbiAgOTI6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgOTM6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDk0OlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA5NTpcXHRcXHRzZWxlY3QgUlRXODlfUENJXFxuICA5NjpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkJcXG4gIDk3OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cXG4gIDk4OlxcdFxcdGhlbHBcXG4gIDk5OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJCRSBjaGlwc2V0XFxuIDEwMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTk6MDEuOTU4MTI1ODU5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTIwODkxMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSZWFsdGVrIFJUVzg5IERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBnb2FsIGlzIHRvIHNldCB1cCBmdXp6aW5nIGZvciB0aGUgUmVhbHRlayBSVFc4OSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIG5ldyBib3VuZHMgY2hlY2tzIGludHJvZHVjZWQgaW4gdGhlIHBhdGNoLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIGNvZGUgaXMgaGl0IGR1cmluZyBmaXJtd2FyZSBsb2FkaW5nLCB3aGljaCBtYWtlcyBpdCBhbiBleGNlbGxlbnQgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBjYW4gcmVhY2ggaXQgdmlhIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24gb3IsIGV2ZW4gYmV0dGVyLCBVU0IgZnV6emluZy5cblxuSSd2ZSBkZXRlcm1pbmVkIHRoYXQgdGhlIGtleSBjb25maWd1cmF0aW9ucyBuZWVkZWQgYXJlIGBSVFc4OWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MUJVYCwgYW5kIGBNQUM4MDIxMWAuIFdlIG5lZWQgYE1BQzgwMjExYCBiZWNhdXNlIGBSVFc4OWAgZGVwZW5kcyBvbiBpdC4gSSBhbHNvIGNvbmZpcm1lZCB0aGF0IGluY2x1ZGluZyBgUlRXODlfODg1MkFVYCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYCwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIFRoZSBvdGhlciBVU0IgdmFyaWFudCBpcyBhbHNvIGluY2x1ZGVkIGZvciBmbGV4aWJpbGl0eS5cblxuVGhlIG1haW4gZnVuY3Rpb25zIEknbGwgYmUgZm9jdXNpbmcgb24gZm9yIGZ1enppbmcgYXJlIGBydHc4OV9md19kb3dubG9hZGAgYW5kIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YC4gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgZm9yIGZpcm13YXJlIGRvd25sb2FkaW5nIGFuZCBwYXJzaW5nLCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgIGlzIGl0cyBjYWxsZXIuIENydWNpYWxseSwgbmVpdGhlciBpcyBzdGF0aWMgb3IgaW5saW5lZCwgbWFraW5nIHRoZW0gaWRlYWwgc3ltYm9scyB0byB0YXJnZXQuIGBydHc4OV9md19kb3dubG9hZGAgaXMgaW4gYGZ3LmNgLCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgIGlzIGluIGBtYWMuY2AuIFRoZSBwYXRjaCBtb2RpZmllcyBmdW5jdGlvbnMgcmVsYXRlZCB0byBmaXJtd2FyZSBoZWFkZXIgcGFyc2luZywgYW5kIHdoaWxlIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGBydHc4OV9md19oZHJfcGFyc2VyX3YwYCBhbmQgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjFgICptaWdodCogYmUgYWNjZXNzaWJsZSwgaXQgaXMgbW9yZSBzdHJhaWdodGZvcndhcmQgYW5kIHNhZmVyIHRvIHVzZSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXMgdGhlIGVudHJ5IHBvaW50cy5cblxuSSd2ZSB2ZXJpZmllZCB0aGF0IGBydHc4OV9md19kb3dubG9hZGAgaXMgaW5kZWVkIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQgaXMgaGl0IGR1cmluZyBmaXJtd2FyZSBkb3dubG9hZCBhbmQgdGhhdCBpdCBpcyB0aGUgbW9zdCBzdWl0YWJsZSBzdGFydGluZyBwb2ludC5cblxuVGhlcmVmb3JlLCBteSBjb25maWd1cmF0aW9uIGlzOlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IGB0cnVlYFxuKiAgIGBSZWFzb25pbmdgOiBCb3VuZHMgY2hlY2tpbmcgb24gUmVhbHRlayBmaXJtd2FyZSBwYXJzaW5nIGlzIHZ1bG5lcmFibGUgdG8gZnV6emluZy5cbiogICBgRm9jdXNTeW1ib2xzYDogYHJ0dzg5X2Z3X2Rvd25sb2FkYCwgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgUlRXODlgLCBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTFCVWAsIGBNQUM4MDIxMWBcbkknbSBub3cgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzcxMywiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOToxNC40NzkwMjA5NjZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUyOTM1NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19kb3dubG9hZFwiLFxuICAgIFwicnR3ODlfbWFjX3BhcnRpYWxfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19kb3dubG9hZFwiLFxuICAgIFwicnR3ODlfbWFjX3BhcnRpYWxfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOToxNC42NTQzMjE5ODlaIiwiU2VxIjozOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMTQwODE0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOToxNC42NTQ5NTEwODlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTIxMzQ0NjI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIGZpcm13YXJlIGhlYWRlcnMgaW4gYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAuIEl0IGVuc3VyZXMgdGhhdCB0aGUgZmlybXdhcmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiB0aGUgaGVhZGVyIGFuZCBpdHMgc2VjdGlvbnMsIGFuZCB2YWxpZGF0ZXMgdGhlIHNlY3Rpb24gbnVtYmVyLiBXaXRob3V0IHRoZXNlIGNoZWNrcywgdGhlIGNvZGUgY291bGQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpcm13YXJlIGJ1ZmZlciwgd2hpY2ggY29uc3RpdHV0ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIGZpcm13YXJlIGJ1ZmZlciBpdHNlbGYgaXMgcG9wdWxhdGVkIGJ5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN1YnN5c3RlbSwgc28gcmVhZGluZyBwYXN0IGl0cyBsZW5ndGggaXMgYSBzcGF0aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgKE9PQiksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlcmVmb3JlLCBubyBLTVNBTi1zcGVjaWZpYyByaXNrcyAobGlrZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3IgaW5mby1sZWFrcykgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNDBjNmY0MGYxMTUyOWFhMGFmNWRlODg1YzA3MDc3NjcxZDQ1OWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxOToxNzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuaW5kZXggMDA5OWM1YzAzZTdhNi4uYjI5OTFiYzkzZjg1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5AQCAtMTU2LDggKzE1NiwyNCBAQCBzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCB1OCAqZncsIHUzMiBsZVxuIFx0aWYgKCFpbmZvKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqZndfaGRyKSkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpbmZvLVx1MDAzZXNlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9XNl9TRUNfTlVNKTtcbitcdGlmICghaW5mby1cdTAwM2VzZWN0aW9uX251bSB8fCBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtIFx1MDAzZSBGV0RMX1NFQ1RJT05fTUFYX05VTSkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdaW52YWxpZCBmdyBzZWN0aW9uIG51bSAldVxcblwiLFxuK1x0XHRcdCAgaW5mby1cdTAwM2VzZWN0aW9uX251bSk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0YmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby1cdTAwM2VzZWN0aW9uX251bSk7XG4rXHRpZiAoYmFzZV9oZHJfbGVuIFx1MDAzZSBsZW4pIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2VkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc3LCBGV19IRFJfVzdfRFlOX0hEUik7XG4gXHRpbmZvLVx1MDAzZWlkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1c3X0lETUVNX1NIQVJFX01PREUpO1xuIFxuQEAgLTQ1NSw5ICs0NzEsMjUgQEAgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVcbiBcdGludCByZXQ7XG4gXHR1MzIgaTtcbiBcbitcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqZndfaGRyKSkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpbmZvLVx1MDAzZXNlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9WMV9XNl9TRUNfTlVNKTtcbitcdGlmICghaW5mby1cdTAwM2VzZWN0aW9uX251bSB8fCBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtIFx1MDAzZSBGV0RMX1NFQ1RJT05fTUFYX05VTSkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdaW52YWxpZCBmdyBzZWN0aW9uIG51bSAldVxcblwiLFxuK1x0XHRcdCAgaW5mby1cdTAwM2VzZWN0aW9uX251bSk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2Vkc3BfY2hlY2tzdW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NiwgRldfSERSX1YxX1c2X0RTUF9DSEtTVU0pO1xuIFx0YmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby1cdTAwM2VzZWN0aW9uX251bSk7XG4rXHRpZiAoYmFzZV9oZHJfbGVuIFx1MDAzZSBsZW4pIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2VkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc3LCBGV19IRFJfVjFfVzdfRFlOX0hEUik7XG4gXHRpbmZvLVx1MDAzZWlkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1YxX1c3X0lETUVNX1NIQVJFX01PREUpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTk6MTQuNjU0OTUyMTQ5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyMTM0MTUxNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRmlybXdhcmUgSGVhZGVyIFBhcnNpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJ3MgbXkgdGFrZS4gSXQncyBmb2N1c2VkIG9uIGJvbHN0ZXJpbmcgdGhlIHNlY3VyaXR5IG9mIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGZpcm13YXJlIHBhcnNpbmcsIHNwZWNpZmljYWxseSBpbiB0aGUgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgZnVuY3Rpb25zIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBmaXJtd2FyZSBoZWFkZXIgaGFuZGxpbmcuXG5cbkVzc2VudGlhbGx5LCB0aGV5J3JlIGltcGxlbWVudGluZyBjaGVja3MgZm9yIHRocmVlIGtleSBjb25kaXRpb25zOiBGaXJzdCwgbWFraW5nIHN1cmUgdGhlIGxlbmd0aCBvZiB0aGUgaW5jb21pbmcgZGF0YSAoYGxlbmApIGlzbid0IHNtYWxsZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZmlybXdhcmUgaGVhZGVyIHN0cnVjdHVyZSBpdHNlbGYgKGBzaXplb2YoKmZ3X2hkcilgKS4gU2Vjb25kLCB2YWxpZGF0aW5nIHRoYXQgdGhlIHNlY3Rpb24gbnVtYmVyIGlzbid0IHplcm8gb3IgZXhjZWVkcyB0aGUgZGVmaW5lZCBtYXhpbXVtIChgRldETF9TRUNUSU9OX01BWF9OVU1gKS4gQW5kIHRoaXJkLCBjaGVja2luZyB0aGF0IHRoZSBiYXNlIGhlYWRlciBsZW5ndGggZG9lc24ndCBleGNlZWQgdGhlIHRvdGFsIGJ1ZmZlciBsZW5ndGguXG5cblRoaXMgaXMgYWxsIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFuZCBxdWl0ZSBzb3VuZC4gVGhlc2UgY2hlY2tzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGR1cmluZyB0aGUgaGVhZGVyIHBhcnNpbmcgcHJvY2Vzcy4gVGhlIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGdvaW5nIHRvIGNhdGNoIHRob3NlIG91dC1vZi1ib3VuZHMgcmVhZHMsIHdoaWNoIGlzIHRoZSBwcmltYXJ5IGNvbmNlcm4gaGVyZS4gSSBkb24ndCBzZWUgYW55IGltbWVkaWF0ZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBiZWluZyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYXMgYSByZXN1bHQgb2YgdGhlc2UgY2hhbmdlcy4gSW4gZmFjdCwgaXQgc2hvdWxkIGVsaW1pbmF0ZSBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBJdCBzdG9wcyByZWFkcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGBmd2AgYnVmZmVyLCB3aGljaCBpcyB2ZXJ5IGxpa2VseSB0byBiZSBhbiBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGlzIGdvb2QgcHJhY3RpY2UuXG5cbk5vdywgSSBkaWQgYSBxdWljayBtZW50YWwgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaXNuJ3QgYW4gaXNzdWUuIFRoZSBgZndgIGJ1ZmZlciwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgaXMgdHlwaWNhbGx5IGhhbmRsZWQgYnkgYHJlcXVlc3RfZmlybXdhcmUoKWAuIFRoaXMgbWVhbnMgaXQncyB1c3VhbGx5IGFsbG9jYXRlZCBhbmQgcG9wdWxhdGVkIGJlZm9yZSBiZWluZyB1c2VkLiBUaGUgY3J1Y2lhbCB0aGluZyBoZXJlIGlzIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCB1cCB0byB0aGUgc3BlY2lmaWVkIGBsZW5gLiBTbyBpZiB0aGUgYGxlbmAgaXMgdW5leHBlY3RlZGx5IHNtYWxsLCByZWFkaW5nIGJleW9uZCBpdCBpcyBjbGVhcmx5IGFuIG91dC1vZi1ib3VuZHMgaXNzdWUuIFRoYXQncyBhIEtBU0FOIHByb2JsZW0sIG5vdCBhIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgaXNzdWUuIFRoZXJlZm9yZSwgS01TQU4gZG9lc24ndCBzZWVtIHJlbGV2YW50IGluIHRoaXMgY2FzZS4gVGhpcyBwYXRjaCBzZWVtcyB0byBiZSBvbiBzb2xpZCBncm91bmQgaW4gaXRzIGN1cnJlbnQgZm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyOCwiT3V0cHV0VG9rZW5zIjoxOTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOToyMy44NjgzNzE2MjNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIGZvciBmaXJtd2FyZSBoZWFkZXJzIGluIGBydHc4OV9md19oZHJfcGFyc2VyX3YwYCBhbmQgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjFgLiBJdCBlbnN1cmVzIHRoYXQgdGhlIGZpcm13YXJlIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvbnRhaW4gdGhlIGhlYWRlciBhbmQgaXRzIHNlY3Rpb25zLCBhbmQgdmFsaWRhdGVzIHRoZSBzZWN0aW9uIG51bWJlci4gV2l0aG91dCB0aGVzZSBjaGVja3MsIHRoZSBjb2RlIGNvdWxkIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBmaXJtd2FyZSBidWZmZXIsIHdoaWNoIGNvbnN0aXR1dGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBmaXJtd2FyZSBidWZmZXIgaXRzZWxmIGlzIHBvcHVsYXRlZCBieSB0aGUgZmlybXdhcmUgbG9hZGluZyBzdWJzeXN0ZW0sIHNvIHJlYWRpbmcgcGFzdCBpdHMgbGVuZ3RoIGlzIGEgc3BhdGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIChPT0IpLCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZXJlZm9yZSwgbm8gS01TQU4tc3BlY2lmaWMgcmlza3MgKGxpa2UgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IG9yIGluZm8tbGVha3MpIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgZmlybXdhcmUgaGVhZGVycyBpbiBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gSXQgZW5zdXJlcyB0aGF0IHRoZSBmaXJtd2FyZSBsZW5ndGggaXMgc3VmZmljaWVudCB0byBjb250YWluIHRoZSBoZWFkZXIgYW5kIGl0cyBzZWN0aW9ucywgYW5kIHZhbGlkYXRlcyB0aGUgc2VjdGlvbiBudW1iZXIuIFdpdGhvdXQgdGhlc2UgY2hlY2tzLCB0aGUgY29kZSBjb3VsZCByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgZmlybXdhcmUgYnVmZmVyLCB3aGljaCBjb25zdGl0dXRlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgZmlybXdhcmUgYnVmZmVyIGl0c2VsZiBpcyBwb3B1bGF0ZWQgYnkgdGhlIGZpcm13YXJlIGxvYWRpbmcgc3Vic3lzdGVtLCBzbyByZWFkaW5nIHBhc3QgaXRzIGxlbmd0aCBpcyBhIHNwYXRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSAoT09CKSwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGVyZWZvcmUsIG5vIEtNU0FOLXNwZWNpZmljIHJpc2tzIChsaWtlIHJlYWRpbmcgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBpbmZvLWxlYWtzKSBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 19:00:26 +0000 UTC FinishedAt: 2026-08-25 19:19:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_8852AU", "RTW89_8851BU", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_8852AU", "RTW89_8851BU", "MAC80211" ], "series_id": "226c4bf7-76bc-4ca6-afd5-2250bf9becf2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_fw_download", "rtw89_mac_partial_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUxQlUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtydHc4OV9tYWNfcGFydGlhbF9pbml0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIGZpcm13YXJlIGhlYWRlcnMgaW4gYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAuIEl0IGVuc3VyZXMgdGhhdCB0aGUgZmlybXdhcmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiB0aGUgaGVhZGVyIGFuZCBpdHMgc2VjdGlvbnMsIGFuZCB2YWxpZGF0ZXMgdGhlIHNlY3Rpb24gbnVtYmVyLiBXaXRob3V0IHRoZXNlIGNoZWNrcywgdGhlIGNvZGUgY291bGQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpcm13YXJlIGJ1ZmZlciwgd2hpY2ggY29uc3RpdHV0ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIGZpcm13YXJlIGJ1ZmZlciBpdHNlbGYgaXMgcG9wdWxhdGVkIGJ5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN1YnN5c3RlbSwgc28gcmVhZGluZyBwYXN0IGl0cyBsZW5ndGggaXMgYSBzcGF0aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgKE9PQiksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlcmVmb3JlLCBubyBLTVNBTi1zcGVjaWZpYyByaXNrcyAobGlrZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3IgaW5mby1sZWFrcykgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciAocnR3ODkpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gd2hlbiBsb2FkaW5nIGZpcm13YXJlLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlciB2aWEgYHJlcXVlc3RfZmlybXdhcmVgIGludGVyY2VwdGlvbiBvciBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwNDBjNmY0MGYxMTUyOWFhMGFmNWRlODg1YzA3MDc3NjcxZDQ1OWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxOToxNzoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IDAwOTljNWMwM2U3YTYuLmIyOTkxYmM5M2Y4NTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuQEAgLTE1Niw4ICYjNDM7MTU2LDI0IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlXG4gXHRpZiAoIWluZm8pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqZndfaGRyKSkge1xuJiM0MztcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpbmZvLVx1MDAzZXNlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9XNl9TRUNfTlVNKTtcbiYjNDM7XHRpZiAoIWluZm8tXHUwMDNlc2VjdGlvbl9udW0gfHwgaW5mby1cdTAwM2VzZWN0aW9uX251bSBcdTAwM2UgRldETF9TRUNUSU9OX01BWF9OVU0pIHtcbiYjNDM7XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O1tFUlJdaW52YWxpZCBmdyBzZWN0aW9uIG51bSAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRiYXNlX2hkcl9sZW4gPSBzdHJ1Y3Rfc2l6ZShmd19oZHIsIHNlY3Rpb25zLCBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtKTtcbiYjNDM7XHRpZiAoYmFzZV9oZHJfbGVuIFx1MDAzZSBsZW4pIHtcbiYjNDM7XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aW5mby1cdTAwM2VkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc3LCBGV19IRFJfVzdfRFlOX0hEUik7XG4gXHRpbmZvLVx1MDAzZWlkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1c3X0lETUVNX1NIQVJFX01PREUpO1xuIFxuQEAgLTQ1NSw5ICYjNDM7NDcxLDI1IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlXG4gXHRpbnQgcmV0O1xuIFx0dTMyIGk7XG4gXG4mIzQzO1x0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCpmd19oZHIpKSB7XG4mIzQzO1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGluZm8tXHUwMDNlc2VjdGlvbl9udW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NiwgRldfSERSX1YxX1c2X1NFQ19OVU0pO1xuJiM0MztcdGlmICghaW5mby1cdTAwM2VzZWN0aW9uX251bSB8fCBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtIFx1MDAzZSBGV0RMX1NFQ1RJT05fTUFYX05VTSkge1xuJiM0MztcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7W0VSUl1pbnZhbGlkIGZ3IHNlY3Rpb24gbnVtICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGluZm8tXHUwMDNlZHNwX2NoZWNrc3VtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTtcbiBcdGJhc2VfaGRyX2xlbiA9IHN0cnVjdF9zaXplKGZ3X2hkciwgc2VjdGlvbnMsIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuJiM0MztcdGlmIChiYXNlX2hkcl9sZW4gXHUwMDNlIGxlbikge1xuJiM0MztcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpbmZvLVx1MDAzZWR5bmFtaWNfaGRyX2VuID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzcsIEZXX0hEUl9WMV9XN19EWU5fSERSKTtcbiBcdGluZm8tXHUwMDNlaWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc3LCBGV19IRFJfVjFfVzdfSURNRU1fU0hBUkVfTU9ERSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUxQlUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtydHc4OV9tYWNfcGFydGlhbF9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzA0MGM2ZjQwZjExNTI5YWEwYWY1ZGU4ODVjMDcwNzc2NzFkNDU5YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDE5OjE3OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCmluZGV4IDAwOTljNWMwM2U3YTYuLmIyOTkxYmM5M2Y4NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMKQEAgLTE1Niw4ICYjNDM7MTU2LDI0IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlCiAJaWYgKCFpbmZvKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAobGVuICZsdDsgc2l6ZW9mKCpmd19oZHIpKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NiwgRldfSERSX1c2X1NFQ19OVU0pOwomIzQzOwlpZiAoIWluZm8tJmd0O3NlY3Rpb25fbnVtIHx8IGluZm8tJmd0O3NlY3Rpb25fbnVtICZndDsgRldETF9TRUNUSU9OX01BWF9OVU0pIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1pbnZhbGlkIGZ3IHNlY3Rpb24gbnVtICV1XG4mIzM0OywKJiM0MzsJCQkgIGluZm8tJmd0O3NlY3Rpb25fbnVtKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJYmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby0mZ3Q7c2VjdGlvbl9udW0pOwomIzQzOwlpZiAoYmFzZV9oZHJfbGVuICZndDsgbGVuKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NywgRldfSERSX1c3X0RZTl9IRFIpOwogCWluZm8tJmd0O2lkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci0mZ3Q7dzcsIEZXX0hEUl9XN19JRE1FTV9TSEFSRV9NT0RFKTsKIApAQCAtNDU1LDkgJiM0Mzs0NzEsMjUgQEAgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGUKIAlpbnQgcmV0OwogCXUzMiBpOwogCiYjNDM7CWlmIChsZW4gJmx0OyBzaXplb2YoKmZ3X2hkcikpIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWluZm8tJmd0O3NlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItJmd0O3c2LCBGV19IRFJfVjFfVzZfU0VDX05VTSk7CiYjNDM7CWlmICghaW5mby0mZ3Q7c2VjdGlvbl9udW0gfHwgaW5mby0mZ3Q7c2VjdGlvbl9udW0gJmd0OyBGV0RMX1NFQ1RJT05fTUFYX05VTSkgewomIzQzOwkJcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcbiYjMzQ7LAomIzQzOwkJCSAgaW5mby0mZ3Q7c2VjdGlvbl9udW0pOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtkc3BfY2hlY2tzdW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci0mZ3Q7dzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTsKIAliYXNlX2hkcl9sZW4gPSBzdHJ1Y3Rfc2l6ZShmd19oZHIsIHNlY3Rpb25zLCBpbmZvLSZndDtzZWN0aW9uX251bSk7CiYjNDM7CWlmIChiYXNlX2hkcl9sZW4gJmd0OyBsZW4pIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWluZm8tJmd0O2R5bmFtaWNfaGRyX2VuID0gbGUzMl9nZXRfYml0cyhmd19oZHItJmd0O3c3LCBGV19IRFJfVjFfVzdfRFlOX0hEUik7CiAJaW5mby0mZ3Q7aWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NywgRldfSERSX1YxX1c3X0lETUVNX1NIQVJFX01PREUpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jYC4gSXQgc2VlbXMgdG8gYmUgYWRkaW5nIGJvdW5kcyBjaGVja3Mgd2l0aGluIHRoZSBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYCBmdW5jdGlvbnMuIFRoZSBwYXRjaCBpcyBjaGVja2luZyBmb3IgYSBmZXcgdGhpbmdzOiBpZiB0aGUgaW5wdXQgbGVuZ3RoIChgbGVuYCkgaXMgbGVzcyB0aGFuIHRoZSBzaXplIG9mIHRoZSBmaXJtd2FyZSBoZWFkZXIgKGBmd19oZHJgKSwgYW5kIGlmIGBpbmZvLSZndDtzZWN0aW9uX251bWAgaXMgdmFsaWQsIHBsdXMgaWYgdGhlIGJhc2UgaGVhZGVyIGxlbmd0aCAoYGJhc2VfaGRyX2xlbmApIGV4Y2VlZHMgdGhlIGlucHV0IGxlbmd0aC4gVGhpcyBpcyBvYnZpb3VzbHkgYSBmaXJtd2FyZSBwYXJzaW5nIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgZ2V0cyBjYWxsZWQgZHVyaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGxpa2VseSB0aGUgYHByb2JlYCBmdW5jdGlvbi4KCk5vdywgbXkgbWluZCBpcyByYWNpbmcuLi4gKmNhbiogdGhpcyBkcml2ZXIsIGBydHc4OWAsIGJlIGZ1enplZD8gSXQmIzM5O3MgYSBSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciwgc28gbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBsaWtlbHkgUENJIG9yIFVTQi4gVGhlIHBhdGNoIG1ha2VzIGl0IGNsZWFyIGl0JiMzOTtzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlci4gU28sIFBDSSBlbXVsYXRpb24gbWlnaHQgYmUgYW4gb3B0aW9uLCBidXQgdGhhdCYjMzk7cyBub3Qgc3RyYWlnaHRmb3J3YXJkLiBSZWFsIGhhcmR3YXJlIGRyaXZlcnMsIHVubGVzcyBVU0Igb3Igd2l0aCBzcGVjaWZpYyBQQ0kgZnV6emluZywgYXJlIGdlbmVyYWxseSBhIHBhaW4gdG8gZnV6ei4KCldhaXQsIHRob3VnaC4uLiBTeXprYWxsZXIgaGFzIGJlZW4gbWFraW5nIHN0cmlkZXMgaW4gVVNCIGZ1enppbmcgKHdpdGggYGR1bW15X2hjZGApLCBhbmQgaGFzIHNvbWUgUENJIHN1cHBvcnQgdG9vLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyB0aGluZyBpcyBVU0IgY29ubmVjdGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgcnR3ODlgIGhhcyBhIFVTQiBpbnRlcmZhY2UuIElmIGl0IGRvZXMsIHRoZW4gZnV6emluZyBiZWNvbWVzIGEgbXVjaCBtb3JlIHJlYWxpc3RpYyBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODA0NTQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0yPW1lbnVjb25maWcgUlRXODlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5Olx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHJ0dzg5LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xOTA9Y29uZmlnIFJUVzg5X0RFQlVHTVNHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTkxOlx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg5IGRlYnVnIG1lc3NhZ2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5Mi1cdGRlcGVuZHMgb24gUlRXODlfQ09SRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xOTk9Y29uZmlnIFJUVzg5X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDA6XHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjAxLVx0ZGVwZW5kcyBvbiBSVFc4OV9DT1JFIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19SVFc4OV9DT1JFKSAmIzQzOz0gcnR3ODlfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQ6cnR3ODlfY29yZS15ICYjNDM7PSBjb3JlLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNS1cdFx0bWFjODAyMTEubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjIzOnJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCKSAmIzQzOz0gcnR3ODlfODg1MWIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToyNjpydHc4OV84ODUxYi1vYmpzIDo9IHJ0dzg4NTFiLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjctXHRcdCAgICBydHc4ODUxYl90YWJsZS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCRSkgJiM0Mzs9IHJ0dzg5Xzg4NTFiZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjMyOnJ0dzg5Xzg4NTFiZS1vYmpzIDo9IHJ0dzg4NTFiZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfUlRXODlfODg1MUJVKSAmIzQzOz0gcnR3ODlfODg1MWJ1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzU6cnR3ODlfODg1MWJ1LW9ianMgOj0gcnR3ODg1MWJ1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19SVFc4OV84ODUyQSkgJiM0Mzs9IHJ0dzg5Xzg4NTJhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Mzg6cnR3ODlfODg1MmEtb2JqcyA6PSBydHc4ODUyYS5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTM5LVx0XHQgICAgcnR3ODg1MmFfdGFibGUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19SVFc4OV84ODUyQUUpICYjNDM7PSBydHc4OV84ODUyYWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0NDpydHc4OV84ODUyYWUtb2JqcyA6PSBydHc4ODUyYWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJBVSkgJiM0Mzs9IHJ0dzg5Xzg4NTJhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQ3OnJ0dzg5Xzg4NTJhdS1vYmpzIDo9IHJ0dzg4NTJhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJfQ09NTU9OKSAmIzQzOz0gcnR3ODlfODg1MmJfY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTA6cnR3ODlfODg1MmJfY29tbW9uLW9ianMgOj0gcnR3ODg1MmJfY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19SVFc4OV84ODUyQikgJiM0Mzs9IHJ0dzg5Xzg4NTJiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTM6cnR3ODlfODg1MmItb2JqcyA6PSBydHc4ODUyYi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTU0LVx0XHQgICAgcnR3ODg1MmJfdGFibGUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19SVFc4OV84ODUyQkUpICYjNDM7PSBydHc4OV84ODUyYmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo1OTpydHc4OV84ODUyYmUtb2JqcyA6PSBydHc4ODUyYmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS02MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCVSkgJiM0Mzs9IHJ0dzg5Xzg4NTJidS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjYyOnJ0dzg5Xzg4NTJidS1vYmpzIDo9IHJ0dzg4NTJidS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfUlRXODlfODg1MkJUKSAmIzQzOz0gcnR3ODlfODg1MmJ0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjU6cnR3ODlfODg1MmJ0LW9ianMgOj0gcnR3ODg1MmJ0Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjYtXHRcdCAgICBydHc4ODUyYnRfcmZrLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJURSkgJiM0Mzs9IHJ0dzg5Xzg4NTJidGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3MDpydHc4OV84ODUyYnRlLW9ianMgOj0gcnR3ODg1MmJ0ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfUlRXODlfODg1MkMpICYjNDM7PSBydHc4OV84ODUyYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjczOnJ0dzg5Xzg4NTJjLW9ianMgOj0gcnR3ODg1MmMubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03NC1cdFx0ICAgIHJ0dzg4NTJjX3RhYmxlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3ODpvYmotJChDT05GSUdfUlRXODlfODg1MkNFKSAmIzQzOz0gcnR3ODlfODg1MmNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Nzk6cnR3ODlfODg1MmNlLW9ianMgOj0gcnR3ODg1MmNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19SVFc4OV84ODUyQ1UpICYjNDM7PSBydHc4OV84ODUyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4MjpydHc4OV84ODUyY3Utb2JqcyA6PSBydHc4ODUyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODQ6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBKSAmIzQzOz0gcnR3ODlfODkyMmEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NTpydHc4OV84OTIyYS1vYmpzIDo9IHJ0dzg5MjJhLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODY6XHRcdCAgICBydHc4OTIyYV9yZmsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODg6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBRSkgJiM0Mzs9IHJ0dzg5Xzg5MjJhZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg5OnJ0dzg5Xzg5MjJhZS1vYmpzIDo9IHJ0dzg5MjJhZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5MTpvYmotJChDT05GSUdfUlRXODlfODkyMkFVKSAmIzQzOz0gcnR3ODlfODkyMmF1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTI6cnR3ODlfODkyMmF1LW9ianMgOj0gcnR3ODkyMmF1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk0Om9iai0kKENPTkZJR19SVFc4OV84OTIyRCkgJiM0Mzs9IHJ0dzg5Xzg5MjJkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTU6cnR3ODlfODkyMmQtb2JqcyA6PSBydHc4OTIyZC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk2Olx0XHQgICAgcnR3ODkyMmRfcmZrLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19SVFc4OV84OTIyREUpICYjNDM7PSBydHc4OV84OTIyZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5OTpydHc4OV84OTIyZGUtb2JqcyA6PSBydHc4OTIyZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwMTpydHc4OV9jb3JlLSQoQ09ORklHX1JUVzg5X0RFQlVHKSAmIzQzOz0gZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDI6cnR3ODlfY29yZS0kKENPTkZJR19SVFc4OV9MRURTKSAmIzQzOz0gbGVkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTAzOnJ0dzg5X2NvcmUtJChDT05GSUdfUlRXODlfTEVEU19NQykgJiM0Mzs9IGxlZF9tYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA1Om9iai0kKENPTkZJR19SVFc4OV9QQ0kpICYjNDM7PSBydHc4OV9wY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDY6cnR3ODlfcGNpLXkgOj0gcGNpLm8gcGNpX2JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgJiM0Mzs9IHJ0dzg5X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwOTpydHc4OV91c2IteSA6PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMTpzdGF0aWMgY29uc3QgZ3VpZF90IHJ0dzg5X2d1aWQgPSBHVUlEX0lOSVQoMHhEMkE4QzNFOCwgMHg0QjY5LCAweDRGMDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMi1cdFx0XHRcdFx0ICAgMHg4MiwgMHhCRCwgMHhGRSwgMHg4Nixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE1OnN0YXRpYyB1MzIgcnR3ODlfYWNwaV90cmF2ZXJzYWxfb2JqZWN0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2LVx0XHRcdFx0ICAgICAgIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosIHU4ICpwb3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzItXHRcdGlmICh1bmxpa2VseShvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCA9PSAwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzM6XHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0LVx0XHRcdFx0ICAgIFwmIzM0OyVzOiBpbnZhbGlkIGJ1ZmZlciB0eXBlXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDQtXHRcdGlmICh1bmxpa2VseShvYmotXHUwMDNlcGFja2FnZS5jb3VudCA9PSAwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDU6XHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ2LVx0XHRcdFx0ICAgIFwmIzM0OyVzOiBpbnZhbGlkIHBhY2thZ2UgdHlwZVxcblwmIzM0OywgX19mdW5jX18pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTQ6XHRcdFx0c3ViX2xlbiA9IHJ0dzg5X2FjcGlfdHJhdmVyc2FsX29iamVjdChydHdkZXYsIGVsbSwgdG1wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU1LVx0XHRcdGlmICh1bmxpa2VseShzdWJfbGVuID09IDApKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYxLVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYyOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogdW5oYW5kbGVkIHR5cGU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjMtXHRcdFx0ICAgIF9fZnVuY19fLCBvYmotXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzpzdGF0aWMgdTMyIHJ0dzg5X2FjcGlfY2FsY3VsYXRlX29iamVjdF9sZW5ndGgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzQtXHRcdFx0XHRcdCAgICAgIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3NjpcdHJldHVybiBydHc4OV9hY3BpX3RyYXZlcnNhbF9vYmplY3QocnR3ZGV2LCBvYmosIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3OTpzdGF0aWMgc3RydWN0IHJ0dzg5X2FjcGlfZGF0YSAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo4MDpydHc4OV9hY3BpX2V2YWx1YXRlX21ldGhvZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IGNoYXIgKm1ldGhvZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTgxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTgyLVx0c3RydWN0IGFjcGlfYnVmZmVyIGJ1ZiA9IHtBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo4MzpcdHN0cnVjdCBydHc4OV9hY3BpX2RhdGEgKmRhdGEgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtODQtXHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtOTAtXHRpZiAoIXJvb3QpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjkxOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtOTItXHRcdFx0ICAgIFwmIzM0O2FjcGkgKCVzKTogZmFpbGVkIHRvIGdldCByb290XFxuXCYjMzQ7LCBtZXRob2QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTk3LVx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo5ODpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTk5LVx0XHRcdCAgICBcJiMzNDthY3BpICglcyk6IGZhaWxlZCB0byBnZXQgaGFuZGxlXFxuXCYjMzQ7LCBtZXRob2QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEwNC1cdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTA1Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTA2LVx0XHRcdCAgICBcJiMzNDthY3BpICglcyk6IGZhaWxlZCB0byBldmFsdWF0ZSBvYmplY3RcXG5cJiMzNDssIG1ldGhvZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTEwLVx0b2JqID0gYnVmLnBvaW50ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMTE6XHRsZW4gPSBydHc4OV9hY3BpX2NhbGN1bGF0ZV9vYmplY3RfbGVuZ3RoKHJ0d2Rldiwgb2JqKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTExMi1cdGlmICh1bmxpa2VseShsZW4gPT0gMCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjExMzpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTExNC1cdFx0XHQgICAgXCYjMzQ7YWNwaSAoJXMpOiBmYWlsZWQgdG8gdHJhdmVyc2FsIG9iaiBsZW5cXG5cJiMzNDssIG1ldGhvZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTIyLVx0ZGF0YS1cdTAwM2VsZW4gPSBsZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMjM6XHRydHc4OV9hY3BpX3RyYXZlcnNhbF9vYmplY3QocnR3ZGV2LCBvYmosIGRhdGEtXHUwMDNlYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEyNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0xMzA9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMzE6aW50IHJ0dzg5X2FjcGlfZHNtX2dldF92YWx1ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzItXHRcdFx0ICAgICB1OCAqdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTM0LVx0aWYgKG9iai1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMzU6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzYtXHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBpbnRlZ2VyIGJ1dCB0eXBlOiAlZFxcblwmIzM0Oywgb2JqLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE0NDpzdGF0aWMgYm9vbCBjaGtfYWNwaV9wb2xpY3lfNmdoel9zaWcoY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHogKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTE1MT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE1MjppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE1My1cdFx0XHRcdCAgIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNTQ6XHRcdFx0XHQgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoeiAqKnBvbGljeV82Z2h6KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTU1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE1NjpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV82Z2h6ICpwdHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNTctXHR1MzIgZXhwZWN0X2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjAtXHRpZiAob2JqLVx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTYxOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTYyLVx0XHRcdCAgICBcJiMzNDthY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcblwmIzM0Oywgb2JqLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2Ny1cdGlmIChsZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTY4Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2OS1cdFx0XHQgICAgX19mdW5jX18sIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTc0LVx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTc1Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTc2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xODAtXHRpZiAobGVuIFx1MDAzYyBleHBlY3RfbGVuKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxODE6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFwmIzM0OyVzOiBleHBlY3QgJXUgYnV0IGxlbmd0aDogJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xODItXHRcdFx0ICAgIF9fZnVuY19fLCBleHBlY3RfbGVuLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE5MDpcdHJ0dzg5X2hleF9kdW1wKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFwmIzM0O3BvbGljeV82Z2h6OiBcJiMzNDssICpwb2xpY3lfNmdoeixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE5MS1cdFx0ICAgICAgIGV4cGVjdF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE5NTpzdGF0aWMgYm9vbCBjaGtfYWNwaV9wb2xpY3lfNmdoel9zcF9zaWcoY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHpfc3AgKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xOTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTIwMz1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIwNDppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6X3NwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIwNS1cdFx0XHRcdCAgICAgIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMDY6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel9zcCAqKnBvbGljeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIwNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMDg6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel9zcCAqcHRyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjA5LVx0dTMyIGJ1Zl9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjExLVx0aWYgKG9iai1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIxMjpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxMy1cdFx0XHQgICAgXCYjMzQ7YWNwaTogZXhwZWN0IGJ1ZmZlciBidXQgdHlwZTogJWRcXG5cJiMzNDssIG9iai1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTgtXHRpZiAoYnVmX2xlbiBcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMTk6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFwmIzM0OyVzOiBpbnZhbGlkIGJ1ZmZlciBsZW5ndGg6ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjIwLVx0XHRcdCAgICBfX2Z1bmNfXywgYnVmX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjI1LVx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zcF9zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjI2Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjI3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMzQ6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDtwb2xpY3lfNmdoel9zcDogXCYjMzQ7LCAqcG9saWN5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjM1LVx0XHQgICAgICAgc2l6ZW9mKCpwdHIpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMzk6c3RhdGljIGJvb2wgY2hrX2FjcGlfcG9saWN5XzZnaHpfdmxwX3NpZyhjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel92bHAgKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTI0Nz1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI0ODppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6X3ZscChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNDktXHRcdFx0XHQgICAgICAgdW5pb24gYWNwaV9vYmplY3QgKm9iaixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI1MDpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel92bHAgKipwb2xpY3kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjUyOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHpfdmxwICpwdHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTMtXHR1MzIgYnVmX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTUtXHRpZiAob2JqLVx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjU2Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU3LVx0XHRcdCAgICBcJiMzNDthY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcblwmIzM0Oywgb2JqLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2Mi1cdGlmIChidWZfbGVuIFx1MDAzYyBzaXplb2YoKnB0cikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI2MzpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXCYjMzQ7JXM6IGludmFsaWQgYnVmZmVyIGxlbmd0aDogJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjQtXHRcdFx0ICAgIF9fZnVuY19fLCBidWZfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjktXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3ZscF9zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjcwOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjcxLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNzg6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDtwb2xpY3lfNmdoel92bHA6IFwmIzM0OywgKnBvbGljeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI3OS1cdFx0ICAgICAgIHNpemVvZigqcHRyKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjgzOnN0YXRpYyBib29sIGNoa19hY3BpX3BvbGljeV90YXNfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV90YXMgKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI5MTpzdGF0aWMgaW50IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfdGFzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Mi1cdFx0XHRcdFx0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTM6XHRcdFx0XHRcdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfdGFzICoqcG9saWN5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI5NTpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV90YXMgKnB0cjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Ni1cdHUzMiBidWZfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5OC1cdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfQlVGRkVSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTk6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDAtXHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxuXCYjMzQ7LCBvYmotXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzA1LVx0aWYgKGJ1Zl9sZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzA2Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMwNy1cdFx0XHQgICAgX19mdW5jX18sIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMxMi1cdGlmICghY2hrX2FjcGlfcG9saWN5X3Rhc19zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzEzOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzE0LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMjE6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDtwb2xpY3lfdGFzOiBcJiMzNDssICpwb2xpY3ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMjItXHRcdCAgICAgICBzaXplb2YoKnB0cikpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTMyNj1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMyNzpib29sIGNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV9yZWdfcnVsZXMgKnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTMzNT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMzNjppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV9yZWdfcnVsZXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzM3LVx0XHRcdFx0XHR1bmlvbiBhY3BpX29iamVjdCAqb2JqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzM4Olx0XHRcdFx0XHRzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfcmVnX3J1bGVzICoqcG9saWN5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzM5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0MDpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV9yZWdfcnVsZXMgKnB0cjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0MS1cdHUzMiBidWZfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0My1cdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfQlVGRkVSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNDQ6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNDUtXHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxuXCYjMzQ7LCBvYmotXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzUwLVx0aWYgKGJ1Zl9sZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzUxOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1Mi1cdFx0XHQgICAgX19mdW5jX18sIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1Ny1cdGlmICghY2hrX2FjcGlfcG9saWN5X3JlZ19ydWxlc19zaWcocHRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzU4Olx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogYmFkIHNpZ25hdHVyZVxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzU5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNjY6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDtwb2xpY3lfcmVnX3J1bGVzOiBcJiMzNDssICpwb2xpY3ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNjctXHRcdCAgICAgICBzaXplb2YoKnB0cikpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM3MTppbnQgcnR3ODlfYWNwaV9ldmFsdWF0ZV9kc20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzcyOlx0XHRcdCAgICBlbnVtIHJ0dzg5X2FjcGlfZHNtX2Z1bmMgZnVuYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM3MzpcdFx0XHQgICAgc3RydWN0IHJ0dzg5X2FjcGlfZHNtX3Jlc3VsdCAqcmVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNzg6XHRvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShBQ1BJX0hBTkRMRShydHdkZXYtXHUwMDNlZGV2KSwgXHUwMDI2cnR3ODlfZ3VpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM3OS1cdFx0XHRcdDAsIGZ1bmMsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzgwLVx0aWYgKCFvYmopIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM4MTpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM4Mi1cdFx0XHQgICAgXCYjMzQ7YWNwaSBkc20gZmFpbCB0byBldmFsdWF0ZSBmdW5jOiAlZFxcblwmIzM0OywgZnVuYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg2LVx0aWYgKGZ1bmMgPT0gUlRXODlfQUNQSV9EU01fRlVOQ182R19CUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM4NzpcdFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6KHJ0d2Rldiwgb2JqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg4LVx0XHRcdFx0XHRcdCAgICAgXHUwMDI2cmVzLVx1MDAzZXUucG9saWN5XzZnaHopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg5LVx0ZWxzZSBpZiAoZnVuYyA9PSBSVFc4OV9BQ1BJX0RTTV9GVU5DXzZHSFpfU1BfU1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzkwOlx0XHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfc3AocnR3ZGV2LCBvYmosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTEtXHRcdFx0XHRcdFx0XHRcdTAwMjZyZXMtXHUwMDNldS5wb2xpY3lfNmdoel9zcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTItXHRlbHNlIGlmIChmdW5jID09IFJUVzg5X0FDUElfRFNNX0ZVTkNfNkdIWl9WTFBfU1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzkzOlx0XHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfdmxwKHJ0d2Rldiwgb2JqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzk0LVx0XHRcdFx0XHRcdFx0IFx1MDAyNnJlcy1cdTAwM2V1LnBvbGljeV82Z2h6X3ZscCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTUtXHRlbHNlIGlmIChmdW5jID09IFJUVzg5X0FDUElfRFNNX0ZVTkNfVEFTX0VOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mzk2Olx0XHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5X3RhcyhydHdkZXYsIG9iaiwgXHUwMDI2cmVzLVx1MDAzZXUucG9saWN5X3Rhcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTctXHRlbHNlIGlmIChmdW5jID09IFJUVzg5X0FDUElfRFNNX0ZVTkNfUkVHX1JVTEVTX0VOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mzk4Olx0XHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5X3JlZ19ydWxlcyhydHdkZXYsIG9iaixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM5OS1cdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVzLVx1MDAzZXUucG9saWN5X3JlZ19ydWxlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MDAtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0MDE6XHRcdHJldCA9IHJ0dzg5X2FjcGlfZHNtX2dldF92YWx1ZShydHdkZXYsIG9iaiwgXHUwMDI2cmVzLVx1MDAzZXUudmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDAyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQwNzppbnQgcnR3ODlfYWNwaV9ldmFsdWF0ZV9ydGFnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQwODpcdFx0XHQgICAgIHN0cnVjdCBydHc4OV9hY3BpX3J0YWdfcmVzdWx0ICpyZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDEwOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZGF0YSAqZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQxMS1cdHUzMiBidWZfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQxNDpcdGRhdGEgPSBydHc4OV9hY3BpX2V2YWx1YXRlX21ldGhvZChydHdkZXYsIFwmIzM0O1JUQUdcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDE1LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQxOS1cdGlmIChidWZfbGVuICE9IHNpemVvZigqcmVzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDIwOlx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDslczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQyMS1cdFx0XHQgICAgX19mdW5jX18sIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQyNjpcdCpyZXMgPSAqKHN0cnVjdCBydHc4OV9hY3BpX3J0YWdfcmVzdWx0ICopZGF0YS1cdTAwM2VidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0Mjg6XHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcJiMzNDthbnRlbm5hX2dhaW46IFwmIzM0OywgcmVzLCBzaXplb2YoKnJlcykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQzNTplbnVtIHJ0dzg5X2FjcGlfc2FyX3N1YmJhbmQgcnR3ODlfYWNwaV9zYXJfZ2V0X3N1YmJhbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDM2LVx0XHRcdFx0XHRcdCAgICAgICB1MzIgY2VudGVyX2ZyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDM5LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQ0MDpcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ0MS1cdFx0XHQgICAgXCYjMzQ7Y2VudGVyIGZyZXEgJXUgdG8gQUNQSSBTQVIgc3ViYmFuZCBpcyB1bmhhbmRsZWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDY2LVx0ICogYW5kIFJUVzg5X0FDUElfU0FSXzZHSFpfU1VCQkFORF84LCBzbyBkaXJlY3RseSBkZXNjcmliZSBpdCB3aXRoXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0Njc6XHQgKiBzdHJ1Y3QgcnR3ODlfNmdoel9zcGFuLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDY4LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDc1OmVudW0gcnR3ODlfYmFuZCBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kX3RvX2JhbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDc2Olx0XHRcdFx0XHQgICAgICAgZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00Nzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ3OS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0ODA6XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00ODEtXHRcdFx0ICAgIFwmIzM0O0FDUEkgU0FSIHN1YmJhbmQgJXUgdG8gYmFuZCBpcyB1bmhhbmRsZWRcXG5cJiMzNDssIHN1YmJhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjUwODpzdGF0aWMgdTggcnR3ODlfYWNwaV9zYXJfcmZwYXRoX3RvX2hwX2FudGlkeChlbnVtIHJ0dzg5X3JmX3BhdGggcmZwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTA5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1MTk6c3RhdGljIHU4IHJ0dzg5X2FjcGlfc2FyX3JmcGF0aF90b19ydF9hbnRpZHgoZW51bSBydHc4OV9yZl9wYXRoIHJmcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTMwOnN0YXRpYyBzMTYgcnR3ODlfYWNwaV9zYXJfbm9ybWFsaXplX2hwX3ZhbCh1OCB2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NDQ6c3RhdGljIHMxNiBydHc4OV9hY3BpX3Nhcl9ub3JtYWxpemVfcnRfdmFsKHU4IHYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTU1Nj1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU1Nzp2b2lkIHJ0dzg5X2FjcGlfc2FyX2xvYWRfc3RkX2xlZ2FjeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NTg6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfc2FyX3JlY29nbml0aW9uICpyZWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NTktXHRcdFx0XHQgICAgY29uc3Qgdm9pZCAqY29udGVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU2MDpcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU2MjpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zdGRfbGVnYWN5ICpwdHIgPSBjb250ZW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTYzOlx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NjQ6XHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU2NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz01Nzk9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODA6dm9pZCBydHc4OV9hY3BpX3Nhcl9sb2FkX3N0ZF9oYXNfNmdoeihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODE6XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfcmVjb2duaXRpb24gKnJlYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU4Mi1cdFx0XHRcdCAgICAgIGNvbnN0IHZvaWQgKmNvbnRlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODM6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTg0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU4NTpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zdGRfaGFzXzZnaHogKnB0ciA9IGNvbnRlbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODY6XHRlbnVtIHJ0dzg5X2FjcGlfc2FyX3N1YmJhbmQgc3ViYmFuZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU4NzpcdGVudW0gcnR3ODlfcmZfcGF0aCBwYXRoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTYwMD1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYwMTp2b2lkIHJ0dzg5X2FjcGlfc2FyX2xvYWRfc21sX2xlZ2FjeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDI6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfc2FyX3JlY29nbml0aW9uICpyZWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02MDMtXHRcdFx0XHQgICAgY29uc3Qgdm9pZCAqY29udGVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYwNDpcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjA1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYwNjpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zbWxfbGVnYWN5ICpwdHIgPSBjb250ZW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjA3Olx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDg6XHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz02MjM9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MjQ6dm9pZCBydHc4OV9hY3BpX3Nhcl9sb2FkX3NtbF9oYXNfNmdoeihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MjU6XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfcmVjb2duaXRpb24gKnJlYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYyNi1cdFx0XHRcdCAgICAgIGNvbnN0IHZvaWQgKmNvbnRlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2Mjc6XHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYyOTpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zbWxfaGFzXzZnaHogKnB0ciA9IGNvbnRlbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MzA6XHRlbnVtIHJ0dzg5X2FjcGlfc2FyX3N1YmJhbmQgc3ViYmFuZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYzMTpcdGVudW0gcnR3ODlfcmZfcGF0aCBwYXRoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjMyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY0NDpzdGF0aWMgczE2IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ub3JtYWxpemVfZGVsdGEoczggZGVsdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02NDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY1MzpzdGF0aWMgZW51bSBydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9ocFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjU0OnJ0dzg5X2FjcGlfZ2VvX3Nhcl9yZWdkX2NvbnZlcnRfaHBfaWR4KGVudW0gcnR3ODlfcmVndWxhdGlvbl90eXBlIHJlZ2QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02NTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY3NTpzdGF0aWMgZW51bSBydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Njc2OnJ0dzg5X2FjcGlfZ2VvX3Nhcl9yZWdkX2NvbnZlcnRfcnRfaWR4KGVudW0gcnR3ODlfcmVndWxhdGlvbl90eXBlIHJlZ2QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02Nzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTcwMD1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwMTp2b2lkIHJ0dzg5X2FjcGlfZ2VvX3Nhcl9sb2FkX2J5X2hwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwMjpcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX2dlb19zYXJfaHBfdmFsICpwdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MDM6XHRcdFx0XHQgICBlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aCwgczE2ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzA1Olx0dTggYW50aWR4ID0gcnR3ODlfYWNwaV9zYXJfcmZwYXRoX3RvX2hwX2FudGlkeChwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwNjpcdHMxNiBkZWx0YSA9IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ub3JtYWxpemVfZGVsdGEocHRyLVx1MDAzZWRlbHRhW2FudGlkeF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzA3Olx0czE2IG1heCA9IHJ0dzg5X2FjcGlfc2FyX25vcm1hbGl6ZV9ocF92YWwocHRyLVx1MDAzZW1heCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9NzEyPXN0YXRpY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzEzOnZvaWQgcnR3ODlfYWNwaV9nZW9fc2FyX2xvYWRfYnlfcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzE0Olx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ydF92YWwgKnB0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTcxNS1cdFx0XHRcdCAgIHMxNiAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcxNzpcdHMxNiBkZWx0YSA9IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ub3JtYWxpemVfZGVsdGEocHRyLVx1MDAzZWRlbHRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcxODpcdHMxNiBtYXggPSBydHc4OV9hY3BpX3Nhcl9ub3JtYWxpemVfcnRfdmFsKHB0ci1cdTAwM2VtYXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzE5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTcyMz1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcyNDp2b2lkIHJ0dzg5X2FjcGlfZ2VvX3Nhcl9sb2FkX2hwX2xlZ2FjeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MjUtXHRcdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqY29udGVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcyNjpcdFx0XHRcdCAgICAgICBlbnVtIHJ0dzg5X3JlZ3VsYXRpb25fdHlwZSByZWdkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzI3Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBydHc4OV9zYXJfZW50cnlfZnJvbV9hY3BpICplbnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03Mjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzI5Olx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ocF9sZWdhY3kgKnB0ciA9IGNvbnRlbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzA6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9nZW9fc2FyX2hwX2xlZ2FjeV9lbnRyeSAqcHRyX2VudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMTpcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX2dlb19zYXJfaHBfdmFsICpwdHJfZW50X3ZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMjpcdGVudW0gcnR3ODlfYWNwaV9nZW9fc2FyX3JlZ2RfaHAgZ2VvX2lkeCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzM6XHRcdHJ0dzg5X2FjcGlfZ2VvX3Nhcl9yZWdkX2NvbnZlcnRfaHBfaWR4KHJlZ2QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzM0Olx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzU6XHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczNjpcdGVudW0gcnR3ODlfYmFuZCBiYW5kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzM3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTc0MC1cdGZvciAoc3ViYmFuZCA9IDA7IHN1YmJhbmQgXHUwMDNjIE5VTV9PRl9SVFc4OV9BQ1BJX1NBUl9TVUJCQU5EOyBzdWJiYW5kJiM0MzsmIzQzOykge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk0NzkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBydHc4OSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBydHc4OWAgZHJpdmVyLiBTZWVtcyBsaWtlIGl0JiMzOTtzIGEgUENJIGFuZCBVU0IgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBvcGVucyB1cCBwb3NzaWJpbGl0aWVzLiBJIHNlZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBjb25maXJtcyB0aGlzOiBgb2JqLSQoQ09ORklHX1JUVzg5X1BDSSkgJiM0Mzs9IHJ0dzg5X3BjaS5vYCBhbmQgYG9iai0kKENPTkZJR19SVFc4OV9VU0IpICYjNDM7PSBydHc4OV91c2Iub2AuIFRoZSBVU0Igc3VwcG9ydCBpcyBrZXkgaGVyZSwgYmVjYXVzZSB0aGF0IG1lYW5zIEkgY2FuIHByb2JhYmx5IGZ1enogaXQgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgZm9yIFVTQi1zcGVjaWZpYyBmdXp6aW5nLCB3aGljaCBpcyBhIGNvbW1vbiBhcHByb2FjaC4KCkJ1dCBoYW5nIG9uLCB0aGVyZSYjMzk7cyBhIHBhdGNoIG1vZGlmeWluZyBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYCBpbiBgZncuY2AuIFRoYXQgc2NyZWFtcyBmaXJtd2FyZSBwYXJzaW5nIHRvIG1lLiBBbmQgZmlybXdhcmUsIHRoYXQgdXN1YWxseSBpbnZvbHZlcyBgcmVxdWVzdF9maXJtd2FyZSgpYC4gTm93LCBjYW4gc3l6a2FsbGVyIGhhbmRsZSBmdXp6aW5nIGZpcm13YXJlIGxvYWRlZCB0aGlzIHdheT8gWWVhaCwgaXQmIzM5O3MgZGVmaW5pdGVseSBnb3Qgc3VwcG9ydCBmb3IgZnV6emluZyBgcmVxdWVzdF9maXJtd2FyZWAsIGVpdGhlciBieSBpbnRlcmNlcHRpbmcgdGhlIGNhbGxzIG9yLCBldmVuIGJldHRlciwgYnkgcHJvdmlkaW5nIGNyYWZ0ZWQgZmlybXdhcmUgZmlsZXMgZGlyZWN0bHkuIFRoaXMgbWFrZXMgaXQgcmVhbGx5IGludGVyZXN0aW5nLgoKUmlnaHQsIHNvIHN5emthbGxlciAqZG9lcyogZnV6eiBmaXJtd2FyZS4gVGhhdCYjMzk7cyBhIGh1Z2Ugd2luLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCBpZiBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgaXMgZXZlbiByZWFjaGFibGUuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZmlybXdhcmUgcGFyc2luZyBjb2RlIGlzIGFjdHVhbGx5IGEgdmFsaWQgZnV6emluZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfZndfaGRyX3BhcnNlcl92MCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDY9aW50IHJ0dzg5X2Z3X2NoZWNrX3JkeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndkbF9jaGVja190eXBlIHR5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNDA6c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE0MS1cdFx0XHRcdCAgc3RydWN0IHJ0dzg5X2Z3X2Jpbl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz01NzE9c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTg0LVx0Y2FzZSAwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjU4NTpcdFx0cmV0dXJuIHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjAocnR3ZGV2LCBmdywgbGVuLCBpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01ODYtXHRjYXNlIDE6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0NTIKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIENhbGwgQ2hhaW4gb2YgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBydHc4OV9md19oZHJfcGFyc2VyYC4gVGhlIGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IGFuZCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGBydHc4OWAgZHJpdmVyLiBTbywgSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluIHVwd2FyZHMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgZnVuY3Rpb24gY2FsbCBvcmlnaW5hdGVzIGFuZCB3aGF0IGNvbnRleHR1YWwgZGF0YSB0aGUgZnVuY3Rpb24gdXNlcy4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBkZWJ1Z2dpbmcgYXBwcm9hY2ggd2hlbiBkZWFsaW5nIHdpdGggZmlybXdhcmUgcGFyc2luZywgZ2l2ZW4gSSYjMzk7bGwgd2FudCB0byBhc3Nlc3MgdGhlIGludGVncml0eSBvZiB0aGUgcGFyc2luZyBwcm9jZXNzIGFuZCB0aGUgZGF0YSB0aGF0IGdldHMgcGFzc2VkIGludG8gaXQuIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyBpcyBjcnVjaWFsLiBMZXQmIzM5O3Mgc2VlIGhvdyBkZWVwIHRoaXMgcmFiYml0IGhvbGUgZ29lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9md19oZHJfcGFyc2VyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTEwNj1pbnQgcnR3ODlfZndfY2hlY2tfcmR5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md2RsX2NoZWNrX3R5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE0MDpzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCB1OCAqZncsIHUzMiBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTQxLVx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTQyMD1zdGF0aWMgaW50IF9fcGFyc2Vfc2VjdXJpdHlfc2VjdGlvbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTQ1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo0NTk6c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTQ2MC1cdFx0XHRcdCAgc3RydWN0IHJ0dzg5X2Z3X2Jpbl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6NTcxOnN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTcyLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTg0LVx0Y2FzZSAwOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjU4NTpcdFx0cmV0dXJuIHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjAocnR3ZGV2LCBmdywgbGVuLCBpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01ODYtXHRjYXNlIDE6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6NTg3Olx0XHRyZXR1cm4gcnR3ODlfZndfaGRyX3BhcnNlcl92MShydHdkZXYsIGZ3LCBsZW4sIGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTU4OC1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE5ODk9c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxOTk2Olx0cmV0ID0gcnR3ODlfZndfaGRyX3BhcnNlcihydHdkZXYsIGZ3X3N1aXQsIFx1MDAyNmluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5OTctXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdHJhY2luZyBgcnR3ODlfZndfZG93bmxvYWRfc3VpdGA6CgoqKlRyYWNpbmcgcnR3ODlfZndfZG93bmxvYWRfc3VpdCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgZGlzc2VjdGluZyBgcnR3ODlfZndfZG93bmxvYWRfc3VpdGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCYjMzk7cyBiZWluZyBhY2NvbXBsaXNoZWQgaGVyZSDigJMgd2hhdCYjMzk7cyB0aGUgYnJvYWRlciBjb250ZXh0PyBJcyBpdCBsb2FkaW5nIGZpcm13YXJlIGZvciBhIHNwZWNpZmljIFJlYWx0ZWsgd2lyZWxlc3MgY2hpcD8gSXMgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIG9yIHNvbWV0aGluZyB0cmlnZ2VyZWQgbGF0ZXIsIHBlcmhhcHMgZHVyaW5nIGRldmljZSByZXN1bWU/IFdlIG5lZWQgdG8ga25vdyB3aGVyZSBpdCBzaXRzIGluIHRoZSBsYXJnZXIgc2NoZW1lIG9mIHRoaW5ncyB0byB1bmRlcnN0YW5kIGl0cyBzaWduaWZpY2FuY2UuCgpNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uJiMzOTtzIGRlY2xhcmF0aW9uIGFuZCBoZWFkZXIgZmlsZXMuIExvb2tpbmcgYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSB3aWxsIGdpdmUgdXMgY2x1ZXMgYWJvdXQgcGFyYW1ldGVycywgYW5kIGxpa2VseSwgd2hhdCBpdCYjMzk7cyBleHBlY3RpbmcgdG8gZG8uIFNlZWluZyB0aGUgcmV0dXJuIHZhbHVlIHR5cGUgY291bGQgdGVsbCBtZSB3aGV0aGVyIGl0JiMzOTtzIGEgc3VjY2Vzcy9mYWlsdXJlIGluZGljYXRvciBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkLiBUaGUgaGVhZGVycyB3aWxsIHJldmVhbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlcyBvciBzdHJ1Y3R1cmVzLCB0aGUgZGF0YSBpdCBjb25zdW1lcywgYW5kIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGl0IHBvdGVudGlhbGx5IGludGVyYWN0cyB3aXRoLgoKTmV4dCwgSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBmdW5jdGlvbiBpcyAqdXNlZCouIFdoZXJlIGlzIGBydHc4OV9md19kb3dubG9hZF9zdWl0YCBjYWxsZWQgZnJvbT8gQnkgdHJhY2tpbmcgZG93biB0aGUgY2FsbGVycywgSSYjMzk7bGwgZ2V0IHRoZSBjcml0aWNhbCBpbnNpZ2h0IGludG8gdGhlIHRyaWdnZXIgcG9pbnRzIGZvciB0aGUgZmlybXdhcmUgZG93bmxvYWQuIFRoaXMgd2lsbCBlc3RhYmxpc2ggdGhlIGZsb3cgb2YgZXhlY3V0aW9uLCBhbmQgZ2l2ZSBtZSBjbHVlcyBhcyB0byB0aGUgaW50ZW50IG9mIHRoZSBkZXNpZ25lcnMuIEFyZSB0aGVyZSBhbnkgZXJyb3IgY2hlY2tzIGFyb3VuZCB0aGUgY2FsbHM/IEhhbmRsaW5nIG9mIHBvdGVudGlhbCBmYWlsdXJlcyBjYW4gYmUganVzdCBhcyBjcnVjaWFsIGFzIHRoZSBmdW5jdGlvbiBpdHNlbGYuCgpUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uJiMzOTtzIGludGVybmFscy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHdoYXQmIzM5O3MgZ29pbmcgb24gKmluc2lkZSogdGhlIGZ1bmN0aW9uLiBXaGF0IHJlc291cmNlcyBpcyBpdCBhY2Nlc3Npbmc/IEFyZSB0aGVyZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zIG9yIGRlYWxsb2NhdGlvbnM/IEFyZSB0aGVyZSBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMgb3IgdGhlIFJlYWx0ZWsgY2hpcCBkaXJlY3RseT8gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBkb3dubG9hZCBwcm9jZXNzLCBhbmQgbGVhcm4gYWJvdXQgYW55IHBvdGVudGlhbCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgZGlmZmVyZW50IGRvd25sb2FkIG1ldGhvZHMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBhYm91dCB0aGUgZmlybXdhcmUgaW1hZ2UgaXRzZWxmIC0gd2hlcmUgaXQgY29tZXMgZnJvbSwgaG93IGl0JiMzOTtzIHByZXBhcmVkLCBhbmQgaG93IGl0JiMzOTtzIHVsdGltYXRlbHkgc2VudCB0byB0aGUgaGFyZHdhcmUuCgpGaW5hbGx5LCBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBlcnJvciBoYW5kbGluZy4gRmlybXdhcmUgZG93bmxvYWRzIGNhbiBiZSBmcmFnaWxlOyBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZhaWx1cmUgbW9kZXMgYW5kIHdoYXQgbWVjaGFuaXNtcyBhcmUgaW4gcGxhY2UgZm9yIHJlY292ZXJ5IG9yIGZhbGxiYWNrLiBFcnJvciBjb2RlcywgbG9nZ2luZywgYW5kIHJldHJ5IG1lY2hhbmlzbXMgYXJlIGFsbCBlc3NlbnRpYWwgaGVyZS4gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3Igcm9idXN0bmVzcyBhbmQgZGVidWdnaW5nIHB1cnBvc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9md19kb3dubG9hZF9zdWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE5NzU9c3RhdGljIHZvaWQgcnR3ODlfZndfZGxfZmFpbF9kdW1wKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxOTg5OnN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfc3VpdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5MC1cdFx0XHRcdCAgc3RydWN0IHJ0dzg5X2Z3X3N1aXQgKmZ3X3N1aXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwMjY9aW50IF9fcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDQxOlx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfc3VpdChydHdkZXYsIGZ3X3N1aXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNDg6XHRcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQocnR3ZGV2LCBmd19zdWl0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQ5LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjUyOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBpbiB0aGUgZmlyc3QgcGVyc29uIGFuZCBhc3N1bWluZyBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIEZpcm13YXJlIERvd25sb2FkKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgX19ydHc4OV9md19kb3dubG9hZGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgV2lGaSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgZm9yIHRoaXMgUmVhbHRlayA4OSBkZXZpY2UuIEkga25vdyB0aGUgZ2VuZXJhbCBmbG93LCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBzcGVjaWZpYyBzdGVwcy4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IGEgbG93LWxldmVsIHJvdXRpbmUsIGxpa2VseSBjYWxsZWQgYWZ0ZXIgdGhlIGRldmljZSBoYXMgZ29uZSB0aHJvdWdoIGl0cyBpbml0aWFsIHBvd2VyLXVwIHNlcXVlbmNlIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEl0JiMzOTtzIGxpa2VseSBoYW5kbGluZyB0aGUgY3J1Y2lhbCB0YXNrIG9mIHRyYW5zZmVycmluZyB0aGUgYWN0dWFsIGZpcm13YXJlIGltYWdlIGZyb20gdGhlIGhvc3Qgc3lzdGVtIHRvIHRoZSBSZWFsdGVrIDg5IGNoaXAuCgpJJiMzOTttIG1lbnRhbGx5IHByZXBhcmluZyB0byBleGFtaW5lOgoKKiAgICoqRW50cnkgcG9pbnRzOioqIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dCB0byBhcHByZWNpYXRlIGl0cyByb2xlLiBJcyBpdCBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIG9yIHBlcmhhcHMgYSBsYXRlciBmaXJtd2FyZSB1cGRhdGUgbWVjaGFuaXNtPyBJIG5lZWQgdG8gbG9vayBmb3IgY2FsbHMgaW4gdGhlIGRyaXZlciBjb2RlLCBsaWtlbHkgd2l0aGluIHRoZSBgcnR3ODlgIGRyaXZlciBtb2R1bGUuCiogICAqKkRhdGEgU3RydWN0dXJlczoqKiBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgcGFzc2VkIHRvIGBfX3J0dzg5X2Z3X2Rvd25sb2FkYD8gSSB3YW50IHRvIGtub3cgYWJvdXQgdGhlIGZpcm13YXJlIGltYWdlIGl0c2VsZiAocHJvYmFibHkgYSBidWZmZXIgY29udGFpbmluZyB0aGUgcmF3IGRhdGEpLCBwbHVzIGRldmljZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBsaWtlIHJlZ2lzdGVycywgYWRkcmVzc2VzLCBhbmQgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgaXMgYSBoZWFkZXIuCiogICAqKkhhcmR3YXJlIEludGVyYWN0aW9uOioqIFRoaXMgaXMga2V5LiBIb3cgaXMgdGhlIGZpcm13YXJlIGFjdHVhbGx5IGdldHRpbmcgc2VudD8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBmb3JtIG9mIGJ1cyBjb21tdW5pY2F0aW9uLiBJcyBpdCB1c2luZyB0aGUgc3RhbmRhcmQgU0RJTyBpbnRlcmZhY2Ugb3IgYSBQQ0llIGxpbms/IEFyZSB0aGVyZSBzcGVjaWZpYyBjb21tYW5kcyBvciBzZXF1ZW5jZXMgdGhhdCBhcmUgcGVyZm9ybWVkIHRvIGluaXRpYXRlIHRoZSBkb3dubG9hZD8gSSYjMzk7bSBleHBlY3Rpbmcgc29tZSBraW5kIG9mIHJlZ2lzdGVyIHdyaXRlcyB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlIGZvciB0aGUgdHJhbnNmZXIsIGZvbGxvd2VkIGJ5IHRoZSBhY3R1YWwgZGF0YSB0cmFuc2ZlciwgcGVyaGFwcyB0aHJvdWdoIERNQSBvciBQSU8gZGVwZW5kaW5nIG9uIHRoZSBpbnRlcmZhY2UuCiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQmIzM5O3MgdGhlIGVycm9yIGNoZWNraW5nIGxpa2U/IEhvdyBpcyB0aGUgZnVuY3Rpb24gaGFuZGxpbmcgcG90ZW50aWFsIGZhaWx1cmVzIGR1cmluZyB0aGUgdHJhbnNmZXIsIGxpa2UgY2hlY2tzdW0gZXJyb3JzLCB0aW1lb3V0IGlzc3Vlcywgb3IgYnVzIGNvbW11bmljYXRpb24gcHJvYmxlbXM/IEkgd2FudCB0byBrbm93IGFib3V0IHRoZSByb2J1c3RuZXNzIG9mIHRoZSBkb3dubG9hZCBwcm9jZWR1cmUuIElzIGl0IGNoZWNraW5nIGZvciBlcnJvcnMgb3IganVzdCBob3BpbmcgZm9yIHRoZSBiZXN0PyBXaGF0IGtpbmQgb2YgbG9nZ2luZyBhbmQgZXJyb3IgcmVwb3J0aW5nIGlzIGJlaW5nIGRvbmU/CiogICAqKlNlY3VyaXR5IChpZiBhcHBsaWNhYmxlKToqKiBEb2VzIGl0IGNvbnRhaW4gYW55IHNlY3VyaXR5IG1lY2hhbmlzbT8gSXMgdGhlcmUgYSB2ZXJpZmljYXRpb24gc3RlcD8KKiAgICoqQm9vdGxvYWRlciBJbnRlcmFjdGlvbjoqKiBJIGFzc3VtZSB0aGUgYF9fcnR3ODlfZndfZG93bmxvYWRgIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZSYjMzk7cyBib290bG9hZGVyLiBIb3cgZG9lcyBpdCBoYW5kIG92ZXIgY29udHJvbCBvbmNlIHRoZSBpbWFnZSBpcyB0cmFuc2ZlcnJlZD8gRG9lcyBpdCBzZW5kIGEgJiMzNDtnbyYjMzQ7IGNvbW1hbmQsIG9yIGlzIHRoZXJlIGEgc3BlY2lmaWMgcmVzZXQgc2VxdWVuY2U/IEkmIzM5O2QgbGlrZSB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBhZnRlciB0aGUgaW1hZ2UgaXMgc2VudC4KClRoZSBnb2FsIGhlcmUgaXMgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZpcm13YXJlIGRvd25sb2FkIHByb2Nlc3MuIEtub3dpbmcgZXhhY3RseSBob3cgaXQgd29ya3MgaXMgdml0YWwgZm9yIGRlYnVnZ2luZyBhbnkgcmVsYXRlZCBpc3N1ZXMgYW5kIGZvciBvcHRpbWl6aW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGhlYWRlcnMsIGFuZCBzdHVkeSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYF9fcnR3ODlfZndfZG93bmxvYWRgLCB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fcnR3ODlfZndfZG93bmxvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTY4OT1zdGF0aWMgdm9pZCBydHc4OV9oMmNfcGt0X3NldF9oZHJfZndkbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTcwODpzdGF0aWMgdTMyIF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzA5LVx0XHRcdFx0XHQgICAgc3RydWN0IHJ0dzg5X2Z3X2Jpbl9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3MzI6c3RhdGljIHUzMiBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTczMy1cdFx0XHRcdFx0ICAgIHN0cnVjdCBydHc4OV9md19iaW5faW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzYxOnN0YXRpYyBpbnQgX19ydHc4OV9md19kb3dubG9hZF9oZHIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3NjItXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4My1cdFx0ZndfaGRyID0gKHN0cnVjdCBydHc4OV9md19oZHIgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzg0Olx0XHR0cnVuY2F0ZWQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MChydHdkZXYsIGluZm8sIGZ3X2hkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODctXHRcdGZ3X2hkcl92MSA9IChzdHJ1Y3QgcnR3ODlfZndfaGRyX3YxICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc4ODpcdFx0dHJ1bmNhdGVkID0gX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjEocnR3ZGV2LCBpbmZvLCBmd19oZHJfdjEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xODE3PXN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTgyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxODI0Olx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9oZHIocnR3ZGV2LCBmd19zdWl0LCBpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODI1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE4NDI6c3RhdGljIGludCBfX3J0dzg5X2Z3X2Rvd25sb2FkX21haW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4NDMtXHRcdFx0XHQgICAgc3RydWN0IHJ0dzg5X2Z3X2hkcl9zZWN0aW9uX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE5MTk9c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9tYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkyOS1cdHdoaWxlIChzZWN0aW9uX251bS0tKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTkzMDpcdFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9tYWluKHJ0d2Rldiwgc2VjdGlvbl9pbmZvLCBpbmZvLVx1MDAzZXBhcnRfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkzMS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjAyNT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDI2OmludCBfX3J0dzg5X2Z3X2Rvd25sb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md190eXBlIHR5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAyNy1cdFx0XHRib29sIGluY2x1ZGVfYmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwNzU9aW50IHJ0dzg5X2Z3X2Rvd25sb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md190eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODEtXHRmb3IgKHJldHJ5ID0gMDsgcmV0cnkgXHUwMDNjIDU7IHJldHJ5JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwODI6XHRcdHJldCA9IF9fcnR3ODlfZndfZG93bmxvYWQocnR3ZGV2LCB0eXBlLCBpbmNsdWRlX2JiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDgzLVx0XHRpZiAoIXJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2NTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBydHc4OSBGaXJtd2FyZSBEb3dubG9hZCoqCgpPa2F5LCBzbyBJJiMzOTttIHN0YXJ0aW5nIHdpdGggYHJ0dzg5X2Z3X2Rvd25sb2FkYC4gVGhhdCBmdW5jdGlvbiBuYW1lIHNjcmVhbXMgJiMzNDt0aGUgcGxhY2Ugd2hlcmUgdGhlIGZpcm13YXJlIGdldHMgbG9hZGVkLCYjMzQ7IHdoaWNoIG1lYW5zIGl0JiMzOTtzIHByZXR0eSBjZW50cmFsIHRvIHRoZSB3aG9sZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZSwgc28gbXkgZmlyc3QgbW92ZSBpcyBkZWZpbml0ZWx5IHRvIGZpZ3VyZSBvdXQgaXRzIGNhbGwgc2l0ZXMuIFdoZXJlIGlzIHRoaXMgdGhpbmcgYmVpbmcgKmNhbGxlZCogZnJvbT8gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHBhaW50IGEgbXVjaCBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBhbmQgaG93IHRoaXMgZG93bmxvYWQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHNjaGVtZS4gSXQmIzM5O2xsIGdpdmUgbWUgY29udGV4dCDigJMgd2hpY2ggaXMgY3JpdGljYWwgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2Z3X2Rvd25sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE2ODk9c3RhdGljIHZvaWQgcnR3ODlfaDJjX3BrdF9zZXRfaGRyX2Z3ZGwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3MDg6c3RhdGljIHUzMiBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTcwOS1cdFx0XHRcdFx0ICAgIHN0cnVjdCBydHc4OV9md19iaW5faW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTczMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzMyOnN0YXRpYyB1MzIgX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3MzMtXHRcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc2MTpzdGF0aWMgaW50IF9fcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzYyLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3N1aXQgKmZ3X3N1aXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODMtXHRcdGZ3X2hkciA9IChzdHJ1Y3QgcnR3ODlfZndfaGRyICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc4NDpcdFx0dHJ1bmNhdGVkID0gX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjAocnR3ZGV2LCBpbmZvLCBmd19oZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzg3LVx0XHRmd19oZHJfdjEgPSAoc3RydWN0IHJ0dzg5X2Z3X2hkcl92MSAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3ODg6XHRcdHRydW5jYXRlZCA9IF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YxKHJ0d2RldiwgaW5mbywgZndfaGRyX3YxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzg5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTgxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxODE3OnN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODE4LVx0XHRcdFx0IGNvbnN0IHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE4MjQ6XHRyZXQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkX2hkcihydHdkZXYsIGZ3X3N1aXQsIGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4MjUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTg0MjpzdGF0aWMgaW50IF9fcnR3ODlfZndfZG93bmxvYWRfbWFpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTg0My1cdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfZndfaGRyX3NlY3Rpb25faW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTkwNj1ydHc4OV9md19nZXRfZndkbF9jaGtfdHlwZV9mcm9tX3N1aXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5MTk6c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9tYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTIwLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkyOS1cdHdoaWxlIChzZWN0aW9uX251bS0tKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTkzMDpcdFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9tYWluKHJ0d2Rldiwgc2VjdGlvbl9pbmZvLCBpbmZvLVx1MDAzZXBhcnRfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkzMS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTk3NT1zdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5ODk6c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTkwLVx0XHRcdFx0ICBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDE0Olx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfaGRyKHJ0d2RldiwgZndfc3VpdCwgXHUwMDI2aW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAxNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjAxODpcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX21haW4ocnR3ZGV2LCBmd19zdWl0LCBcdTAwMjZpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjAyNT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDI2OmludCBfX3J0dzg5X2Z3X2Rvd25sb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md190eXBlIHR5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAyNy1cdFx0XHRib29sIGluY2x1ZGVfYmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA0MTpcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQocnR3ZGV2LCBmd19zdWl0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDQ4Olx0XHRyZXQgPSBydHc4OV9md19kb3dubG9hZF9zdWl0KHJ0d2RldiwgZndfc3VpdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDc1OmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNzYtXHRcdCAgICAgIGJvb2wgaW5jbHVkZV9iYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA4MS1cdGZvciAocmV0cnkgPSAwOyByZXRyeSBcdTAwM2MgNTsgcmV0cnkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA4MjpcdFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZChydHdkZXYsIHR5cGUsIGluY2x1ZGVfYmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODMtXHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD01MzY1PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTM2OS1cdFx0XHRcdCBpbnQgKnVzZWRfZndfZm9ybWF0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1MzcwOmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTUzNzEtXHRcdCAgICAgIGJvb2wgaW5jbHVkZV9iYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz00MzA3PWludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDMzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDMzNTpcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkKHJ0d2RldiwgUlRXODlfRldfTk9STUFMLCBpbmNsdWRlX2JiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDMzNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYz0xMjYwPXN0YXRpYyBpbnQgcnR3ODlfd293X3N3YXBfZncoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHdvdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEyOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jOjEyOTM6XHRyZXQgPSBydHc4OV9md19kb3dubG9hZChydHdkZXYsIGZ3X3R5cGUsIGluY2x1ZGVfYmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMjk0LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzYxNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHJ0dzg5IEZpcm13YXJlIERvd25sb2FkKioKCk9rYXksIHNvIGBydHc4OV9md19kb3dubG9hZGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLiBUaGUgY29kZSB0ZWxscyBtZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0d28gcGxhY2VzOiBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAgYW5kIGBydHc4OV93b3dfc3dhcF9md2AuIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBsb29rcyBsaWtlIGl0JiMzOTtzIHByb2JhYmx5IGdldHRpbmcgdHJpZ2dlcmVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24g4oCTIHN0YW5kYXJkIHN0dWZmIGZvciBzZXR0aW5nIHRoaW5ncyB1cC4gR2l2ZW4gdGhhdCBgcnR3ODlgIGlzIGEgVVNCIGRyaXZlciAoYW5kIFBDSSwgZm9yIHRoYXQgbWF0dGVyKSwgdGhhdCBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7ZnV6emluZyB0YXJnZXQmIzM0OyB0byBtZSwgZXNwZWNpYWxseSB3aXRoIHNvbWV0aGluZyBsaWtlIGBkdW1teV9oY2RgLgoKQnV0IGJlZm9yZSBJIGdldCB0b28gY2FycmllZCBhd2F5IHdpdGggZnV6emluZyBzdHJhdGVnaWVzLCBJIHNob3VsZCBtYWtlIGFic29sdXRlbHkgc3VyZSB3aGVuIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBpcyBjYWxsZWQuIEl0JiMzOTtzIGNydWNpYWwgdG8gY29uZmlybSB0aGF0IGl0JiMzOTtzIGFjdHVhbGx5IGdldHRpbmcgaW52b2tlZCBkdXJpbmcgdGhlIHByb2JlIHNlcXVlbmNlLiBJIG5lZWQgdG8ga25vdyBleGFjdGx5IHdoZW4gdGhhdCBmaXJtd2FyZSBkb3dubG9hZCBwcm9jZXNzIGlzIGtpY2tlZCBvZmYgdG8gc3RyYXRlZ2l6ZSBwcm9wZXJseS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgcHJvYmUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfbWFjX3BhcnRpYWxfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTcyNzQ9c3RhdGljIGludCBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTcyODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3Mjg5Olx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlLCBiYl9wcmVpbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTcyOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NDMwNT1FWFBPUlRfU1lNQk9MKHJ0dzg5X21hY19kaXNhYmxlX2JiX3JmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDMwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDMwNzppbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDMwOC1cdFx0XHQgICBib29sIGJiX3ByZWluaXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz00MzYwPWludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy00MzY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo0MzY3Olx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGluY2x1ZGVfYmIsIGluY2x1ZGVfYmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy00MzY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5oPTEzMDU9dm9pZCBydHc4OV9tYWNfcHdyX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaDoxMzA2OmludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaC0xMzA3LVx0XHRcdCAgIGJvb2wgYmJfcHJlaW5pdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjAyCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgYHJ0dzg5YCBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHByb2Nlc3MuIFJpZ2h0IG5vdywgSSBzZWUgdGhhdCBgcnR3ODlfbWFjX2luaXRgIGlzIGNhbGxlZCBieSBgcnR3ODlfY29yZV9zdGFydGAuIFRoYXQgbWFrZXMgc2Vuc2UgLSBNQUMgaW5pdGlhbGl6YXRpb24gaGFwcGVuaW5nIGR1cmluZyB0aGUgY29yZSBzdGFydHVwLiBBbmQgKnRoYXQqIGlzIGNhbGxlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC4gVGhhdOKAmXMgdGhlIHRyaWdnZXIuIEhtbSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBiZXR0ZXIgYXMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBvdmVyYWxsIGRyaXZlciBiZWhhdmlvdXIuCgpXYWl0IGEgc2Vjb25kLCB0aGVyZSYjMzk7cyBhbm90aGVyIHBvaW50LiBJIGp1c3QgcmVtZW1iZXJlZCB0aGF0IGBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXBgIGlzIGFsc28gY2FsbGVkLCBhbmQgdGhhdCBoYXBwZW5zIGR1cmluZyB0aGUgcHJvYmUgc3RhZ2UsIHdoaWNoIGlzIGVhcmxpZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIGluaXRpYWxpc2luZyB0aGUgY2hpcCwgc28gSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGF0IHdvcmtzLiBMZXQgbWUgZGVsdmUgaW50byBgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGVhcmx5IHN0dWZmIGlzIHdvcmtpbmcgc28gSSBjYW4gYmUgc3VyZSB0aGF0IHRoZSBsYXRlciBwYXJ0cyB3aWxsIGJlIHdvcmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTcyMTI9aW50IHJ0dzg5X2NvcmVfbWxzcl9zd2l0Y2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzI3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjcyNzQ6c3RhdGljIGludCBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzI3NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzM4Mz1pbnQgcnR3ODlfY2hpcF9pbmZvX3NldHVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03NDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NzQwOTpcdHJldCA9IHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzQxMC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzAyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIHJ0dzg5IEZpcm13YXJlIFBhcnNpbmcgVnVsbmVyYWJpbGl0eSBNaXRpZ2F0aW9uKioKCk9rYXksIHNvIGBydHc4OV9jaGlwX2luZm9fc2V0dXBgIGdldHMga2lja2VkIG9mZiBieSBgcnR3ODlfY29yZV9pbml0YCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBieSBib3RoIGBydHc4OV9wY2lfcHJvYmVgIGFuZCBgcnR3ODlfdXNiX3Byb2JlYC4gVGhhdCBtZWFucywgd2l0aG91dCBhIGRvdWJ0LCB0aGUgZmlybXdhcmUgcGFyc2luZyBpcyBkZWZpbml0ZWx5IGhhcHBlbmluZyBkdXJpbmcgdGhlIGRyaXZlciBwcm9iZSBzZXF1ZW5jZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cgZm9yIGNvbnRleHQuCgpUaGlzIHBhdGNoIGlzIGFkZGluZyBjcnVjaWFsIGJvdW5kcyBjaGVja2luZyB0byBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICpyZWFsKiBpbXByb3ZlbWVudCwgYXMgaXQgcHJvdGVjdHMgYWdhaW5zdCB0aGUgbmFzdHkgcG9zc2liaWxpdHkgb2Ygb3V0LW9mLWJvdW5kcyByZWFkcywgd3JpdGVzLCBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Mgd2hlbiB0aGUgcGFyc2VyIGlzIGZlZCBjb3JydXB0ZWQgb3IgbWFsZm9ybWVkIGZpcm13YXJlLiBUaGF0JiMzOTtzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgbGVhZHMgdG8gY3Jhc2hlcyBvciwgd29yc2UsIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuCgpTaW5jZSBzeXprYWxsZXIgY2FuIHRhcmdldCBmaXJtd2FyZSBmaWxlcyB0aHJvdWdoIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJmYWNlLCB0aGlzIGlzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgd2Ugc2hvdWxkIGJlIGZ1enppbmcuIEJ1dCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gTGV0IG1lIHNlZS4uLiBkb2VzIHRoaXMgZHJpdmVyIGFjdHVhbGx5IHVzZSBgcmVxdWVzdF9maXJtd2FyZWA/IEkgbmVlZCB0byBsb29rIGF0IGBydHc4OV9md19kb3dubG9hZGAgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDI2PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMDQzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZpcm13YXJlLCBmd19uYW1lLCBkZXZpY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTEwNDQtXHRcdGlmICghcmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIxMDE9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMTYtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjExNzpcdFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZyZXEtXHUwMDNlZmlybXdhcmUsIGZ3X25hbWUsIHJ0d2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTE0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYHJlcXVlc3RfZmlybXdhcmVgIGlzIGRlZmluaXRlbHkgaW4gcGxheSBoZXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHN5emthbGxlciBpcyBhIHZpYWJsZSByb3V0ZSDigJMgd2UgY2FuIGZlZWQgaXQgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB6ZXJvIGluIG9uIGFyZSBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gQnV0IHdhaXQsIGFyZSB0aGV5IGV2ZW4gYWNjZXNzaWJsZT8gTGV0IG1lIGNoZWNrLi4uIEFoLCB0aGV5IGFyZSBgc3RhdGljYC4gQWxyaWdodCwgbGV0JiMzOTtzIGNvbmZpcm0gdGhhdDogYHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MCguLi4pYCBhbmQgYHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MSguLi4pYC4gU28sIHRoYXQgbWVhbnMgd2UgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlbS4KClRoZSBpbW1lZGlhdGUgY2FsbGVyIGlzIGBydHc4OV9md19oZHJfcGFyc2VyYCwgYW5kIHRoYXQmIzM5O3MgYWxzbyBgc3RhdGljYC4gVGhlIG5leHQgb25lIHVwIHRoZSBjaGFpbiBpcyBgcnR3ODlfZndfZG93bmxvYWRfc3VpdGAsIGFsc28gYHN0YXRpY2AuIFRoZW4gYF9fcnR3ODlfZndfZG93bmxvYWRgLCBzdGlsbCBgc3RhdGljYC4gRmluYWxseSwgd2UgZ2V0IHRvIGBydHc4OV9md19kb3dubG9hZGAsIHdoaWNoIGlzICpub24tc3RhdGljKi4gT2theSwgc28gdGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyBleHBvcnRlZCBvciBub24tc3RhdGljLCBvdGhlcndpc2UgaXQmIzM5O3Mgc3RpbGwgaW5hY2Nlc3NpYmxlIGZvciBmdXp6aW5nIHB1cnBvc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgcnR3ODlfZndfZG93bmxvYWRcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjAyNj1pbnQgX19ydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNzU6aW50IHJ0dzg5X2Z3X2Rvd25sb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9md190eXBlIHR5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA3Ni1cdFx0ICAgICAgYm9vbCBpbmNsdWRlX2JiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD01MzY1PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTM2OS1cdFx0XHRcdCBpbnQgKnVzZWRfZndfZm9ybWF0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1MzcwOmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTUzNzEtXHRcdCAgICAgIGJvb2wgaW5jbHVkZV9iYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTA1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipGaXJtd2FyZSBEb3dubG9hZCBJbnF1aXJ5KioKCkFscmlnaHQsIHNvIGBydHc4OV9md19kb3dubG9hZGAgaXMgZGVmaW5pdGVseSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgY2xlYXIuIE5vdywgYSBrZXkgcmVsYXRlZCBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZDogd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBydHc4OV9sb2FkX2Zpcm13YXJlYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgcHJldmlvdXMgZnVuY3Rpb24sIHdoYXQgaXRzIHNjb3BlIGlzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGZ1bGx5IGNvbXByZWhlbmRpbmcgdGhlIHdvcmtmbG93IGhlcmUuIEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCB3aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgZGVzaWduZWQgdG8gYWNjb21wbGlzaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfbG9hZF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY5NjE9aW50IHJ0dzg5X2NvcmVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzAxMi1cdHdpcGh5X3dvcmtfaW5pdChcdTAwMjZydHdkZXYtXHUwMDNlY2FuY2VsXzZnaHpfcHJvYmVfd29yaywgcnR3ODlfY2FuY2VsXzZnaHpfcHJvYmVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MDEzOlx0SU5JVF9XT1JLKFx1MDAyNnJ0d2Rldi1cdTAwM2Vsb2FkX2Zpcm13YXJlX3dvcmssIHJ0dzg5X2xvYWRfZmlybXdhcmVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MDE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMDkwPWludCBydHc4OV93YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMDE6c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEwMi1cdFx0XHRcdCAgIHN0cnVjdCBydHc4OV9md19yZXFfaW5mbyAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMjQ6dm9pZCBydHc4OV9sb2FkX2Zpcm13YXJlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMzQ6XHRydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShydHdkZXYsIFx1MDAyNnJ0d2Rldi1cdTAwM2Vmdy5yZXEsIGZ3X25hbWUsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTM1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTM3MD1pbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01MzcxLVx0XHQgICAgICBib29sIGluY2x1ZGVfYmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjUzNzI6dm9pZCBydHc4OV9sb2FkX2Zpcm13YXJlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01MzczLXZvaWQgcnR3ODlfdW5sb2FkX2Zpcm13YXJlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDY2CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgcnR3ODkgRmlybXdhcmUgTG9hZGluZyoqCgpSaWdodCwgc28gYHJ0dzg5X2xvYWRfZmlybXdhcmVfd29ya2AgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUuIEdvb2QgdG8ga25vdywgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBjb3JlIG9mIHRoZSBwYXJzaW5nLiBIbW0sIGhhbmcgb24uLi4gYHJ0dzg5X2Z3X2Rvd25sb2FkYCAtIHRoYXQmIzM5O3Mgd2hlcmUgdGhlICphY3R1YWwqIGZpcm13YXJlIHBhcnNpbmcgaGFwcGVucy4gSW50ZXJlc3RpbmcuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBjaGVjayBob3cgYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCBhbmQgYHJ0dzg5X2xvYWRfZmlybXdhcmVfd29ya2AgaW50ZXJhY3QuIEFoLCBnb3QgaXQuIGBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcWAgY2FsbHMgYHJlcXVlc3RfZmlybXdhcmVgLCB0aGF0JiMzOTtzIHRoZSBzdGFuZGFyZCBrZXJuZWwgQVBJLiBOb3cgdGhlIHF1ZXN0aW9uIGlzOiBkb2VzIGBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcWAgaXRzZWxmIGRvIGFueSBwYXJzaW5nIGJlZm9yZSBoYW5kaW5nIGl0IG9mZj8gSSBoYXZlIHRvIGxvb2sgbW9yZSBjbG9zZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9sb2FkX2Zpcm13YXJlX3JlcSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMDkwPWludCBydHc4OV93YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMDE6c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEwMi1cdFx0XHRcdCAgIHN0cnVjdCBydHc4OV9md19yZXFfaW5mbyAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMTI0PXZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMTM0Olx0cnR3ODlfbG9hZF9maXJtd2FyZV9yZXEocnR3ZGV2LCBcdTAwMjZydHdkZXYtXHUwMDNlZncucmVxLCBmd19uYW1lLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEzNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNzcxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCBmdW5jdGlvbi4gSSYjMzk7bSBhc3N1bWluZywgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCB0aGlzIGlzIGxpa2VseSBwYXJ0IG9mIHRoZSBSZWFsdGVrIFJUTDg4NTJBRS9CRSBkcml2ZXIgc3RhY2suIE15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlIGFyb3VuZCBob3cgaXQmIzM5O3Mgc3RydWN0dXJlZDogaXMgaXQgYSBzaW1wbGUgd3JhcHBlciwgb3IgZG9lcyBpdCBoYW5kbGUgbW9yZSBzb3BoaXN0aWNhdGVkIGFzcGVjdHMgb2YgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcz8gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBlbWJlZGRlZCBzeXN0ZW0sIHNvIEkmIzM5O20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCBpdCBsaWtlbHkgY29vcmRpbmF0ZXMgd2l0aCB0aGUgaGFyZHdhcmUmIzM5O3Mgc3BlY2lmaWMgbG9hZGluZyBtZWNoYW5pc21zLCBwZXJoYXBzIGludm9sdmluZyBETUEgdHJhbnNmZXJzLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBwb3NzaWJseSBldmVuIGRpcmVjdCBtZW1vcnkgYWNjZXNzIHJlc3RyaWN0aW9ucyBiYXNlZCBvbiB0aGUgc2VjdXJpdHkgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBjbHVlcyBhYm91dCB3aGV0aGVyIGl0IGludGVyYWN0cyB3aXRoIGFueSBzcGVjaWZpYyBoYXJkd2FyZSByZWdpc3RlcnMgb3IgdXNlcyBhbnkgUmVhbHRlay1zcGVjaWZpYyBmaXJtd2FyZSBsb2FkaW5nIHByb3RvY29scy4gSSB3aWxsIGFsc28gYmUgbG9va2luZyB0byBjaGVjayBob3cgZXJyb3IgaGFuZGxpbmcgaXMgaW1wbGVtZW50ZWQgaWYgaXQgZmFpbHMgdG8gbG9hZCB0aGUgZmlybXdhcmUgc3VjY2Vzc2Z1bGx5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaW5kaWNhdGlvbiBvZiB0aGUgb3ZlcmFsbCByb2J1c3RuZXNzIG9mIHRoZSBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTAxOlx0c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4yMTAyOlx0XHRcdFx0XHQgICBzdHJ1Y3QgcnR3ODlfZndfcmVxX2luZm8gKnJlcSxcbjIxMDM6XHRcdFx0XHRcdCAgIGNvbnN0IGNoYXIgKmZ3X25hbWUsIGJvb2wgbm93YXJuKVxuMjEwNDpcdHtcbjIxMDU6XHRcdGludCByZXQ7XG4yMTA2Olx0XG4yMTA3Olx0XHRpZiAocmVxLVx1MDAzZWZpcm13YXJlKSB7XG4yMTA4Olx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0ZXLFxuMjEwOTpcdFx0XHRcdCAgICBcJiMzNDtmdWxsIGZpcm13YXJlIGhhcyBiZWVuIGVhcmx5IHJlcXVlc3RlZFxcblwmIzM0Oyk7XG4yMTEwOlx0XHRcdGNvbXBsZXRlX2FsbChcdTAwMjZyZXEtXHUwMDNlY29tcGxldGlvbik7XG4yMTExOlx0XHRcdHJldHVybiAwO1xuMjExMjpcdFx0fVxuMjExMzpcdFxuMjExNDpcdFx0aWYgKG5vd2FybilcbjIxMTU6XHRcdFx0cmV0ID0gZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4oXHUwMDI2cmVxLVx1MDAzZWZpcm13YXJlLCBmd19uYW1lLCBydHdkZXYtXHUwMDNlZGV2KTtcbjIxMTY6XHRcdGVsc2VcbjIxMTc6XHRcdFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZyZXEtXHUwMDNlZmlybXdhcmUsIGZ3X25hbWUsIHJ0d2Rldi1cdTAwM2VkZXYpO1xuMjExODpcdFxuMjExOTpcdFx0Y29tcGxldGVfYWxsKFx1MDAyNnJlcS1cdTAwM2Vjb21wbGV0aW9uKTtcbjIxMjA6XHRcbjIxMjE6XHRcdHJldHVybiByZXQ7XG4yMTIyOlx0fVxuMjEyMzpcdFxuMjEyNDpcdHZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbjIxMjU6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNDUwCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgRG93bmxvYWQgUHJvY2VzcyoqCgpPa2F5LCBzbyBgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXFgIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ7IGl0IGp1c3QgZ3JhYnMgdGhlIGZpcm13YXJlIGFuZCBoYW5kbGVzIHRoZSBpbml0aWFsIGNvbXBsZXRpb24uIFRoZSByZWFsIHBhcnNpbmcgd29yaywgdGhlIGhlYXZ5IGxpZnRpbmcsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBoYXBwZW5pbmcgaW4gYHJ0dzg5X2Z3X2Rvd25sb2FkYC4gSXQgbWFrZXMgc2Vuc2UgaXQmIzM5O3MgY2FsbGVkIGxhdGVyLCBwcmVzdW1hYmx5IGFmdGVyIGV2ZXJ5dGhpbmcmIzM5O3Mgc2V0dGxlZCBmb2xsb3dpbmcgdGhlIGNvbXBsZXRpb24gdHJpZ2dlcmVkIGJ5IGBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcWAuIFNvLCBgcnR3ODlfZndfZG93bmxvYWRgIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyBpcy4gUmlnaHQsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhhdCBmdW5jdGlvbi4gV2FpdCwgaXMgaXQgZXhwb3J0ZWQ/IEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgaXQgYmVpbmcgc3RhdGljLiBOb3BlLCBpdCYjMzk7cyBub3QuIE9rYXksIHRoYXQgY2hhbmdlcyB0aGluZ3Mg4oCTIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gaXQmIzM5O3Mgbm90IGV4cG9ydGVkLCBiZWNhdXNlIHRoYXQmIzM5O3Mgc2lnbmlmaWNhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qcnR3ODlfZndfZG93bmxvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzg5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhbHRlayBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUmVhbHRlayBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHdvcmtzLCBzcGVjaWZpY2FsbHkgaG93IHRoZSBmaXJtd2FyZSBnZXRzIGRvd25sb2FkZWQuIEkmIzM5O3ZlIG5vdGljZWQgYSBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIG5vdCBleHBvcnRlZCwgYnV0IGltcG9ydGFudGx5LCBpdCYjMzk7cyAqbm90KiBzdGF0aWMsIHNvIEkgY2FuIHByb2JhYmx5IHRyYWNlIGl0LiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgY2hhaW4gSSBzaG91bGQgYmUgYXdhcmUgb2Y/CgpJIHNlZSB0aGF0IGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBpcyBjYWxsaW5nIGBydHc4OV9md19kb3dubG9hZGAuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB0aGUgZmlybXdhcmUgZG93bmxvYWQgSSYjMzk7bSBpbnRlcmVzdGVkIGluISBBbmQgZnVydGhlciwgSSBub3RpY2UgdGhhdCBgcnR3ODlfbWFjX2luaXRgIGNhbGxzIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YC4gRXhwYW5kaW5nIG91dCB0aGUgY2FsbHMgZXZlbiBtb3JlLCBgcnR3ODlfY29yZV9zdGFydGAgdGhlbiBjYWxscyBgcnR3ODlfbWFjX2luaXRgLiBUaGlzIGFsbCBzZWVtcyB0byBjaGFpbiB1cCB0byBgcnR3ODlfY29yZV9zdGFydGAsIHRoYXQgbG9va3MgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgdG8gYmVnaW4gaW52ZXN0aWdhdGluZy4KCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHRha2UgYSBsb29rIGF0IGBydHc4OV9jb3JlX3N0YXJ0YCBhbmQgdHJhY2UgZXZlcnl0aGluZyBmcm9tIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NjY1Nj1FWFBPUlRfU1lNQk9MKHJ0dzg5X2NoZWNrX3F1aXJrcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY1ODppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD05MzYyPXZvaWQgcnR3ODlfY29tcGxldGVfY29uZChzdHJ1Y3QgcnR3ODlfd2FpdF9pbmZvICp3YWl0LCB1bnNpZ25lZCBpbnQgY29uZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTkzNjMtXHRcdFx0IGNvbnN0IHN0cnVjdCBydHc4OV9jb21wbGV0aW9uX2RhdGEgKmRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6OTM2NDppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtOTM2NS12b2lkIHJ0dzg5X2NvcmVfc3RvcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz01Nz1zdGF0aWMgaW50IHJ0dzg5X29wc19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NjM6XHRyZXR1cm4gcnR3ODlfY29yZV9zdGFydChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmM9MjU3PXZvaWQgcnR3ODlfbGVhdmVfaXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jOjI2NzpcdHJldCA9IHJ0dzg5X2NvcmVfc3RhcnQocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYy0yNjgtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDgyNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgcnR3ODkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgcnR3ODlfY29yZV9zdGFydGAgaXMgdGhlIGtleSBmdW5jdGlvbiBiZWNhdXNlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBydHc4OV9vcHNfc3RhcnRgLCB3aGljaCBpcyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUaGF0IG1lYW5zIGJyaW5naW5nIHVwIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyB0aGUgdHJpZ2dlciwgbGVhZGluZyB0byBmaXJtd2FyZSBkb3dubG9hZCBhbmQgcGFyc2luZywgbWFraW5nIGl0IGEgdmVyeSBhY2Nlc3NpYmxlIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSB0YXJnZXRzIGFyZSBnb2luZyB0byBiZSBgcnR3ODlfZndfZG93bmxvYWRgLCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAsIGFuZCBgcnR3ODlfY29yZV9zdGFydGAuIEFjdHVhbGx5LCBgcnR3ODlfZndfZG93bmxvYWRgIHNlZW1zIGxpa2UgdGhlIG1vc3QgZGlyZWN0IHBhdGguIEkgc2hvdWxkIGNoZWNrIGlmIHRoYXQmIzM5O3MgYWN0dWFsbHkgaW4gYGZ3LmNgLiBZZXAsIGl0IGlzLiBBbmQgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBwZXJmZWN0ISBUaGF0IG1lYW5zIGBydHc4OV9md19kb3dubG9hZGAgY2FuIGRlZmluaXRlbHkgYmUgYSBgRm9jdXNTeW1ib2xgIGZvciBzeXprYWxsZXIuCgpMZXQmIzM5O3Mgc2VlLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBydHc4OV9md19oZHJfcGFyc2VyX3YwYCBhbmQgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjFgLiBCdXQgdGhvc2UgYXJlIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgdXNlIHRoZW0gZGlyZWN0bHkgYXMgYEZvY3VzU3ltYm9sc2AuIEl0IGxvb2tzIGxpa2UgSSBjYW4gc3RpbGwgZm9jdXMgb24gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgLgoKTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gVGhlIGNvcmUgbW9kdWxlIGlzIGBDT05GSUdfUlRXODlfQ09SRWAuIFdlJiMzOTt2ZSBnb3QgYnVzIG1vZHVsZXMgdG9vOiBgQ09ORklHX1JUVzg5X1BDSWAgYW5kIGBDT05GSUdfUlRXODlfVVNCYC4gU2luY2Ugc3l6a2FsbGVyIGNhbiBoYW5kbGUgVVNCLCBgQ09ORklHX1JUVzg5X1VTQmAgaXMgYSBnb29kIHRhcmdldC4gSG9sZCBvbiwgYENPTkZJR19SVFc4OV9VU0JgIG5lZWRzIGBDT05GSUdfVVNCYCwgc28gbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHkgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVFc4OV9VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTc9Y29uZmlnIFJUVzg5X1BDSVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDpjb25maWcgUlRXODlfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTgwMQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIGZpbGUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOgoKKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gTXkgaW5pdGlhbCBzY2FuIGlzIGZvciB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG92ZXJhbGwgb3JnYW5pemF0aW9uLCB0aGUgaGllcmFyY2h5IG9mIG9wdGlvbnMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gZWFjaCBvdGhlci4gSSBleHBlY3QgdG8gc2VlIGBjb25maWdgIHN0YXRlbWVudHMgZGVmaW5pbmcgdmFyaW91cyBmZWF0dXJlcywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdHMuIFRoZSBnb2FsIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhYmlsaXR5IG9mIHRoaXMgZHJpdmVyIOKAkyB3aGF0IG9wdGlvbnMgYXJlIGV4cG9zZWQgdG8gdGhlIHVzZXIgKG9yLCBtb3JlIGxpa2VseSwgdGhlIGRpc3RyaWJ1dGlvbiBtYWludGFpbmVyKSwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4KCkkmIzM5O2xsIGJlIGltbWVkaWF0ZWx5IGZvY3VzaW5nIG9uIHRoZSBpbXBvcnRhbnQgcGFydHMgc3VjaCBhcyB0aGUgYmFzZSBkcml2ZXIgc2VsZWN0aW9uLCB3aGljaCBzaG91bGQgYmUgbmVhciB0aGUgdG9wLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlZmluZXMgdGhlIGNvcmUgYHJ0dzg5YCBmdW5jdGlvbmFsaXR5LiBBcmUgdGhlcmUgc2VwYXJhdGUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IFJlYWx0ZWsgY2hpcHMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyPyBUaGF0JiMzOTtzIHdoYXQgSSYjMzk7ZCBleHBlY3QuIEkmIzM5O20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgYHNlbGVjdGAsIGBkZXBlbmRzIG9uYCwgYW5kIGBkZWZhdWx0YCBzdGF0ZW1lbnRzLiBUaGVzZSBhcmUgbXkgYnJlYWQgYW5kIGJ1dHRlciB3aGVuIGl0IGNvbWVzIHRvIHVuZGVyc3RhbmRpbmcgaG93IGEgZHJpdmVyIGlzIHBpZWNlZCB0b2dldGhlciBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuCgpJIHdpbGwgaGF2ZSB0byBjaGVjayBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgb3IgcmVndWxhdG9yeSBkb21haW4gY29uZmlndXJhdGlvbnMsIGFueSBwb3dlci1zYXZpbmcgb3B0aW9ucywgYW5kIGFueSBmZWF0dXJlcyByZWxhdGVkIHRvIGRlYnVnZ2luZyBvciB0ZXN0aW5nLiBDb25kaXRpb25hbCBjb21waWxhdGlvbiBpcyBrZXkg4oCTIEkgbmVlZCB0byB0cmFjayBkb3duIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBkZWZpbmVzIGFuZCBkZXRlcm1pbmUgaWYgdGhleSYjMzk7cmUgaGFuZGxlZCBncmFjZWZ1bGx5LiBBcmUgdGhlcmUgZmFsbGJhY2sgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIG9wdGlvbnMgdGhhdCBiZWNvbWUgYXZhaWxhYmxlIG9ubHkgd2hlbiBjZXJ0YWluIG90aGVyIGZlYXR1cmVzIGFyZSBlbmFibGVkPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGRlcGVuZGVuY2llcyB3aWxsIHBsYXkgYSBodWdlIHJvbGUgaW4gZGV0ZXJtaW5pbmcgd2hpY2ggcGFydHMgb2YgdGhlIGRyaXZlciBnZXQgY29tcGlsZWQuCgpUaGUgcHJlc2VuY2Ugb2YgYGhlbHBgIHNlY3Rpb25zIGlzIGFsd2F5cyBhIGdvb2Qgc2lnbi4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGludGVuZGVkIHVzZSBmb3IgZWFjaCBvZiB0aGVzZSBvcHRpb25zLiBBcmUgdGhleSBzZWxmLWV4cGxhbmF0b3J5PyBPciBhcmUgdGhlcmUgY29tcGxleCB0cmFkZS1vZmZzIHRvIGNvbnNpZGVyLCBzdWNoIGFzIHBlcmZvcm1hbmNlIHZzLiBwb3dlciBjb25zdW1wdGlvbj8gSSYjMzk7bGwgcHJvYmFibHkgYmUgYWJsZSB0byBpbmZlciBzb21lIHRoaW5ncyBiYXNlZCBvbiB0aGUgbmFtZXMgb2YgdGhlIG9wdGlvbnMsIGJ1dCBjb21wcmVoZW5zaXZlIGRvY3VtZW50YXRpb24gaXMgYWx3YXlzIHdlbGNvbWUuIEFueSBvYnZpb3VzIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgb3Igc2VjdXJpdHkgZmVhdHVyZXMgSSB3b3VsZCB3YW50IHRvIHRha2Ugbm90ZSBvZiBpbW1lZGlhdGVseS4gVWx0aW1hdGVseSwgbXkgZ29hbCBpcyB0byBmdWxseSBkb2N1bWVudCBob3cgdGhlIGRyaXZlciBjYW4gYmUgY29uZmlndXJlZCB0byBtYXhpbWl6ZSBmdW5jdGlvbmFsaXR5IGFuZCBwZXJmb3JtYW5jZSwgd2hpbGUgbWluaW1pemluZyBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gICAyOlx0bWVudWNvbmZpZyBSVFc4OVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XG4gICA3Olx0XHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHJ0dzg5LlxuICAxMDpcdFxuICAxMTpcdGlmIFJUVzg5XG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFJUVzg5X0NPUkVcbiAgMTQ6XHRcdHRyaXN0YXRlXG4gIDE1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgUlRXODlfUENJXG4gIDE4Olx0XHR0cmlzdGF0ZVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBSVFc4OV9VU0JcbiAgMjE6XHRcdHRyaXN0YXRlXG4gIDIyOlx0XG4gIDIzOlx0Y29uZmlnIFJUVzg5Xzg4NTFCXG4gIDI0Olx0XHR0cmlzdGF0ZVxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBSVFc4OV84ODUyQVxuICAyNzpcdFx0dHJpc3RhdGVcbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXG4gIDMwOlx0XHR0cmlzdGF0ZVxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBSVFc4OV84ODUyQlxuICAzMzpcdFx0dHJpc3RhdGVcbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgUlRXODlfODg1MkJUXG4gIDM2Olx0XHR0cmlzdGF0ZVxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBSVFc4OV84ODUyQ1xuICAzOTpcdFx0dHJpc3RhdGVcbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgUlRXODlfODkyMkFcbiAgNDI6XHRcdHRyaXN0YXRlXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIFJUVzg5Xzg5MjJEXG4gIDQ1Olx0XHR0cmlzdGF0ZVxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBSVFc4OV84ODUxQkVcbiAgNDg6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA1MDpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNTE6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgNTI6XHRcdHNlbGVjdCBSVFc4OV84ODUxQlxuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJFIGNoaXBzZXRcbiAgNTU6XHRcbiAgNTY6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIFJUVzg5Xzg4NTFCVVxuICA1OTpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAgNjA6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDYxOlx0XHRzZWxlY3QgUlRXODlfQ09SRVxuICA2MjpcdFx0c2VsZWN0IFJUVzg5X1VTQlxuICA2MzpcdFx0c2VsZWN0IFJUVzg5Xzg4NTFCXG4gIDY0Olx0XHRoZWxwXG4gIDY1Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQlUgY2hpcHNldFxuICA2NjpcdFxuICA2NzpcdFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBSVFc4OV84ODUyQUVcbiAgNzA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDcxOlx0XHRkZXBlbmRzIG9uIFBDSVxuICA3MjpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNzM6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgNzQ6XHRcdHNlbGVjdCBSVFc4OV84ODUyQVxuICA3NTpcdFx0aGVscFxuICA3NjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcbiAgNzc6XHRcbiAgNzg6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gIDc5Olx0XG4gIDgwOlx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxuICA4MTpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAgODI6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDgzOlx0XHRzZWxlY3QgUlRXODlfQ09SRVxuICA4NDpcdFx0c2VsZWN0IFJUVzg5X1VTQlxuICA4NTpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJBXG4gIDg2Olx0XHRoZWxwXG4gIDg3Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQVUgY2hpcHNldFxuICA4ODpcdFxuICA4OTpcdFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA5MDpcdFxuICA5MTpcdGNvbmZpZyBSVFc4OV84ODUyQkVcbiAgOTI6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDkzOlx0XHRkZXBlbmRzIG9uIFBDSVxuICA5NDpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgOTU6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgOTY6XHRcdHNlbGVjdCBSVFc4OV84ODUyQlxuICA5NzpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxuICA5ODpcdFx0aGVscFxuICA5OTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFIGNoaXBzZXRcbiAxMDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3MTMKCQkJCQkJCW91dHB1dDogMTU4CgkJCQkJCQl0aG91Z2h0czogNzA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBSZWFsdGVrIFJUVzg5IERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgZ29hbCBpcyB0byBzZXQgdXAgZnV6emluZyBmb3IgdGhlIFJlYWx0ZWsgUlRXODkgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBuZXcgYm91bmRzIGNoZWNrcyBpbnRyb2R1Y2VkIGluIHRoZSBwYXRjaC4gTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBjb2RlIGlzIGhpdCBkdXJpbmcgZmlybXdhcmUgbG9hZGluZywgd2hpY2ggbWFrZXMgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4gV2UgY2FuIHJlYWNoIGl0IHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yLCBldmVuIGJldHRlciwgVVNCIGZ1enppbmcuCgpJJiMzOTt2ZSBkZXRlcm1pbmVkIHRoYXQgdGhlIGtleSBjb25maWd1cmF0aW9ucyBuZWVkZWQgYXJlIGBSVFc4OWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MUJVYCwgYW5kIGBNQUM4MDIxMWAuIFdlIG5lZWQgYE1BQzgwMjExYCBiZWNhdXNlIGBSVFc4OWAgZGVwZW5kcyBvbiBpdC4gSSBhbHNvIGNvbmZpcm1lZCB0aGF0IGluY2x1ZGluZyBgUlRXODlfODg1MkFVYCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYCwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIFRoZSBvdGhlciBVU0IgdmFyaWFudCBpcyBhbHNvIGluY2x1ZGVkIGZvciBmbGV4aWJpbGl0eS4KClRoZSBtYWluIGZ1bmN0aW9ucyBJJiMzOTtsbCBiZSBmb2N1c2luZyBvbiBmb3IgZnV6emluZyBhcmUgYHJ0dzg5X2Z3X2Rvd25sb2FkYCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgLiBgcnR3ODlfZndfZG93bmxvYWRgIGlzIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludCBmb3IgZmlybXdhcmUgZG93bmxvYWRpbmcgYW5kIHBhcnNpbmcsIGFuZCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAgaXMgaXRzIGNhbGxlci4gQ3J1Y2lhbGx5LCBuZWl0aGVyIGlzIHN0YXRpYyBvciBpbmxpbmVkLCBtYWtpbmcgdGhlbSBpZGVhbCBzeW1ib2xzIHRvIHRhcmdldC4gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyBpbiBgZncuY2AsIGFuZCBgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdGAgaXMgaW4gYG1hYy5jYC4gVGhlIHBhdGNoIG1vZGlmaWVzIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZpcm13YXJlIGhlYWRlciBwYXJzaW5nLCBhbmQgd2hpbGUgdGhlIHN0YXRpYyBmdW5jdGlvbnMgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgKm1pZ2h0KiBiZSBhY2Nlc3NpYmxlLCBpdCBpcyBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgc2FmZXIgdG8gdXNlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBhcyB0aGUgZW50cnkgcG9pbnRzLgoKSSYjMzk7dmUgdmVyaWZpZWQgdGhhdCBgcnR3ODlfZndfZG93bmxvYWRgIGlzIGluZGVlZCB0aGUgbWFpbiBmdW5jdGlvbiB0aGF0IGlzIGhpdCBkdXJpbmcgZmlybXdhcmUgZG93bmxvYWQgYW5kIHRoYXQgaXQgaXMgdGhlIG1vc3Qgc3VpdGFibGUgc3RhcnRpbmcgcG9pbnQuCgpUaGVyZWZvcmUsIG15IGNvbmZpZ3VyYXRpb24gaXM6CgoqICAgYFdvcnRoRnV6emluZ2A6IGB0cnVlYAoqICAgYFJlYXNvbmluZ2A6IEJvdW5kcyBjaGVja2luZyBvbiBSZWFsdGVrIGZpcm13YXJlIHBhcnNpbmcgaXMgdnVsbmVyYWJsZSB0byBmdXp6aW5nLgoqICAgYEZvY3VzU3ltYm9sc2A6IGBydHc4OV9md19kb3dubG9hZGAsIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YAoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgUlRXODlgLCBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTFCVWAsIGBNQUM4MDIxMWAKSSYjMzk7bSBub3cgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODkmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg5X2Z3X2Rvd25sb2FkJiMzNDssCiAgICAmIzM0O3J0dzg5X21hY19wYXJ0aWFsX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpbiB0aGUgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIgKHJ0dzg5KS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdoZW4gbG9hZGluZyBmaXJtd2FyZSwgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIgdmlhIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24gb3IgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUxQlUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19kb3dubG9hZCYjMzQ7LAogICAgJiMzNDtydHc4OV9tYWNfcGFydGlhbF9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE5OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIGZvciBmaXJtd2FyZSBoZWFkZXJzIGluIGBydHc4OV9md19oZHJfcGFyc2VyX3YwYCBhbmQgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjFgLiBJdCBlbnN1cmVzIHRoYXQgdGhlIGZpcm13YXJlIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvbnRhaW4gdGhlIGhlYWRlciBhbmQgaXRzIHNlY3Rpb25zLCBhbmQgdmFsaWRhdGVzIHRoZSBzZWN0aW9uIG51bWJlci4gV2l0aG91dCB0aGVzZSBjaGVja3MsIHRoZSBjb2RlIGNvdWxkIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBmaXJtd2FyZSBidWZmZXIsIHdoaWNoIGNvbnN0aXR1dGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBmaXJtd2FyZSBidWZmZXIgaXRzZWxmIGlzIHBvcHVsYXRlZCBieSB0aGUgZmlybXdhcmUgbG9hZGluZyBzdWJzeXN0ZW0sIHNvIHJlYWRpbmcgcGFzdCBpdHMgbGVuZ3RoIGlzIGEgc3BhdGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIChPT0IpLCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZXJlZm9yZSwgbm8gS01TQU4tc3BlY2lmaWMgcmlza3MgKGxpa2UgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IG9yIGluZm8tbGVha3MpIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzA0MGM2ZjQwZjExNTI5YWEwYWY1ZGU4ODVjMDcwNzc2NzFkNDU5YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDE5OjE3OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCmluZGV4IDAwOTljNWMwM2U3YTYuLmIyOTkxYmM5M2Y4NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMKQEAgLTE1Niw4ICYjNDM7MTU2LDI0IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlCiAJaWYgKCFpbmZvKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAobGVuICZsdDsgc2l6ZW9mKCpmd19oZHIpKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NiwgRldfSERSX1c2X1NFQ19OVU0pOwomIzQzOwlpZiAoIWluZm8tJmd0O3NlY3Rpb25fbnVtIHx8IGluZm8tJmd0O3NlY3Rpb25fbnVtICZndDsgRldETF9TRUNUSU9OX01BWF9OVU0pIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1pbnZhbGlkIGZ3IHNlY3Rpb24gbnVtICV1XG4mIzM0OywKJiM0MzsJCQkgIGluZm8tJmd0O3NlY3Rpb25fbnVtKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJYmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby0mZ3Q7c2VjdGlvbl9udW0pOwomIzQzOwlpZiAoYmFzZV9oZHJfbGVuICZndDsgbGVuKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O1tFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NywgRldfSERSX1c3X0RZTl9IRFIpOwogCWluZm8tJmd0O2lkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci0mZ3Q7dzcsIEZXX0hEUl9XN19JRE1FTV9TSEFSRV9NT0RFKTsKIApAQCAtNDU1LDkgJiM0Mzs0NzEsMjUgQEAgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGUKIAlpbnQgcmV0OwogCXUzMiBpOwogCiYjNDM7CWlmIChsZW4gJmx0OyBzaXplb2YoKmZ3X2hkcikpIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWluZm8tJmd0O3NlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItJmd0O3c2LCBGV19IRFJfVjFfVzZfU0VDX05VTSk7CiYjNDM7CWlmICghaW5mby0mZ3Q7c2VjdGlvbl9udW0gfHwgaW5mby0mZ3Q7c2VjdGlvbl9udW0gJmd0OyBGV0RMX1NFQ1RJT05fTUFYX05VTSkgewomIzQzOwkJcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcbiYjMzQ7LAomIzQzOwkJCSAgaW5mby0mZ3Q7c2VjdGlvbl9udW0pOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpbmZvLSZndDtkc3BfY2hlY2tzdW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci0mZ3Q7dzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTsKIAliYXNlX2hkcl9sZW4gPSBzdHJ1Y3Rfc2l6ZShmd19oZHIsIHNlY3Rpb25zLCBpbmZvLSZndDtzZWN0aW9uX251bSk7CiYjNDM7CWlmIChiYXNlX2hkcl9sZW4gJmd0OyBsZW4pIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7W0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCWluZm8tJmd0O2R5bmFtaWNfaGRyX2VuID0gbGUzMl9nZXRfYml0cyhmd19oZHItJmd0O3c3LCBGV19IRFJfVjFfVzdfRFlOX0hEUik7CiAJaW5mby0mZ3Q7aWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLSZndDt3NywgRldfSERSX1YxX1c3X0lETUVNX1NIQVJFX01PREUpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxOToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzI4CgkJCQkJCQlvdXRwdXQ6IDE5NQoJCQkJCQkJdGhvdWdodHM6IDI5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGaXJtd2FyZSBIZWFkZXIgUGFyc2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLCBhbmQgaGVyZSYjMzk7cyBteSB0YWtlLiBJdCYjMzk7cyBmb2N1c2VkIG9uIGJvbHN0ZXJpbmcgdGhlIHNlY3VyaXR5IG9mIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGZpcm13YXJlIHBhcnNpbmcsIHNwZWNpZmljYWxseSBpbiB0aGUgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgZnVuY3Rpb25zIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBmaXJtd2FyZSBoZWFkZXIgaGFuZGxpbmcuCgpFc3NlbnRpYWxseSwgdGhleSYjMzk7cmUgaW1wbGVtZW50aW5nIGNoZWNrcyBmb3IgdGhyZWUga2V5IGNvbmRpdGlvbnM6IEZpcnN0LCBtYWtpbmcgc3VyZSB0aGUgbGVuZ3RoIG9mIHRoZSBpbmNvbWluZyBkYXRhIChgbGVuYCkgaXNuJiMzOTt0IHNtYWxsZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZmlybXdhcmUgaGVhZGVyIHN0cnVjdHVyZSBpdHNlbGYgKGBzaXplb2YoKmZ3X2hkcilgKS4gU2Vjb25kLCB2YWxpZGF0aW5nIHRoYXQgdGhlIHNlY3Rpb24gbnVtYmVyIGlzbiYjMzk7dCB6ZXJvIG9yIGV4Y2VlZHMgdGhlIGRlZmluZWQgbWF4aW11bSAoYEZXRExfU0VDVElPTl9NQVhfTlVNYCkuIEFuZCB0aGlyZCwgY2hlY2tpbmcgdGhhdCB0aGUgYmFzZSBoZWFkZXIgbGVuZ3RoIGRvZXNuJiMzOTt0IGV4Y2VlZCB0aGUgdG90YWwgYnVmZmVyIGxlbmd0aC4KClRoaXMgaXMgYWxsIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFuZCBxdWl0ZSBzb3VuZC4gVGhlc2UgY2hlY2tzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGR1cmluZyB0aGUgaGVhZGVyIHBhcnNpbmcgcHJvY2Vzcy4gVGhlIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGdvaW5nIHRvIGNhdGNoIHRob3NlIG91dC1vZi1ib3VuZHMgcmVhZHMsIHdoaWNoIGlzIHRoZSBwcmltYXJ5IGNvbmNlcm4gaGVyZS4gSSBkb24mIzM5O3Qgc2VlIGFueSBpbW1lZGlhdGUgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3Mgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGFzIGEgcmVzdWx0IG9mIHRoZXNlIGNoYW5nZXMuIEluIGZhY3QsIGl0IHNob3VsZCBlbGltaW5hdGUgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gSXQgc3RvcHMgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgZndgIGJ1ZmZlciwgd2hpY2ggaXMgdmVyeSBsaWtlbHkgdG8gYmUgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpcyBnb29kIHByYWN0aWNlLgoKTm93LCBJIGRpZCBhIHF1aWNrIG1lbnRhbCBjaGVjayB0byBlbnN1cmUgdGhhdCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBpc24mIzM5O3QgYW4gaXNzdWUuIFRoZSBgZndgIGJ1ZmZlciwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgaXMgdHlwaWNhbGx5IGhhbmRsZWQgYnkgYHJlcXVlc3RfZmlybXdhcmUoKWAuIFRoaXMgbWVhbnMgaXQmIzM5O3MgdXN1YWxseSBhbGxvY2F0ZWQgYW5kIHBvcHVsYXRlZCBiZWZvcmUgYmVpbmcgdXNlZC4gVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdXAgdG8gdGhlIHNwZWNpZmllZCBgbGVuYC4gU28gaWYgdGhlIGBsZW5gIGlzIHVuZXhwZWN0ZWRseSBzbWFsbCwgcmVhZGluZyBiZXlvbmQgaXQgaXMgY2xlYXJseSBhbiBvdXQtb2YtYm91bmRzIGlzc3VlLiBUaGF0JiMzOTtzIGEgS0FTQU4gcHJvYmxlbSwgbm90IGEgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpc3N1ZS4gVGhlcmVmb3JlLCBLTVNBTiBkb2VzbiYjMzk7dCBzZWVtIHJlbGV2YW50IGluIHRoaXMgY2FzZS4gVGhpcyBwYXRjaCBzZWVtcyB0byBiZSBvbiBzb2xpZCBncm91bmQgaW4gaXRzIGN1cnJlbnQgZm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTk6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIGZpcm13YXJlIGhlYWRlcnMgaW4gYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAuIEl0IGVuc3VyZXMgdGhhdCB0aGUgZmlybXdhcmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiB0aGUgaGVhZGVyIGFuZCBpdHMgc2VjdGlvbnMsIGFuZCB2YWxpZGF0ZXMgdGhlIHNlY3Rpb24gbnVtYmVyLiBXaXRob3V0IHRoZXNlIGNoZWNrcywgdGhlIGNvZGUgY291bGQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpcm13YXJlIGJ1ZmZlciwgd2hpY2ggY29uc3RpdHV0ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIGZpcm13YXJlIGJ1ZmZlciBpdHNlbGYgaXMgcG9wdWxhdGVkIGJ5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN1YnN5c3RlbSwgc28gcmVhZGluZyBwYXN0IGl0cyBsZW5ndGggaXMgYSBzcGF0aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgKE9PQiksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlcmVmb3JlLCBubyBLTVNBTi1zcGVjaWZpYyByaXNrcyAobGlrZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3IgaW5mby1sZWFrcykgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIGZpcm13YXJlIGhlYWRlcnMgaW4gYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAuIEl0IGVuc3VyZXMgdGhhdCB0aGUgZmlybXdhcmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiB0aGUgaGVhZGVyIGFuZCBpdHMgc2VjdGlvbnMsIGFuZCB2YWxpZGF0ZXMgdGhlIHNlY3Rpb24gbnVtYmVyLiBXaXRob3V0IHRoZXNlIGNoZWNrcywgdGhlIGNvZGUgY291bGQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpcm13YXJlIGJ1ZmZlciwgd2hpY2ggY29uc3RpdHV0ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIGZpcm13YXJlIGJ1ZmZlciBpdHNlbGYgaXMgcG9wdWxhdGVkIGJ5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN1YnN5c3RlbSwgc28gcmVhZGluZyBwYXN0IGl0cyBsZW5ndGggaXMgYSBzcGF0aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgKE9PQiksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlcmVmb3JlLCBubyBLTVNBTi1zcGVjaWZpYyByaXNrcyAobGlrZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3IgaW5mby1sZWFrcykgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxNzoxMi44OTA4MTQxOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzA5Nzc2MDAwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODlcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfODg1MUJVXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2Z3X2Rvd25sb2FkXCIsXG4gICAgXCJydHc4OV9tYWNfcGFydGlhbF9pbml0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgZmlybXdhcmUgaGVhZGVycyBpbiBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gSXQgZW5zdXJlcyB0aGF0IHRoZSBmaXJtd2FyZSBsZW5ndGggaXMgc3VmZmljaWVudCB0byBjb250YWluIHRoZSBoZWFkZXIgYW5kIGl0cyBzZWN0aW9ucywgYW5kIHZhbGlkYXRlcyB0aGUgc2VjdGlvbiBudW1iZXIuIFdpdGhvdXQgdGhlc2UgY2hlY2tzLCB0aGUgY29kZSBjb3VsZCByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgZmlybXdhcmUgYnVmZmVyLCB3aGljaCBjb25zdGl0dXRlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgZmlybXdhcmUgYnVmZmVyIGl0c2VsZiBpcyBwb3B1bGF0ZWQgYnkgdGhlIGZpcm13YXJlIGxvYWRpbmcgc3Vic3lzdGVtLCBzbyByZWFkaW5nIHBhc3QgaXRzIGxlbmd0aCBpcyBhIHNwYXRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSAoT09CKSwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGVyZWZvcmUsIG5vIEtNU0FOLXNwZWNpZmljIHJpc2tzIChsaWtlIHJlYWRpbmcgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBpbmZvLWxlYWtzKSBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpbiB0aGUgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIgKHJ0dzg5KS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdoZW4gbG9hZGluZyBmaXJtd2FyZSwgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIgdmlhIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24gb3IgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjEyLjg5MDgyMjk4NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1MjY0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzA0MGM2ZjQwZjExNTI5YWEwYWY1ZGU4ODVjMDcwNzc2NzFkNDU5YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxOToxNzoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcXG5pbmRleCAwMDk5YzVjMDNlN2E2Li5iMjk5MWJjOTNmODUyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbkBAIC0xNTYsOCArMTU2LDI0IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlXFxuIFxcdGlmICghaW5mbylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKCpmd19oZHIpKSB7XFxuK1xcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0aW5mby1cXHUwMDNlc2VjdGlvbl9udW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cXHUwMDNldzYsIEZXX0hEUl9XNl9TRUNfTlVNKTtcXG4rXFx0aWYgKCFpbmZvLVxcdTAwM2VzZWN0aW9uX251bSB8fCBpbmZvLVxcdTAwM2VzZWN0aW9uX251bSBcXHUwMDNlIEZXRExfU0VDVElPTl9NQVhfTlVNKSB7XFxuK1xcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgaW5mby1cXHUwMDNlc2VjdGlvbl9udW0pO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0YmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby1cXHUwMDNlc2VjdGlvbl9udW0pO1xcbitcXHRpZiAoYmFzZV9oZHJfbGVuIFxcdTAwM2UgbGVuKSB7XFxuK1xcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0aW5mby1cXHUwMDNlZHluYW1pY19oZHJfZW4gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cXHUwMDNldzcsIEZXX0hEUl9XN19EWU5fSERSKTtcXG4gXFx0aW5mby1cXHUwMDNlaWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVxcdTAwM2V3NywgRldfSERSX1c3X0lETUVNX1NIQVJFX01PREUpO1xcbiBcXG5AQCAtNDU1LDkgKzQ3MSwyNSBAQCBzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCB1OCAqZncsIHUzMiBsZVxcbiBcXHRpbnQgcmV0O1xcbiBcXHR1MzIgaTtcXG4gXFxuK1xcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKmZ3X2hkcikpIHtcXG4rXFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcIltFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRpbmZvLVxcdTAwM2VzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVxcdTAwM2V3NiwgRldfSERSX1YxX1c2X1NFQ19OVU0pO1xcbitcXHRpZiAoIWluZm8tXFx1MDAzZXNlY3Rpb25fbnVtIHx8IGluZm8tXFx1MDAzZXNlY3Rpb25fbnVtIFxcdTAwM2UgRldETF9TRUNUSU9OX01BWF9OVU0pIHtcXG4rXFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcIltFUlJdaW52YWxpZCBmdyBzZWN0aW9uIG51bSAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICBpbmZvLVxcdTAwM2VzZWN0aW9uX251bSk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRpbmZvLVxcdTAwM2Vkc3BfY2hlY2tzdW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cXHUwMDNldzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTtcXG4gXFx0YmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby1cXHUwMDNlc2VjdGlvbl9udW0pO1xcbitcXHRpZiAoYmFzZV9oZHJfbGVuIFxcdTAwM2UgbGVuKSB7XFxuK1xcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0aW5mby1cXHUwMDNlZHluYW1pY19oZHJfZW4gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cXHUwMDNldzcsIEZXX0hEUl9WMV9XN19EWU5fSERSKTtcXG4gXFx0aW5mby1cXHUwMDNlaWRtZW1fc2hhcmVfbW9kZSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVxcdTAwM2V3NywgRldfSERSX1YxX1c3X0lETUVNX1NIQVJFX01PREUpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6MTMuNDA3MTg2NDE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIxMjQ3MTMxNjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19kb3dubG9hZFwiLFxuICAgIFwicnR3ODlfbWFjX3BhcnRpYWxfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MDQwYzZmNDBmMTE1MjlhYTBhZjVkZTg4NWMwNzA3NzY3MWQ0NTlhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTk6MTc6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IDAwOTljNWMwM2U3YTYuLmIyOTkxYmM5M2Y4NTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuQEAgLTE1Niw4ICsxNTYsMjQgQEAgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVcbiBcdGlmICghaW5mbylcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmZ3X2hkcikpIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2VzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc2LCBGV19IRFJfVzZfU0VDX05VTSk7XG4rXHRpZiAoIWluZm8tXHUwMDNlc2VjdGlvbl9udW0gfHwgaW5mby1cdTAwM2VzZWN0aW9uX251bSBcdTAwM2UgRldETF9TRUNUSU9OX01BWF9OVU0pIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcXG5cIixcbitcdFx0XHQgIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGJhc2VfaGRyX2xlbiA9IHN0cnVjdF9zaXplKGZ3X2hkciwgc2VjdGlvbnMsIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuK1x0aWYgKGJhc2VfaGRyX2xlbiBcdTAwM2UgbGVuKSB7XG4rXHRcdHJ0dzg5X2VycihydHdkZXYsIFwiW0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGluZm8tXHUwMDNlZHluYW1pY19oZHJfZW4gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1c3X0RZTl9IRFIpO1xuIFx0aW5mby1cdTAwM2VpZG1lbV9zaGFyZV9tb2RlID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzcsIEZXX0hEUl9XN19JRE1FTV9TSEFSRV9NT0RFKTtcbiBcbkBAIC00NTUsOSArNDcxLDI1IEBAIHN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcl92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHU4ICpmdywgdTMyIGxlXG4gXHRpbnQgcmV0O1xuIFx0dTMyIGk7XG4gXG4rXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmZ3X2hkcikpIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2VzZWN0aW9uX251bSA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc2LCBGV19IRFJfVjFfVzZfU0VDX05VTSk7XG4rXHRpZiAoIWluZm8tXHUwMDNlc2VjdGlvbl9udW0gfHwgaW5mby1cdTAwM2VzZWN0aW9uX251bSBcdTAwM2UgRldETF9TRUNUSU9OX01BWF9OVU0pIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWludmFsaWQgZncgc2VjdGlvbiBudW0gJXVcXG5cIixcbitcdFx0XHQgIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGluZm8tXHUwMDNlZHNwX2NoZWNrc3VtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9WMV9XNl9EU1BfQ0hLU1VNKTtcbiBcdGJhc2VfaGRyX2xlbiA9IHN0cnVjdF9zaXplKGZ3X2hkciwgc2VjdGlvbnMsIGluZm8tXHUwMDNlc2VjdGlvbl9udW0pO1xuK1x0aWYgKGJhc2VfaGRyX2xlbiBcdTAwM2UgbGVuKSB7XG4rXHRcdHJ0dzg5X2VycihydHdkZXYsIFwiW0VSUl1mdyBoZWFkZXIgdHJ1bmNhdGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGluZm8tXHUwMDNlZHluYW1pY19oZHJfZW4gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1YxX1c3X0RZTl9IRFIpO1xuIFx0aW5mby1cdTAwM2VpZG1lbV9zaGFyZV9tb2RlID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzcsIEZXX0hEUl9WMV9XN19JRE1FTV9TSEFSRV9NT0RFKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjEzLjQwNzE4ODQ4NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxNDcxMDYwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY2AuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBib3VuZHMgY2hlY2tzIHdpdGhpbiB0aGUgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggaXMgY2hlY2tpbmcgZm9yIGEgZmV3IHRoaW5nczogaWYgdGhlIGlucHV0IGxlbmd0aCAoYGxlbmApIGlzIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZmlybXdhcmUgaGVhZGVyIChgZndfaGRyYCksIGFuZCBpZiBgaW5mby1cdTAwM2VzZWN0aW9uX251bWAgaXMgdmFsaWQsIHBsdXMgaWYgdGhlIGJhc2UgaGVhZGVyIGxlbmd0aCAoYGJhc2VfaGRyX2xlbmApIGV4Y2VlZHMgdGhlIGlucHV0IGxlbmd0aC4gVGhpcyBpcyBvYnZpb3VzbHkgYSBmaXJtd2FyZSBwYXJzaW5nIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgZ2V0cyBjYWxsZWQgZHVyaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGxpa2VseSB0aGUgYHByb2JlYCBmdW5jdGlvbi5cblxuTm93LCBteSBtaW5kIGlzIHJhY2luZy4uLiAqY2FuKiB0aGlzIGRyaXZlciwgYHJ0dzg5YCwgYmUgZnV6emVkPyBJdCdzIGEgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIsIHNvIG15IGluaXRpYWwgdGhvdWdodCBpcywgbGlrZWx5IFBDSSBvciBVU0IuIFRoZSBwYXRjaCBtYWtlcyBpdCBjbGVhciBpdCdzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlci4gU28sIFBDSSBlbXVsYXRpb24gbWlnaHQgYmUgYW4gb3B0aW9uLCBidXQgdGhhdCdzIG5vdCBzdHJhaWdodGZvcndhcmQuIFJlYWwgaGFyZHdhcmUgZHJpdmVycywgdW5sZXNzIFVTQiBvciB3aXRoIHNwZWNpZmljIFBDSSBmdXp6aW5nLCBhcmUgZ2VuZXJhbGx5IGEgcGFpbiB0byBmdXp6LlxuXG5XYWl0LCB0aG91Z2guLi4gU3l6a2FsbGVyIGhhcyBiZWVuIG1ha2luZyBzdHJpZGVzIGluIFVTQiBmdXp6aW5nICh3aXRoIGBkdW1teV9oY2RgKSwgYW5kIGhhcyBzb21lIFBDSSBzdXBwb3J0IHRvby4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgdGhpbmcgaXMgVVNCIGNvbm5lY3RlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHJ0dzg5YCBoYXMgYSBVU0IgaW50ZXJmYWNlLiBJZiBpdCBkb2VzLCB0aGVuIGZ1enppbmcgYmVjb21lcyBhIG11Y2ggbW9yZSByZWFsaXN0aWMgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6MjAuNTU0Mjk4MDI2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDc2NTIxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgwNDU0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9Mj1tZW51Y29uZmlnIFJUVzg5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6OTpcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBydHc4OS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTkwPWNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTE6XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5Mi1cXHRkZXBlbmRzIG9uIFJUVzg5X0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xOTk9Y29uZmlnIFJUVzg5X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjAwOlxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDEtXFx0ZGVwZW5kcyBvbiBSVFc4OV9DT1JFIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExX0RFQlVHRlNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX1JUVzg5X0NPUkUpICs9IHJ0dzg5X2NvcmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDpydHc4OV9jb3JlLXkgKz0gY29yZS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUtXFx0XFx0bWFjODAyMTEubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjM6cnR3ODlfY29yZS0kKENPTkZJR19QTSkgKz0gd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCKSArPSBydHc4OV84ODUxYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToyNjpydHc4OV84ODUxYi1vYmpzIDo9IHJ0dzg4NTFiLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjctXFx0XFx0ICAgIHJ0dzg4NTFiX3RhYmxlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19SVFc4OV84ODUxQkUpICs9IHJ0dzg5Xzg4NTFiZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozMjpydHc4OV84ODUxYmUtb2JqcyA6PSBydHc4ODUxYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfUlRXODlfODg1MUJVKSArPSBydHc4OV84ODUxYnUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzU6cnR3ODlfODg1MWJ1LW9ianMgOj0gcnR3ODg1MWJ1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJBKSArPSBydHc4OV84ODUyYS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozODpydHc4OV84ODUyYS1vYmpzIDo9IHJ0dzg4NTJhLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzktXFx0XFx0ICAgIHJ0dzg4NTJhX3RhYmxlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19SVFc4OV84ODUyQUUpICs9IHJ0dzg5Xzg4NTJhZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0NDpydHc4OV84ODUyYWUtb2JqcyA6PSBydHc4ODUyYWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfUlRXODlfODg1MkFVKSArPSBydHc4OV84ODUyYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDc6cnR3ODlfODg1MmF1LW9ianMgOj0gcnR3ODg1MmF1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCX0NPTU1PTikgKz0gcnR3ODlfODg1MmJfY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjUwOnJ0dzg5Xzg4NTJiX2NvbW1vbi1vYmpzIDo9IHJ0dzg4NTJiX2NvbW1vbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19SVFc4OV84ODUyQikgKz0gcnR3ODlfODg1MmIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTM6cnR3ODlfODg1MmItb2JqcyA6PSBydHc4ODUyYi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTU0LVxcdFxcdCAgICBydHc4ODUyYl90YWJsZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfUlRXODlfODg1MkJFKSArPSBydHc4OV84ODUyYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTk6cnR3ODlfODg1MmJlLW9ianMgOj0gcnR3ODg1MmJlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCVSkgKz0gcnR3ODlfODg1MmJ1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjYyOnJ0dzg5Xzg4NTJidS1vYmpzIDo9IHJ0dzg4NTJidS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19SVFc4OV84ODUyQlQpICs9IHJ0dzg5Xzg4NTJidC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2NTpydHc4OV84ODUyYnQtb2JqcyA6PSBydHc4ODUyYnQubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS02Ni1cXHRcXHQgICAgcnR3ODg1MmJ0X3Jmay5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJURSkgKz0gcnR3ODlfODg1MmJ0ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3MDpydHc4OV84ODUyYnRlLW9ianMgOj0gcnR3ODg1MmJ0ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19SVFc4OV84ODUyQykgKz0gcnR3ODlfODg1MmMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NzM6cnR3ODlfODg1MmMtb2JqcyA6PSBydHc4ODUyYy5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTc0LVxcdFxcdCAgICBydHc4ODUyY190YWJsZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3ODpvYmotJChDT05GSUdfUlRXODlfODg1MkNFKSArPSBydHc4OV84ODUyY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Nzk6cnR3ODlfODg1MmNlLW9ianMgOj0gcnR3ODg1MmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJDVSkgKz0gcnR3ODlfODg1MmN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjgyOnJ0dzg5Xzg4NTJjdS1vYmpzIDo9IHJ0dzg4NTJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg0Om9iai0kKENPTkZJR19SVFc4OV84OTIyQSkgKz0gcnR3ODlfODkyMmEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODU6cnR3ODlfODkyMmEtb2JqcyA6PSBydHc4OTIyYS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg2OlxcdFxcdCAgICBydHc4OTIyYV9yZmsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfUlRXODlfODkyMkFFKSArPSBydHc4OV84OTIyYWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODk6cnR3ODlfODkyMmFlLW9ianMgOj0gcnR3ODkyMmFlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBVSkgKz0gcnR3ODlfODkyMmF1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjkyOnJ0dzg5Xzg5MjJhdS1vYmpzIDo9IHJ0dzg5MjJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk0Om9iai0kKENPTkZJR19SVFc4OV84OTIyRCkgKz0gcnR3ODlfODkyMmQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTU6cnR3ODlfODkyMmQtb2JqcyA6PSBydHc4OTIyZC5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk2OlxcdFxcdCAgICBydHc4OTIyZF9yZmsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfUlRXODlfODkyMkRFKSArPSBydHc4OV84OTIyZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTk6cnR3ODlfODkyMmRlLW9ianMgOj0gcnR3ODkyMmRlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwMTpydHc4OV9jb3JlLSQoQ09ORklHX1JUVzg5X0RFQlVHKSArPSBkZWJ1Zy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDI6cnR3ODlfY29yZS0kKENPTkZJR19SVFc4OV9MRURTKSArPSBsZWQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTAzOnJ0dzg5X2NvcmUtJChDT05GSUdfUlRXODlfTEVEU19NQykgKz0gbGVkX21jLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwNTpvYmotJChDT05GSUdfUlRXODlfUENJKSArPSBydHc4OV9wY2kub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA2OnJ0dzg5X3BjaS15IDo9IHBjaS5vIHBjaV9iZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgKz0gcnR3ODlfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwOTpydHc4OV91c2IteSA6PSB1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTE6c3RhdGljIGNvbnN0IGd1aWRfdCBydHc4OV9ndWlkID0gR1VJRF9JTklUKDB4RDJBOEMzRTgsIDB4NEI2OSwgMHg0RjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEyLVxcdFxcdFxcdFxcdFxcdCAgIDB4ODIsIDB4QkQsIDB4RkUsIDB4ODYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNTpzdGF0aWMgdTMyIHJ0dzg5X2FjcGlfdHJhdmVyc2FsX29iamVjdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTYtXFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosIHU4ICpwb3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMi1cXHRcXHRpZiAodW5saWtlbHkob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoID09IDApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzM6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNC1cXHRcXHRcXHRcXHQgICAgXFxcIiVzOiBpbnZhbGlkIGJ1ZmZlciB0eXBlXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NC1cXHRcXHRpZiAodW5saWtlbHkob2JqLVxcdTAwM2VwYWNrYWdlLmNvdW50ID09IDApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDU6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00Ni1cXHRcXHRcXHRcXHQgICAgXFxcIiVzOiBpbnZhbGlkIHBhY2thZ2UgdHlwZVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTQ6XFx0XFx0XFx0c3ViX2xlbiA9IHJ0dzg5X2FjcGlfdHJhdmVyc2FsX29iamVjdChydHdkZXYsIGVsbSwgdG1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NS1cXHRcXHRcXHRpZiAodW5saWtlbHkoc3ViX2xlbiA9PSAwKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYxLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjI6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiB1bmhhbmRsZWQgdHlwZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjMtXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBvYmotXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzM6c3RhdGljIHUzMiBydHc4OV9hY3BpX2NhbGN1bGF0ZV9vYmplY3RfbGVuZ3RoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03NC1cXHRcXHRcXHRcXHRcXHQgICAgICBjb25zdCB1bmlvbiBhY3BpX29iamVjdCAqb2JqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTc1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3NjpcXHRyZXR1cm4gcnR3ODlfYWNwaV90cmF2ZXJzYWxfb2JqZWN0KHJ0d2Rldiwgb2JqLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Nzk6c3RhdGljIHN0cnVjdCBydHc4OV9hY3BpX2RhdGEgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjgwOnJ0dzg5X2FjcGlfZXZhbHVhdGVfbWV0aG9kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgY2hhciAqbWV0aG9kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTgxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy04Mi1cXHRzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmID0ge0FDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo4MzpcXHRzdHJ1Y3QgcnR3ODlfYWNwaV9kYXRhICpkYXRhID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy04NC1cXHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy05MC1cXHRpZiAoIXJvb3QpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo5MTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTkyLVxcdFxcdFxcdCAgICBcXFwiYWNwaSAoJXMpOiBmYWlsZWQgdG8gZ2V0IHJvb3RcXFxcblxcXCIsIG1ldGhvZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy05Ny1cXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo5ODpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTk5LVxcdFxcdFxcdCAgICBcXFwiYWNwaSAoJXMpOiBmYWlsZWQgdG8gZ2V0IGhhbmRsZVxcXFxuXFxcIiwgbWV0aG9kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEwNC1cXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMDU6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMDYtXFx0XFx0XFx0ICAgIFxcXCJhY3BpICglcyk6IGZhaWxlZCB0byBldmFsdWF0ZSBvYmplY3RcXFxcblxcXCIsIG1ldGhvZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMTAtXFx0b2JqID0gYnVmLnBvaW50ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTExOlxcdGxlbiA9IHJ0dzg5X2FjcGlfY2FsY3VsYXRlX29iamVjdF9sZW5ndGgocnR3ZGV2LCBvYmopO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTExMi1cXHRpZiAodW5saWtlbHkobGVuID09IDApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTEzOlxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTE0LVxcdFxcdFxcdCAgICBcXFwiYWNwaSAoJXMpOiBmYWlsZWQgdG8gdHJhdmVyc2FsIG9iaiBsZW5cXFxcblxcXCIsIG1ldGhvZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMjItXFx0ZGF0YS1cXHUwMDNlbGVuID0gbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEyMzpcXHRydHc4OV9hY3BpX3RyYXZlcnNhbF9vYmplY3QocnR3ZGV2LCBvYmosIGRhdGEtXFx1MDAzZWJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTMwPXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEzMTppbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3ZhbHVlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdW5pb24gYWNwaV9vYmplY3QgKm9iaixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzItXFx0XFx0XFx0ICAgICB1OCAqdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzQtXFx0aWYgKG9iai1cXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEzNTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEzNi1cXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBpbnRlZ2VyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNDQ6c3RhdGljIGJvb2wgY2hrX2FjcGlfcG9saWN5XzZnaHpfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV82Z2h6ICpwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE0NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0xNTE9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTUyOmludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHooc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE1My1cXHRcXHRcXHRcXHQgICB1bmlvbiBhY3BpX29iamVjdCAqb2JqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE1NDpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoeiAqKnBvbGljeV82Z2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE1NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTU2OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV82Z2h6ICpwdHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTU3LVxcdHUzMiBleHBlY3RfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTYwLVxcdGlmIChvYmotXFx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE2MTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2Mi1cXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxcXG5cXFwiLCBvYmotXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTY3LVxcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKnB0cikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNjg6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiBpbnZhbGlkIGJ1ZmZlciBsZW5ndGg6ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2OS1cXHRcXHRcXHQgICAgX19mdW5jX18sIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNzQtXFx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zaWcocHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE3NTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGJhZCBzaWduYXR1cmVcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNzYtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xODAtXFx0aWYgKGxlbiBcXHUwMDNjIGV4cGVjdF9sZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxODE6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiBleHBlY3QgJXUgYnV0IGxlbmd0aDogJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTgyLVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgZXhwZWN0X2xlbiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxOTA6XFx0cnR3ODlfaGV4X2R1bXAocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcInBvbGljeV82Z2h6OiBcXFwiLCAqcG9saWN5XzZnaHosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTkxLVxcdFxcdCAgICAgICBleHBlY3RfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxOTU6c3RhdGljIGJvb2wgY2hrX2FjcGlfcG9saWN5XzZnaHpfc3Bfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV82Z2h6X3NwICpwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0yMDM9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjA0OmludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfc3Aoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIwNS1cXHRcXHRcXHRcXHQgICAgICB1bmlvbiBhY3BpX29iamVjdCAqb2JqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIwNjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel9zcCAqKnBvbGljeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIwODpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel9zcCAqcHRyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIwOS1cXHR1MzIgYnVmX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxMS1cXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMTI6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTMtXFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxOC1cXHRpZiAoYnVmX2xlbiBcXHUwMDNjIHNpemVvZigqcHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIxOTpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGludmFsaWQgYnVmZmVyIGxlbmd0aDogJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjIwLVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMjUtXFx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zcF9zaWcocHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIyNjpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGJhZCBzaWduYXR1cmVcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMjctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjM0OlxcdHJ0dzg5X2hleF9kdW1wKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCJwb2xpY3lfNmdoel9zcDogXFxcIiwgKnBvbGljeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzUtXFx0XFx0ICAgICAgIHNpemVvZigqcHRyKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjM5OnN0YXRpYyBib29sIGNoa19hY3BpX3BvbGljeV82Z2h6X3ZscF9zaWcoY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHpfdmxwICpwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0yNDc9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjQ4OmludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfdmxwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNDktXFx0XFx0XFx0XFx0ICAgICAgIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjUwOlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfNmdoel92bHAgKipwb2xpY3kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjUxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNTI6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5XzZnaHpfdmxwICpwdHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjUzLVxcdHUzMiBidWZfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU1LVxcdGlmIChvYmotXFx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI1NjpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI1Ny1cXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxcXG5cXFwiLCBvYmotXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjYyLVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjYzOlxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCIlczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjQtXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBidWZfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2OS1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3ZscF9zaWcocHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI3MDpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGJhZCBzaWduYXR1cmVcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNzEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mjc4OlxcdHJ0dzg5X2hleF9kdW1wKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCJwb2xpY3lfNmdoel92bHA6IFxcXCIsICpwb2xpY3ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjc5LVxcdFxcdCAgICAgICBzaXplb2YoKnB0cikpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI4MzpzdGF0aWMgYm9vbCBjaGtfYWNwaV9wb2xpY3lfdGFzX3NpZyhjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfdGFzICpwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjkxOnN0YXRpYyBpbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Mi1cXHRcXHRcXHRcXHRcXHQgdW5pb24gYWNwaV9vYmplY3QgKm9iaixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTM6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV90YXMgKipwb2xpY3kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjk0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTU6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5X3RhcyAqcHRyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Ni1cXHR1MzIgYnVmX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5OC1cXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyOTk6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDAtXFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMwNS1cXHRpZiAoYnVmX2xlbiBcXHUwMDNjIHNpemVvZigqcHRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMwNjpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwiJXM6IGludmFsaWQgYnVmZmVyIGxlbmd0aDogJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzA3LVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMTItXFx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfdGFzX3NpZyhwdHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzEzOlxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCIlczogYmFkIHNpZ25hdHVyZVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMxNC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMjE6XFx0cnR3ODlfaGV4X2R1bXAocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcInBvbGljeV90YXM6IFxcXCIsICpwb2xpY3ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzIyLVxcdFxcdCAgICAgICBzaXplb2YoKnB0cikpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MzI2PXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMyNzpib29sIGNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3BvbGljeV9yZWdfcnVsZXMgKnApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTMzNT1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMzY6aW50IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfcmVnX3J1bGVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMzctXFx0XFx0XFx0XFx0XFx0dW5pb24gYWNwaV9vYmplY3QgKm9iaixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMzg6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHJ0dzg5X2FjcGlfcG9saWN5X3JlZ19ydWxlcyAqKnBvbGljeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMzkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0MDpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9wb2xpY3lfcmVnX3J1bGVzICpwdHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQxLVxcdHUzMiBidWZfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQzLVxcdGlmIChvYmotXFx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0NDpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0NS1cXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxcXG5cXFwiLCBvYmotXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzUwLVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzUxOlxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCIlczogaW52YWxpZCBidWZmZXIgbGVuZ3RoOiAldVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNTItXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBidWZfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1Ny1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKHB0cikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNTg6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiBiYWQgc2lnbmF0dXJlXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzU5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM2NjpcXHRydHc4OV9oZXhfZHVtcChydHdkZXYsIFJUVzg5X0RCR19BQ1BJLCBcXFwicG9saWN5X3JlZ19ydWxlczogXFxcIiwgKnBvbGljeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNjctXFx0XFx0ICAgICAgIHNpemVvZigqcHRyKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzcxOmludCBydHc4OV9hY3BpX2V2YWx1YXRlX2RzbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzcyOlxcdFxcdFxcdCAgICBlbnVtIHJ0dzg5X2FjcGlfZHNtX2Z1bmMgZnVuYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNzM6XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9hY3BpX2RzbV9yZXN1bHQgKnJlcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM3ODpcXHRvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShBQ1BJX0hBTkRMRShydHdkZXYtXFx1MDAzZWRldiksIFxcdTAwMjZydHc4OV9ndWlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM3OS1cXHRcXHRcXHRcXHQwLCBmdW5jLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zODAtXFx0aWYgKCFvYmopIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozODE6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zODItXFx0XFx0XFx0ICAgIFxcXCJhY3BpIGRzbSBmYWlsIHRvIGV2YWx1YXRlIGZ1bmM6ICVkXFxcXG5cXFwiLCBmdW5jKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM4Ni1cXHRpZiAoZnVuYyA9PSBSVFc4OV9BQ1BJX0RTTV9GVU5DXzZHX0JQKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM4NzpcXHRcXHRyZXQgPSBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHoocnR3ZGV2LCBvYmosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg4LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnJlcy1cXHUwMDNldS5wb2xpY3lfNmdoeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzg5LVxcdGVsc2UgaWYgKGZ1bmMgPT0gUlRXODlfQUNQSV9EU01fRlVOQ182R0haX1NQX1NVUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozOTA6XFx0XFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6X3NwKHJ0d2Rldiwgb2JqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM5MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVzLVxcdTAwM2V1LnBvbGljeV82Z2h6X3NwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTItXFx0ZWxzZSBpZiAoZnVuYyA9PSBSVFc4OV9BQ1BJX0RTTV9GVU5DXzZHSFpfVkxQX1NVUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozOTM6XFx0XFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV82Z2h6X3ZscChydHdkZXYsIG9iaixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZyZXMtXFx1MDAzZXUucG9saWN5XzZnaHpfdmxwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOTUtXFx0ZWxzZSBpZiAoZnVuYyA9PSBSVFc4OV9BQ1BJX0RTTV9GVU5DX1RBU19FTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozOTY6XFx0XFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV90YXMocnR3ZGV2LCBvYmosIFxcdTAwMjZyZXMtXFx1MDAzZXUucG9saWN5X3Rhcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzk3LVxcdGVsc2UgaWYgKGZ1bmMgPT0gUlRXODlfQUNQSV9EU01fRlVOQ19SRUdfUlVMRVNfRU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mzk4OlxcdFxcdHJldCA9IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfcmVnX3J1bGVzKHJ0d2Rldiwgb2JqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM5OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZyZXMtXFx1MDAzZXUucG9saWN5X3JlZ19ydWxlcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDAwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0MDE6XFx0XFx0cmV0ID0gcnR3ODlfYWNwaV9kc21fZ2V0X3ZhbHVlKHJ0d2Rldiwgb2JqLCBcXHUwMDI2cmVzLVxcdTAwM2V1LnZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDA3OmludCBydHc4OV9hY3BpX2V2YWx1YXRlX3J0YWcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQwODpcXHRcXHRcXHQgICAgIHN0cnVjdCBydHc4OV9hY3BpX3J0YWdfcmVzdWx0ICpyZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDA5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0MTA6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MTEtXFx0dTMyIGJ1Zl9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDE0OlxcdGRhdGEgPSBydHc4OV9hY3BpX2V2YWx1YXRlX21ldGhvZChydHdkZXYsIFxcXCJSVEFHXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDE1LVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQxOS1cXHRpZiAoYnVmX2xlbiAhPSBzaXplb2YoKnJlcykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0MjA6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiBpbnZhbGlkIGJ1ZmZlciBsZW5ndGg6ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQyMS1cXHRcXHRcXHQgICAgX19mdW5jX18sIGJ1Zl9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQyNjpcXHQqcmVzID0gKihzdHJ1Y3QgcnR3ODlfYWNwaV9ydGFnX3Jlc3VsdCAqKWRhdGEtXFx1MDAzZWJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDI4OlxcdHJ0dzg5X2hleF9kdW1wKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFxcXCJhbnRlbm5hX2dhaW46IFxcXCIsIHJlcywgc2l6ZW9mKCpyZXMpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDM1OmVudW0gcnR3ODlfYWNwaV9zYXJfc3ViYmFuZCBydHc4OV9hY3BpX3Nhcl9nZXRfc3ViYmFuZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDM2LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICB1MzIgY2VudGVyX2ZyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MzktXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0NDA6XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NDEtXFx0XFx0XFx0ICAgIFxcXCJjZW50ZXIgZnJlcSAldSB0byBBQ1BJIFNBUiBzdWJiYW5kIGlzIHVuaGFuZGxlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ2Ni1cXHQgKiBhbmQgUlRXODlfQUNQSV9TQVJfNkdIWl9TVUJCQU5EXzgsIHNvIGRpcmVjdGx5IGRlc2NyaWJlIGl0IHdpdGhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo0Njc6XFx0ICogc3RydWN0IHJ0dzg5XzZnaHpfc3Bhbi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NjgtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDc1OmVudW0gcnR3ODlfYmFuZCBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kX3RvX2JhbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQ3NjpcXHRcXHRcXHRcXHRcXHQgICAgICAgZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ3OS1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQ4MDpcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTQ4MS1cXHRcXHRcXHQgICAgXFxcIkFDUEkgU0FSIHN1YmJhbmQgJXUgdG8gYmFuZCBpcyB1bmhhbmRsZWRcXFxcblxcXCIsIHN1YmJhbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjUwODpzdGF0aWMgdTggcnR3ODlfYWNwaV9zYXJfcmZwYXRoX3RvX2hwX2FudGlkeChlbnVtIHJ0dzg5X3JmX3BhdGggcmZwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTE5OnN0YXRpYyB1OCBydHc4OV9hY3BpX3Nhcl9yZnBhdGhfdG9fcnRfYW50aWR4KGVudW0gcnR3ODlfcmZfcGF0aCByZnBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTUyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1MzA6c3RhdGljIHMxNiBydHc4OV9hY3BpX3Nhcl9ub3JtYWxpemVfaHBfdmFsKHU4IHYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NDQ6c3RhdGljIHMxNiBydHc4OV9hY3BpX3Nhcl9ub3JtYWxpemVfcnRfdmFsKHU4IHYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTU1Nj1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NTc6dm9pZCBydHc4OV9hY3BpX3Nhcl9sb2FkX3N0ZF9sZWdhY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU1ODpcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfc2FyX3JlY29nbml0aW9uICpyZWMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTU5LVxcdFxcdFxcdFxcdCAgICBjb25zdCB2b2lkICpjb250ZW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU2MDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg5X3Nhcl9lbnRyeV9mcm9tX2FjcGkgKmVudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01NjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU2MjpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfc3RkX2xlZ2FjeSAqcHRyID0gY29udGVudDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1NjM6XFx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTY0OlxcdGVudW0gcnR3ODlfcmZfcGF0aCBwYXRoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTU3OT1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo1ODA6dm9pZCBydHc4OV9hY3BpX3Nhcl9sb2FkX3N0ZF9oYXNfNmdoeihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTgxOlxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9yZWNvZ25pdGlvbiAqcmVjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU4Mi1cXHRcXHRcXHRcXHQgICAgICBjb25zdCB2b2lkICpjb250ZW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU4MzpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTU4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTg1OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9zdGRfaGFzXzZnaHogKnB0ciA9IGNvbnRlbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTg2OlxcdGVudW0gcnR3ODlfYWNwaV9zYXJfc3ViYmFuZCBzdWJiYW5kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjU4NzpcXHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01ODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz02MDA9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjAxOnZvaWQgcnR3ODlfYWNwaV9zYXJfbG9hZF9zbWxfbGVnYWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDI6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX3Nhcl9yZWNvZ25pdGlvbiAqcmVjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTYwMy1cXHRcXHRcXHRcXHQgICAgY29uc3Qgdm9pZCAqY29udGVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDQ6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9zYXJfZW50cnlfZnJvbV9hY3BpICplbnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjA1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MDY6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfc2FyX3NtbF9sZWdhY3kgKnB0ciA9IGNvbnRlbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjA3OlxcdGVudW0gcnR3ODlfYWNwaV9zYXJfc3ViYmFuZCBzdWJiYW5kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYwODpcXHRlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02MDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz02MjM9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjI0OnZvaWQgcnR3ODlfYWNwaV9zYXJfbG9hZF9zbWxfaGFzXzZnaHooc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYyNTpcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfcmVjb2duaXRpb24gKnJlYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02MjYtXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgdm9pZCAqY29udGVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2Mjc6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X3Nhcl9lbnRyeV9mcm9tX2FjcGkgKmVudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02Mjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYyOTpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9zYXJfc21sX2hhc182Z2h6ICpwdHIgPSBjb250ZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjYzMDpcXHRlbnVtIHJ0dzg5X2FjcGlfc2FyX3N1YmJhbmQgc3ViYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MzE6XFx0ZW51bSBydHc4OV9yZl9wYXRoIHBhdGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY0NDpzdGF0aWMgczE2IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ub3JtYWxpemVfZGVsdGEoczggZGVsdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2NTM6c3RhdGljIGVudW0gcnR3ODlfYWNwaV9nZW9fc2FyX3JlZ2RfaHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2NTQ6cnR3ODlfYWNwaV9nZW9fc2FyX3JlZ2RfY29udmVydF9ocF9pZHgoZW51bSBydHc4OV9yZWd1bGF0aW9uX3R5cGUgcmVnZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy02NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY3NTpzdGF0aWMgZW51bSBydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9ydFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjY3NjpydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9jb252ZXJ0X3J0X2lkeChlbnVtIHJ0dzg5X3JlZ3VsYXRpb25fdHlwZSByZWdkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz03MDA9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzAxOnZvaWQgcnR3ODlfYWNwaV9nZW9fc2FyX2xvYWRfYnlfaHAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwMjpcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9nZW9fc2FyX2hwX3ZhbCAqcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwMzpcXHRcXHRcXHRcXHQgICBlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aCwgczE2ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzA0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MDU6XFx0dTggYW50aWR4ID0gcnR3ODlfYWNwaV9zYXJfcmZwYXRoX3RvX2hwX2FudGlkeChwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MDY6XFx0czE2IGRlbHRhID0gcnR3ODlfYWNwaV9nZW9fc2FyX25vcm1hbGl6ZV9kZWx0YShwdHItXFx1MDAzZWRlbHRhW2FudGlkeF0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcwNzpcXHRzMTYgbWF4ID0gcnR3ODlfYWNwaV9zYXJfbm9ybWFsaXplX2hwX3ZhbChwdHItXFx1MDAzZW1heCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9NzEyPXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjcxMzp2b2lkIHJ0dzg5X2FjcGlfZ2VvX3Nhcl9sb2FkX2J5X3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MTQ6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ydF92YWwgKnB0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MTUtXFx0XFx0XFx0XFx0ICAgczE2ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNzE2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MTc6XFx0czE2IGRlbHRhID0gcnR3ODlfYWNwaV9nZW9fc2FyX25vcm1hbGl6ZV9kZWx0YShwdHItXFx1MDAzZWRlbHRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MTg6XFx0czE2IG1heCA9IHJ0dzg5X2FjcGlfc2FyX25vcm1hbGl6ZV9ydF92YWwocHRyLVxcdTAwM2VtYXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTcxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTcyMz1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MjQ6dm9pZCBydHc4OV9hY3BpX2dlb19zYXJfbG9hZF9ocF9sZWdhY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTcyNS1cXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgdm9pZCAqY29udGVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MjY6XFx0XFx0XFx0XFx0ICAgICAgIGVudW0gcnR3ODlfcmVndWxhdGlvbl90eXBlIHJlZ2QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzI3OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODlfc2FyX2VudHJ5X2Zyb21fYWNwaSAqZW50KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTcyOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzI5OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9hY3BpX2dlb19zYXJfaHBfbGVnYWN5ICpwdHIgPSBjb250ZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMDpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYWNwaV9nZW9fc2FyX2hwX2xlZ2FjeV9lbnRyeSAqcHRyX2VudDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzE6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2FjcGlfZ2VvX3Nhcl9ocF92YWwgKnB0cl9lbnRfdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMjpcXHRlbnVtIHJ0dzg5X2FjcGlfZ2VvX3Nhcl9yZWdkX2hwIGdlb19pZHggPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczMzpcXHRcXHRydHc4OV9hY3BpX2dlb19zYXJfcmVnZF9jb252ZXJ0X2hwX2lkeChyZWdkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo3MzQ6XFx0ZW51bSBydHc4OV9hY3BpX3Nhcl9zdWJiYW5kIHN1YmJhbmQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NzM1OlxcdGVudW0gcnR3ODlfcmZfcGF0aCBwYXRoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjczNjpcXHRlbnVtIHJ0dzg5X2JhbmQgYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03MzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy03NDAtXFx0Zm9yIChzdWJiYW5kID0gMDsgc3ViYmFuZCBcXHUwMDNjIE5VTV9PRl9SVFc4OV9BQ1BJX1NBUl9TVUJCQU5EOyBzdWJiYW5kKyspIHtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6MjAuNzM5MDcxMDg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUyMzg3MzU4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHJ0dzg5IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBydHc4OWAgZHJpdmVyLiBTZWVtcyBsaWtlIGl0J3MgYSBQQ0kgYW5kIFVTQiBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIHBvc3NpYmlsaXRpZXMuIEkgc2VlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGNvbmZpcm1zIHRoaXM6IGBvYmotJChDT05GSUdfUlRXODlfUENJKSArPSBydHc4OV9wY2kub2AgYW5kIGBvYmotJChDT05GSUdfUlRXODlfVVNCKSArPSBydHc4OV91c2Iub2AuIFRoZSBVU0Igc3VwcG9ydCBpcyBrZXkgaGVyZSwgYmVjYXVzZSB0aGF0IG1lYW5zIEkgY2FuIHByb2JhYmx5IGZ1enogaXQgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgZm9yIFVTQi1zcGVjaWZpYyBmdXp6aW5nLCB3aGljaCBpcyBhIGNvbW1vbiBhcHByb2FjaC5cblxuQnV0IGhhbmcgb24sIHRoZXJlJ3MgYSBwYXRjaCBtb2RpZnlpbmcgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgaW4gYGZ3LmNgLiBUaGF0IHNjcmVhbXMgZmlybXdhcmUgcGFyc2luZyB0byBtZS4gQW5kIGZpcm13YXJlLCB0aGF0IHVzdWFsbHkgaW52b2x2ZXMgYHJlcXVlc3RfZmlybXdhcmUoKWAuIE5vdywgY2FuIHN5emthbGxlciBoYW5kbGUgZnV6emluZyBmaXJtd2FyZSBsb2FkZWQgdGhpcyB3YXk/IFllYWgsIGl0J3MgZGVmaW5pdGVseSBnb3Qgc3VwcG9ydCBmb3IgZnV6emluZyBgcmVxdWVzdF9maXJtd2FyZWAsIGVpdGhlciBieSBpbnRlcmNlcHRpbmcgdGhlIGNhbGxzIG9yLCBldmVuIGJldHRlciwgYnkgcHJvdmlkaW5nIGNyYWZ0ZWQgZmlybXdhcmUgZmlsZXMgZGlyZWN0bHkuIFRoaXMgbWFrZXMgaXQgcmVhbGx5IGludGVyZXN0aW5nLlxuXG5SaWdodCwgc28gc3l6a2FsbGVyICpkb2VzKiBmdXp6IGZpcm13YXJlLiBUaGF0J3MgYSBodWdlIHdpbi4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgaWYgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGlzIGV2ZW4gcmVhY2hhYmxlLiBUaGF0J3MgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZmlybXdhcmUgcGFyc2luZyBjb2RlIGlzIGFjdHVhbGx5IGEgdmFsaWQgZnV6emluZyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NDc5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjI4LjI2Mjk0ODg5NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjEzNDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9md19oZHJfcGFyc2VyX3YwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDY9aW50IHJ0dzg5X2Z3X2NoZWNrX3JkeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndkbF9jaGVja190eXBlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNDA6c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNDEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9NTcxPXN0YXRpYyBpbnQgcnR3ODlfZndfaGRyX3BhcnNlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTg0LVxcdGNhc2UgMDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6NTg1OlxcdFxcdHJldHVybiBydHc4OV9md19oZHJfcGFyc2VyX3YwKHJ0d2RldiwgZncsIGxlbiwgaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTU4Ni1cXHRjYXNlIDE6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjI4LjM1OTA4ODUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0OTYxNjYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBDYWxsIENoYWluIG9mIGBydHc4OV9md19oZHJfcGFyc2VyYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHQgb2YgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJgLiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgYW5kIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIuIFNvLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgY2hhaW4gdXB3YXJkcy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGZ1bmN0aW9uIGNhbGwgb3JpZ2luYXRlcyBhbmQgd2hhdCBjb250ZXh0dWFsIGRhdGEgdGhlIGZ1bmN0aW9uIHVzZXMuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIGFwcHJvYWNoIHdoZW4gZGVhbGluZyB3aXRoIGZpcm13YXJlIHBhcnNpbmcsIGdpdmVuIEknbGwgd2FudCB0byBhc3Nlc3MgdGhlIGludGVncml0eSBvZiB0aGUgcGFyc2luZyBwcm9jZXNzIGFuZCB0aGUgZGF0YSB0aGF0IGdldHMgcGFzc2VkIGludG8gaXQuIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyBpcyBjcnVjaWFsLiBMZXQncyBzZWUgaG93IGRlZXAgdGhpcyByYWJiaXQgaG9sZSBnb2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQ1MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjMzLjkwODcxMDMxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzEwMjE5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9md19oZHJfcGFyc2VyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMDY9aW50IHJ0dzg5X2Z3X2NoZWNrX3JkeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndkbF9jaGVja190eXBlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNDA6c3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNDEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9NDIwPXN0YXRpYyBpbnQgX19wYXJzZV9zZWN1cml0eV9zZWN0aW9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy00NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjQ1OTpzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCB1OCAqZncsIHUzMiBsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTQ2MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV9md19iaW5faW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjU3MTpzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01NzItXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTU4NC1cXHRjYXNlIDA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjU4NTpcXHRcXHRyZXR1cm4gcnR3ODlfZndfaGRyX3BhcnNlcl92MChydHdkZXYsIGZ3LCBsZW4sIGluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy01ODYtXFx0Y2FzZSAxOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzo1ODc6XFx0XFx0cmV0dXJuIHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjEocnR3ZGV2LCBmdywgbGVuLCBpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtNTg4LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTk4OT1zdGF0aWMgaW50IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5OTY6XFx0cmV0ID0gcnR3ODlfZndfaGRyX3BhcnNlcihydHdkZXYsIGZ3X3N1aXQsIFxcdTAwMjZpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5Ny1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjMzLjk5MTgxODczNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyNjIyNzM2NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0cmFjaW5nIGBydHc4OV9md19kb3dubG9hZF9zdWl0YDpcblxuKipUcmFjaW5nIHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQqKlxuXG5BbHJpZ2h0LCBsZXQncyBzdGFydCBkaXNzZWN0aW5nIGBydHc4OV9md19kb3dubG9hZF9zdWl0YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0J3MgYmVpbmcgYWNjb21wbGlzaGVkIGhlcmUg4oCTIHdoYXQncyB0aGUgYnJvYWRlciBjb250ZXh0PyBJcyBpdCBsb2FkaW5nIGZpcm13YXJlIGZvciBhIHNwZWNpZmljIFJlYWx0ZWsgd2lyZWxlc3MgY2hpcD8gSXMgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIG9yIHNvbWV0aGluZyB0cmlnZ2VyZWQgbGF0ZXIsIHBlcmhhcHMgZHVyaW5nIGRldmljZSByZXN1bWU/IFdlIG5lZWQgdG8ga25vdyB3aGVyZSBpdCBzaXRzIGluIHRoZSBsYXJnZXIgc2NoZW1lIG9mIHRoaW5ncyB0byB1bmRlcnN0YW5kIGl0cyBzaWduaWZpY2FuY2UuXG5cbk15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgZnVuY3Rpb24ncyBkZWNsYXJhdGlvbiBhbmQgaGVhZGVyIGZpbGVzLiBMb29raW5nIGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgd2lsbCBnaXZlIHVzIGNsdWVzIGFib3V0IHBhcmFtZXRlcnMsIGFuZCBsaWtlbHksIHdoYXQgaXQncyBleHBlY3RpbmcgdG8gZG8uIFNlZWluZyB0aGUgcmV0dXJuIHZhbHVlIHR5cGUgY291bGQgdGVsbCBtZSB3aGV0aGVyIGl0J3MgYSBzdWNjZXNzL2ZhaWx1cmUgaW5kaWNhdG9yIG9yIHNvbWV0aGluZyBtb3JlIG51YW5jZWQuIFRoZSBoZWFkZXJzIHdpbGwgcmV2ZWFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzIG9yIHN0cnVjdHVyZXMsIHRoZSBkYXRhIGl0IGNvbnN1bWVzLCBhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgaXQgcG90ZW50aWFsbHkgaW50ZXJhY3RzIHdpdGguXG5cbk5leHQsIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBmdW5jdGlvbiBpcyAqdXNlZCouIFdoZXJlIGlzIGBydHc4OV9md19kb3dubG9hZF9zdWl0YCBjYWxsZWQgZnJvbT8gQnkgdHJhY2tpbmcgZG93biB0aGUgY2FsbGVycywgSSdsbCBnZXQgdGhlIGNyaXRpY2FsIGluc2lnaHQgaW50byB0aGUgdHJpZ2dlciBwb2ludHMgZm9yIHRoZSBmaXJtd2FyZSBkb3dubG9hZC4gVGhpcyB3aWxsIGVzdGFibGlzaCB0aGUgZmxvdyBvZiBleGVjdXRpb24sIGFuZCBnaXZlIG1lIGNsdWVzIGFzIHRvIHRoZSBpbnRlbnQgb2YgdGhlIGRlc2lnbmVycy4gQXJlIHRoZXJlIGFueSBlcnJvciBjaGVja3MgYXJvdW5kIHRoZSBjYWxscz8gSGFuZGxpbmcgb2YgcG90ZW50aWFsIGZhaWx1cmVzIGNhbiBiZSBqdXN0IGFzIGNydWNpYWwgYXMgdGhlIGZ1bmN0aW9uIGl0c2VsZi5cblxuVGhlbiwgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uJ3MgaW50ZXJuYWxzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0J3MgZ29pbmcgb24gKmluc2lkZSogdGhlIGZ1bmN0aW9uLiBXaGF0IHJlc291cmNlcyBpcyBpdCBhY2Nlc3Npbmc/IEFyZSB0aGVyZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zIG9yIGRlYWxsb2NhdGlvbnM/IEFyZSB0aGVyZSBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMgb3IgdGhlIFJlYWx0ZWsgY2hpcCBkaXJlY3RseT8gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIGRvd25sb2FkIHByb2Nlc3MsIGFuZCBsZWFybiBhYm91dCBhbnkgcG90ZW50aWFsIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgYW5kIHRoZSBkaWZmZXJlbnQgZG93bmxvYWQgbWV0aG9kcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgdGhlIGZpcm13YXJlIGltYWdlIGl0c2VsZiAtIHdoZXJlIGl0IGNvbWVzIGZyb20sIGhvdyBpdCdzIHByZXBhcmVkLCBhbmQgaG93IGl0J3MgdWx0aW1hdGVseSBzZW50IHRvIHRoZSBoYXJkd2FyZS5cblxuRmluYWxseSwgSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBlcnJvciBoYW5kbGluZy4gRmlybXdhcmUgZG93bmxvYWRzIGNhbiBiZSBmcmFnaWxlOyBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmFpbHVyZSBtb2RlcyBhbmQgd2hhdCBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZSBmb3IgcmVjb3Zlcnkgb3IgZmFsbGJhY2suIEVycm9yIGNvZGVzLCBsb2dnaW5nLCBhbmQgcmV0cnkgbWVjaGFuaXNtcyBhcmUgYWxsIGVzc2VudGlhbCBoZXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciByb2J1c3RuZXNzIGFuZCBkZWJ1Z2dpbmcgcHVycG9zZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTE5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6NDEuMjU0MDk3MDkxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU3ODQ2MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfZndfZG93bmxvYWRfc3VpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTk3NT1zdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5ODk6c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwMjY9aW50IF9fcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDQxOlxcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQocnR3ZGV2LCBmd19zdWl0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNDg6XFx0XFx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfc3VpdChydHdkZXYsIGZ3X3N1aXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQ5LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjQxLjM2OTg5MTA5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjk5MTk0NTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGluIHRoZSBmaXJzdCBwZXJzb24gYW5kIGFzc3VtaW5nIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBGaXJtd2FyZSBEb3dubG9hZCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBfX3J0dzg5X2Z3X2Rvd25sb2FkYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgYnJvYWRlciBXaUZpIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBmb3IgdGhpcyBSZWFsdGVrIDg5IGRldmljZS4gSSBrbm93IHRoZSBnZW5lcmFsIGZsb3csIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgdGhlIHNwZWNpZmljIHN0ZXBzLiBJJ20gcHJvYmFibHkgbG9va2luZyBhdCBhIGxvdy1sZXZlbCByb3V0aW5lLCBsaWtlbHkgY2FsbGVkIGFmdGVyIHRoZSBkZXZpY2UgaGFzIGdvbmUgdGhyb3VnaCBpdHMgaW5pdGlhbCBwb3dlci11cCBzZXF1ZW5jZSBhbmQgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJdCdzIGxpa2VseSBoYW5kbGluZyB0aGUgY3J1Y2lhbCB0YXNrIG9mIHRyYW5zZmVycmluZyB0aGUgYWN0dWFsIGZpcm13YXJlIGltYWdlIGZyb20gdGhlIGhvc3Qgc3lzdGVtIHRvIHRoZSBSZWFsdGVrIDg5IGNoaXAuXG5cbkknbSBtZW50YWxseSBwcmVwYXJpbmcgdG8gZXhhbWluZTpcblxuKiAgICoqRW50cnkgcG9pbnRzOioqIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dCB0byBhcHByZWNpYXRlIGl0cyByb2xlLiBJcyBpdCBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIG9yIHBlcmhhcHMgYSBsYXRlciBmaXJtd2FyZSB1cGRhdGUgbWVjaGFuaXNtPyBJIG5lZWQgdG8gbG9vayBmb3IgY2FsbHMgaW4gdGhlIGRyaXZlciBjb2RlLCBsaWtlbHkgd2l0aGluIHRoZSBgcnR3ODlgIGRyaXZlciBtb2R1bGUuXG4qICAgKipEYXRhIFN0cnVjdHVyZXM6KiogV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHBhc3NlZCB0byBgX19ydHc4OV9md19kb3dubG9hZGA/IEkgd2FudCB0byBrbm93IGFib3V0IHRoZSBmaXJtd2FyZSBpbWFnZSBpdHNlbGYgKHByb2JhYmx5IGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHJhdyBkYXRhKSwgcGx1cyBkZXZpY2Utc3BlY2lmaWMgaW5mb3JtYXRpb24gbGlrZSByZWdpc3RlcnMsIGFkZHJlc3NlcywgYW5kIGFueSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIGEgaGVhZGVyLlxuKiAgICoqSGFyZHdhcmUgSW50ZXJhY3Rpb246KiogVGhpcyBpcyBrZXkuIEhvdyBpcyB0aGUgZmlybXdhcmUgYWN0dWFsbHkgZ2V0dGluZyBzZW50PyBJJ20gYW50aWNpcGF0aW5nIHNvbWUgZm9ybSBvZiBidXMgY29tbXVuaWNhdGlvbi4gSXMgaXQgdXNpbmcgdGhlIHN0YW5kYXJkIFNESU8gaW50ZXJmYWNlIG9yIGEgUENJZSBsaW5rPyBBcmUgdGhlcmUgc3BlY2lmaWMgY29tbWFuZHMgb3Igc2VxdWVuY2VzIHRoYXQgYXJlIHBlcmZvcm1lZCB0byBpbml0aWF0ZSB0aGUgZG93bmxvYWQ/IEknbSBleHBlY3Rpbmcgc29tZSBraW5kIG9mIHJlZ2lzdGVyIHdyaXRlcyB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlIGZvciB0aGUgdHJhbnNmZXIsIGZvbGxvd2VkIGJ5IHRoZSBhY3R1YWwgZGF0YSB0cmFuc2ZlciwgcGVyaGFwcyB0aHJvdWdoIERNQSBvciBQSU8gZGVwZW5kaW5nIG9uIHRoZSBpbnRlcmZhY2UuXG4qICAgKipFcnJvciBIYW5kbGluZzoqKiBXaGF0J3MgdGhlIGVycm9yIGNoZWNraW5nIGxpa2U/IEhvdyBpcyB0aGUgZnVuY3Rpb24gaGFuZGxpbmcgcG90ZW50aWFsIGZhaWx1cmVzIGR1cmluZyB0aGUgdHJhbnNmZXIsIGxpa2UgY2hlY2tzdW0gZXJyb3JzLCB0aW1lb3V0IGlzc3Vlcywgb3IgYnVzIGNvbW11bmljYXRpb24gcHJvYmxlbXM/IEkgd2FudCB0byBrbm93IGFib3V0IHRoZSByb2J1c3RuZXNzIG9mIHRoZSBkb3dubG9hZCBwcm9jZWR1cmUuIElzIGl0IGNoZWNraW5nIGZvciBlcnJvcnMgb3IganVzdCBob3BpbmcgZm9yIHRoZSBiZXN0PyBXaGF0IGtpbmQgb2YgbG9nZ2luZyBhbmQgZXJyb3IgcmVwb3J0aW5nIGlzIGJlaW5nIGRvbmU/XG4qICAgKipTZWN1cml0eSAoaWYgYXBwbGljYWJsZSk6KiogRG9lcyBpdCBjb250YWluIGFueSBzZWN1cml0eSBtZWNoYW5pc20/IElzIHRoZXJlIGEgdmVyaWZpY2F0aW9uIHN0ZXA/XG4qICAgKipCb290bG9hZGVyIEludGVyYWN0aW9uOioqIEkgYXNzdW1lIHRoZSBgX19ydHc4OV9md19kb3dubG9hZGAgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGV2aWNlJ3MgYm9vdGxvYWRlci4gSG93IGRvZXMgaXQgaGFuZCBvdmVyIGNvbnRyb2wgb25jZSB0aGUgaW1hZ2UgaXMgdHJhbnNmZXJyZWQ/IERvZXMgaXQgc2VuZCBhIFwiZ29cIiBjb21tYW5kLCBvciBpcyB0aGVyZSBhIHNwZWNpZmljIHJlc2V0IHNlcXVlbmNlPyBJJ2QgbGlrZSB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBhZnRlciB0aGUgaW1hZ2UgaXMgc2VudC5cblxuVGhlIGdvYWwgaGVyZSBpcyBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2Vzcy4gS25vd2luZyBleGFjdGx5IGhvdyBpdCB3b3JrcyBpcyB2aXRhbCBmb3IgZGVidWdnaW5nIGFueSByZWxhdGVkIGlzc3VlcyBhbmQgZm9yIG9wdGltaXppbmcgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBoZWFkZXJzLCBhbmQgc3R1ZHkgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBfX3J0dzg5X2Z3X2Rvd25sb2FkYCwgdG8gaWRlbnRpZnkgYW55IHBvdGVudGlhbCBpc3N1ZXMgb3IgYXJlYXMgZm9yIGltcHJvdmVtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjUyOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjQ3LjY2OTA4ODc3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzEzNTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fcnR3ODlfZndfZG93bmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE2ODk9c3RhdGljIHZvaWQgcnR3ODlfaDJjX3BrdF9zZXRfaGRyX2Z3ZGwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3MDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3MDg6c3RhdGljIHUzMiBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3MDktXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9md19iaW5faW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzMyOnN0YXRpYyB1MzIgX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzMzLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc2MTpzdGF0aWMgaW50IF9fcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc2Mi1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzgzLVxcdFxcdGZ3X2hkciA9IChzdHJ1Y3QgcnR3ODlfZndfaGRyICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzg0OlxcdFxcdHRydW5jYXRlZCA9IF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YwKHJ0d2RldiwgaW5mbywgZndfaGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzg3LVxcdFxcdGZ3X2hkcl92MSA9IChzdHJ1Y3QgcnR3ODlfZndfaGRyX3YxICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzg4OlxcdFxcdHRydW5jYXRlZCA9IF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YxKHJ0d2RldiwgaW5mbywgZndfaGRyX3YxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4OS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xODE3PXN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfaGRyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxODI0OlxcdHJldCA9IF9fcnR3ODlfZndfZG93bmxvYWRfaGRyKHJ0d2RldiwgZndfc3VpdCwgaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4MjUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE4NDI6c3RhdGljIGludCBfX3J0dzg5X2Z3X2Rvd25sb2FkX21haW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xODQzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODlfZndfaGRyX3NlY3Rpb25faW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xOTE5PXN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfbWFpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkyOS1cXHR3aGlsZSAoc2VjdGlvbl9udW0tLSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxOTMwOlxcdFxcdHJldCA9IF9fcnR3ODlfZndfZG93bmxvYWRfbWFpbihydHdkZXYsIHNlY3Rpb25faW5mbywgaW5mby1cXHUwMDNlcGFydF9zaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTkzMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwMjU9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwMjY6aW50IF9fcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAyNy1cXHRcXHRcXHRib29sIGluY2x1ZGVfYmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjA3NT1pbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDgxLVxcdGZvciAocmV0cnkgPSAwOyByZXRyeSBcXHUwMDNjIDU7IHJldHJ5KyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA4MjpcXHRcXHRyZXQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkKHJ0d2RldiwgdHlwZSwgaW5jbHVkZV9iYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwODMtXFx0XFx0aWYgKCFyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjQ3Ljc3MTgwNzQzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjcwNzY5NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBydHc4OSBGaXJtd2FyZSBEb3dubG9hZCoqXG5cbk9rYXksIHNvIEknbSBzdGFydGluZyB3aXRoIGBydHc4OV9md19kb3dubG9hZGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBzY3JlYW1zIFwidGhlIHBsYWNlIHdoZXJlIHRoZSBmaXJtd2FyZSBnZXRzIGxvYWRlZCxcIiB3aGljaCBtZWFucyBpdCdzIHByZXR0eSBjZW50cmFsIHRvIHRoZSB3aG9sZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBzbyBteSBmaXJzdCBtb3ZlIGlzIGRlZmluaXRlbHkgdG8gZmlndXJlIG91dCBpdHMgY2FsbCBzaXRlcy4gV2hlcmUgaXMgdGhpcyB0aGluZyBiZWluZyAqY2FsbGVkKiBmcm9tPyBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgcGFpbnQgYSBtdWNoIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGFuZCBob3cgdGhpcyBkb3dubG9hZCBmaXRzIGludG8gdGhlIGJyb2FkZXIgc2NoZW1lLiBJdCdsbCBnaXZlIG1lIGNvbnRleHQg4oCTIHdoaWNoIGlzIGNyaXRpY2FsIGJlZm9yZSBJIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY1NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE3OjU2LjQ0MjU4MjE0N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3OTc4Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2Z3X2Rvd25sb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xNjg5PXN0YXRpYyB2b2lkIHJ0dzg5X2gyY19wa3Rfc2V0X2hkcl9md2RsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxNzA4OnN0YXRpYyB1MzIgX19ydHc4OV9md19kb3dubG9hZF90d2Vha19oZHJfdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xNzA5LVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODlfZndfYmluX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTczMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTczMjpzdGF0aWMgdTMyIF9fcnR3ODlfZndfZG93bmxvYWRfdHdlYWtfaGRyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTczMy1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg5X2Z3X2Jpbl9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE3NjE6c3RhdGljIGludCBfX3J0dzg5X2Z3X2Rvd25sb2FkX2hkcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3NjItXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHJ0dzg5X2Z3X3N1aXQgKmZ3X3N1aXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4My1cXHRcXHRmd19oZHIgPSAoc3RydWN0IHJ0dzg5X2Z3X2hkciAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc4NDpcXHRcXHR0cnVuY2F0ZWQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MChydHdkZXYsIGluZm8sIGZ3X2hkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTc4Ny1cXHRcXHRmd19oZHJfdjEgPSAoc3RydWN0IHJ0dzg5X2Z3X2hkcl92MSAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTc4ODpcXHRcXHR0cnVuY2F0ZWQgPSBfX3J0dzg5X2Z3X2Rvd25sb2FkX3R3ZWFrX2hkcl92MShydHdkZXYsIGluZm8sIGZ3X2hkcl92MSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE3ODktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTgxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTgxNzpzdGF0aWMgaW50IHJ0dzg5X2Z3X2Rvd25sb2FkX2hkcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4MTgtXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE4MjQ6XFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9oZHIocnR3ZGV2LCBmd19zdWl0LCBpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTgyNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTg0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTg0MjpzdGF0aWMgaW50IF9fcnR3ODlfZndfZG93bmxvYWRfbWFpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE4NDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV9md19oZHJfc2VjdGlvbl9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTE5MDY9cnR3ODlfZndfZ2V0X2Z3ZGxfY2hrX3R5cGVfZnJvbV9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxOTE5OnN0YXRpYyBpbnQgcnR3ODlfZndfZG93bmxvYWRfbWFpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5MjAtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfZndfc3VpdCAqZndfc3VpdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTI5LVxcdHdoaWxlIChzZWN0aW9uX251bS0tKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5MzA6XFx0XFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZF9tYWluKHJ0d2Rldiwgc2VjdGlvbl9pbmZvLCBpbmZvLVxcdTAwM2VwYXJ0X3NpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xOTMxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTk3NT1zdGF0aWMgdm9pZCBydHc4OV9md19kbF9mYWlsX2R1bXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTE5ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjE5ODk6c3RhdGljIGludCBydHc4OV9md19kb3dubG9hZF9zdWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTk5MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV9md19zdWl0ICpmd19zdWl0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwMTQ6XFx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfaGRyKHJ0d2RldiwgZndfc3VpdCwgXFx1MDAyNmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDE1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjAxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjAxODpcXHRyZXQgPSBydHc4OV9md19kb3dubG9hZF9tYWluKHJ0d2RldiwgZndfc3VpdCwgXFx1MDAyNmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MjAyNT1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjAyNjppbnQgX19ydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDI3LVxcdFxcdFxcdGJvb2wgaW5jbHVkZV9iYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDQxOlxcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkX3N1aXQocnR3ZGV2LCBmd19zdWl0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA0Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIwNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwNDg6XFx0XFx0cmV0ID0gcnR3ODlfZndfZG93bmxvYWRfc3VpdChydHdkZXYsIGZ3X3N1aXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDQ5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjA3NTppbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA3Ni1cXHRcXHQgICAgICBib29sIGluY2x1ZGVfYmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjA4MS1cXHRmb3IgKHJldHJ5ID0gMDsgcmV0cnkgXFx1MDAzYyA1OyByZXRyeSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIwODI6XFx0XFx0cmV0ID0gX19ydHc4OV9md19kb3dubG9hZChydHdkZXYsIHR5cGUsIGluY2x1ZGVfYmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDgzLVxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTUzNjU9cnR3ODlfZWFybHlfZndfZmVhdHVyZV9yZWNvZ25pemUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTUzNjktXFx0XFx0XFx0XFx0IGludCAqdXNlZF9md19mb3JtYXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1MzcwOmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01MzcxLVxcdFxcdCAgICAgIGJvb2wgaW5jbHVkZV9iYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQzMDc9aW50IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGluY2x1ZGVfYmIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo0MzM1OlxcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkKHJ0d2RldiwgUlRXODlfRldfTk9STUFMLCBpbmNsdWRlX2JiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzMzYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM9MTI2MD1zdGF0aWMgaW50IHJ0dzg5X3dvd19zd2FwX2Z3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB3b3cpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jLTEyOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxMjkzOlxcdHJldCA9IHJ0dzg5X2Z3X2Rvd25sb2FkKHJ0d2RldiwgZndfdHlwZSwgaW5jbHVkZV9iYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xMjk0LVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTc6NTYuNTUwNTgzOTQyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMTg2MDU4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBydHc4OSBGaXJtd2FyZSBEb3dubG9hZCoqXG5cbk9rYXksIHNvIGBydHc4OV9md19kb3dubG9hZGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzIGNhbGxlZCBmcm9tIHR3byBwbGFjZXM6IGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBhbmQgYHJ0dzg5X3dvd19zd2FwX2Z3YC4gYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgIGxvb2tzIGxpa2UgaXQncyBwcm9iYWJseSBnZXR0aW5nIHRyaWdnZXJlZCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIOKAkyBzdGFuZGFyZCBzdHVmZiBmb3Igc2V0dGluZyB0aGluZ3MgdXAuIEdpdmVuIHRoYXQgYHJ0dzg5YCBpcyBhIFVTQiBkcml2ZXIgKGFuZCBQQ0ksIGZvciB0aGF0IG1hdHRlciksIHRoYXQgaW1tZWRpYXRlbHkgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0XCIgdG8gbWUsIGVzcGVjaWFsbHkgd2l0aCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYC5cblxuQnV0IGJlZm9yZSBJIGdldCB0b28gY2FycmllZCBhd2F5IHdpdGggZnV6emluZyBzdHJhdGVnaWVzLCBJIHNob3VsZCBtYWtlIGFic29sdXRlbHkgc3VyZSB3aGVuIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBpcyBjYWxsZWQuIEl0J3MgY3J1Y2lhbCB0byBjb25maXJtIHRoYXQgaXQncyBhY3R1YWxseSBnZXR0aW5nIGludm9rZWQgZHVyaW5nIHRoZSBwcm9iZSBzZXF1ZW5jZS4gSSBuZWVkIHRvIGtub3cgZXhhY3RseSB3aGVuIHRoYXQgZmlybXdhcmUgZG93bmxvYWQgcHJvY2VzcyBpcyBraWNrZWQgb2ZmIHRvIHN0cmF0ZWdpemUgcHJvcGVybHkuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIHByb2JlIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjE2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjAzLjY2OTE5MTkzNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMDAwMzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X21hY19wYXJ0aWFsX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzI3ND1zdGF0aWMgaW50IHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03Mjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjcyODk6XFx0cmV0ID0gcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChydHdkZXYsIGZhbHNlLCBiYl9wcmVpbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQzMDU9RVhQT1JUX1NZTUJPTChydHc4OV9tYWNfZGlzYWJsZV9iYl9yZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy00MzA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDMwNzppbnQgcnR3ODlfbWFjX3BhcnRpYWxfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgaW5jbHVkZV9iYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzMDgtXFx0XFx0XFx0ICAgYm9vbCBiYl9wcmVpbml0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz00MzYwPWludCBydHc4OV9tYWNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo0MzY3OlxcdHJldCA9IHJ0dzg5X21hY19wYXJ0aWFsX2luaXQocnR3ZGV2LCBpbmNsdWRlX2JiLCBpbmNsdWRlX2JiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQzNjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmg9MTMwNT12b2lkIHJ0dzg5X21hY19wd3Jfb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuaDoxMzA2OmludCBydHc4OV9tYWNfcGFydGlhbF9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBpbmNsdWRlX2JiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmgtMTMwNy1cXHRcXHRcXHQgICBib29sIGJiX3ByZWluaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODowMy43NzIxOTkzMloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjgwMDM0MTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBgcnR3ODlgIGRyaXZlciwgYW5kIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgcHJvY2Vzcy4gUmlnaHQgbm93LCBJIHNlZSB0aGF0IGBydHc4OV9tYWNfaW5pdGAgaXMgY2FsbGVkIGJ5IGBydHc4OV9jb3JlX3N0YXJ0YC4gVGhhdCBtYWtlcyBzZW5zZSAtIE1BQyBpbml0aWFsaXphdGlvbiBoYXBwZW5pbmcgZHVyaW5nIHRoZSBjb3JlIHN0YXJ0dXAuIEFuZCAqdGhhdCogaXMgY2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBicm91Z2h0IHVwLiBUaGF04oCZcyB0aGUgdHJpZ2dlci4gSG1tLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGJldHRlciBhcyBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgb3ZlcmFsbCBkcml2ZXIgYmVoYXZpb3VyLlxuXG5XYWl0IGEgc2Vjb25kLCB0aGVyZSdzIGFub3RoZXIgcG9pbnQuIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYHJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaXMgYWxzbyBjYWxsZWQsIGFuZCB0aGF0IGhhcHBlbnMgZHVyaW5nIHRoZSBwcm9iZSBzdGFnZSwgd2hpY2ggaXMgZWFybGllci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgaW5pdGlhbGlzaW5nIHRoZSBjaGlwLCBzbyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoYXQgd29ya3MuIExldCBtZSBkZWx2ZSBpbnRvIGBydHc4OV9jaGlwX2VmdXNlX2luZm9fc2V0dXBgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBlYXJseSBzdHVmZiBpcyB3b3JraW5nIHNvIEkgY2FuIGJlIHN1cmUgdGhhdCB0aGUgbGF0ZXIgcGFydHMgd2lsbCBiZSB3b3JraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODYwMiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjA4LjQ1MjIzOTIyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MDExNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2NoaXBfZWZ1c2VfaW5mb19zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz03MjEyPWludCBydHc4OV9jb3JlX21sc3Jfc3dpdGNoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZiAqcnR3dmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzI3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3Mjc0OnN0YXRpYyBpbnQgcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03Mjc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTczODM9aW50IHJ0dzg5X2NoaXBfaW5mb19zZXR1cChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03NDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjc0MDk6XFx0cmV0ID0gcnR3ODlfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzQxMC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODowOC41NjEyNTY4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjUxMzA1NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIHJ0dzg5IEZpcm13YXJlIFBhcnNpbmcgVnVsbmVyYWJpbGl0eSBNaXRpZ2F0aW9uKipcblxuT2theSwgc28gYHJ0dzg5X2NoaXBfaW5mb19zZXR1cGAgZ2V0cyBraWNrZWQgb2ZmIGJ5IGBydHc4OV9jb3JlX2luaXRgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGJvdGggYHJ0dzg5X3BjaV9wcm9iZWAgYW5kIGBydHc4OV91c2JfcHJvYmVgLiBUaGF0IG1lYW5zLCB3aXRob3V0IGEgZG91YnQsIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGlzIGRlZmluaXRlbHkgaGFwcGVuaW5nIGR1cmluZyB0aGUgZHJpdmVyIHByb2JlIHNlcXVlbmNlLiBUaGF0J3MgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LlxuXG5UaGlzIHBhdGNoIGlzIGFkZGluZyBjcnVjaWFsIGJvdW5kcyBjaGVja2luZyB0byBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICpyZWFsKiBpbXByb3ZlbWVudCwgYXMgaXQgcHJvdGVjdHMgYWdhaW5zdCB0aGUgbmFzdHkgcG9zc2liaWxpdHkgb2Ygb3V0LW9mLWJvdW5kcyByZWFkcywgd3JpdGVzLCBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Mgd2hlbiB0aGUgcGFyc2VyIGlzIGZlZCBjb3JydXB0ZWQgb3IgbWFsZm9ybWVkIGZpcm13YXJlLiBUaGF0J3MgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBsZWFkcyB0byBjcmFzaGVzIG9yLCB3b3JzZSwgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy5cblxuU2luY2Ugc3l6a2FsbGVyIGNhbiB0YXJnZXQgZmlybXdhcmUgZmlsZXMgdGhyb3VnaCB0aGUgYHJlcXVlc3RfZmlybXdhcmVgIGludGVyZmFjZSwgdGhpcyBpcyAqYWJzb2x1dGVseSogc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIExldCBtZSBzZWUuLi4gZG9lcyB0aGlzIGRyaXZlciBhY3R1YWxseSB1c2UgYHJlcXVlc3RfZmlybXdhcmVgPyBJIG5lZWQgdG8gbG9vayBhdCBgcnR3ODlfZndfZG93bmxvYWRgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzAyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjE0LjgxMjU2NTczOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc2MDA2MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVxdWVzdF9maXJtd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTAyNj1ydHc4OV9lYXJseV9md19mZWF0dXJlX3JlY29nbml6ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTA0MzpcXHRcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmaXJtd2FyZSwgZndfbmFtZSwgZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTA0NC1cXHRcXHRpZiAoIXJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIxMDE9c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjExNi1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMTc6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODoxNC44ODAxODMwNjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2Mjk4MDExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYHJlcXVlc3RfZmlybXdhcmVgIGlzIGRlZmluaXRlbHkgaW4gcGxheSBoZXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHN5emthbGxlciBpcyBhIHZpYWJsZSByb3V0ZSDigJMgd2UgY2FuIGZlZWQgaXQgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB6ZXJvIGluIG9uIGFyZSBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gQnV0IHdhaXQsIGFyZSB0aGV5IGV2ZW4gYWNjZXNzaWJsZT8gTGV0IG1lIGNoZWNrLi4uIEFoLCB0aGV5IGFyZSBgc3RhdGljYC4gQWxyaWdodCwgbGV0J3MgY29uZmlybSB0aGF0OiBgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YwKC4uLilgIGFuZCBgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKC4uLilgLiBTbywgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVtLlxuXG5UaGUgaW1tZWRpYXRlIGNhbGxlciBpcyBgcnR3ODlfZndfaGRyX3BhcnNlcmAsIGFuZCB0aGF0J3MgYWxzbyBgc3RhdGljYC4gVGhlIG5leHQgb25lIHVwIHRoZSBjaGFpbiBpcyBgcnR3ODlfZndfZG93bmxvYWRfc3VpdGAsIGFsc28gYHN0YXRpY2AuIFRoZW4gYF9fcnR3ODlfZndfZG93bmxvYWRgLCBzdGlsbCBgc3RhdGljYC4gRmluYWxseSwgd2UgZ2V0IHRvIGBydHc4OV9md19kb3dubG9hZGAsIHdoaWNoIGlzICpub24tc3RhdGljKi4gT2theSwgc28gdGhhdCdzIHRoZSBlbnRyeSBwb2ludC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgcnR3ODlfZndfZG93bmxvYWRgIGlzIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMsIG90aGVyd2lzZSBpdCdzIHN0aWxsIGluYWNjZXNzaWJsZSBmb3IgZnV6emluZyBwdXJwb3Nlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMTQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6MjEuNTQzMTY1OTg3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY4NDA1OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IHJ0dzg5X2Z3X2Rvd25sb2FkXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwMjY9aW50IF9fcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMDc1OmludCBydHc4OV9md19kb3dubG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfZndfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMDc2LVxcdFxcdCAgICAgIGJvb2wgaW5jbHVkZV9iYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaD01MzY1PXJ0dzg5X2Vhcmx5X2Z3X2ZlYXR1cmVfcmVjb2duaXplKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaC01MzY5LVxcdFxcdFxcdFxcdCBpbnQgKnVzZWRfZndfZm9ybWF0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg6NTM3MDppbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTM3MS1cXHRcXHQgICAgICBib29sIGluY2x1ZGVfYmIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODoyMS42NTAwMTA3NDJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5NjE4NjY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipGaXJtd2FyZSBEb3dubG9hZCBJbnF1aXJ5KipcblxuQWxyaWdodCwgc28gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyBkZWZpbml0ZWx5IGEgbm9uLXN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGNsZWFyLiBOb3csIGEga2V5IHJlbGF0ZWQgcXVlc3Rpb24gcG9wcyBpbnRvIG15IGhlYWQ6IHdoYXQncyB0aGUgZGVhbCB3aXRoIGBydHc4OV9sb2FkX2Zpcm13YXJlYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgcHJldmlvdXMgZnVuY3Rpb24sIHdoYXQgaXRzIHNjb3BlIGlzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGZ1bGx5IGNvbXByZWhlbmRpbmcgdGhlIHdvcmtmbG93IGhlcmUuIEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCB3aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgZGVzaWduZWQgdG8gYWNjb21wbGlzaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExMDUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODoyNS40NDYyMDA1OTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDkxMjk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9sb2FkX2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY5NjE9aW50IHJ0dzg5X2NvcmVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MDEyLVxcdHdpcGh5X3dvcmtfaW5pdChcXHUwMDI2cnR3ZGV2LVxcdTAwM2VjYW5jZWxfNmdoel9wcm9iZV93b3JrLCBydHc4OV9jYW5jZWxfNmdoel9wcm9iZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MDEzOlxcdElOSVRfV09SSyhcXHUwMDI2cnR3ZGV2LVxcdTAwM2Vsb2FkX2Zpcm13YXJlX3dvcmssIHJ0dzg5X2xvYWRfZmlybXdhcmVfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzAxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMDkwPWludCBydHc4OV93YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMDE6c3RhdGljIGludCBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMDItXFx0XFx0XFx0XFx0ICAgc3RydWN0IHJ0dzg5X2Z3X3JlcV9pbmZvICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjEyNDp2b2lkIHJ0dzg5X2xvYWRfZmlybXdhcmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjIxMzQ6XFx0cnR3ODlfbG9hZF9maXJtd2FyZV9yZXEocnR3ZGV2LCBcXHUwMDI2cnR3ZGV2LVxcdTAwM2Vmdy5yZXEsIGZ3X25hbWUsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEzNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTM3MD1pbnQgcnR3ODlfZndfZG93bmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X2Z3X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTM3MS1cXHRcXHQgICAgICBib29sIGluY2x1ZGVfYmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1MzcyOnZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oLTUzNzMtdm9pZCBydHc4OV91bmxvYWRfZmlybXdhcmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6MjUuNTY3MTE3NzI5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODYzNjg0MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgcnR3ODkgRmlybXdhcmUgTG9hZGluZyoqXG5cblJpZ2h0LCBzbyBgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrYCBpc24ndCBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0J3MgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUuIEdvb2QgdG8ga25vdywgYnV0IHRoYXQncyBub3QgdGhlIGNvcmUgb2YgdGhlIHBhcnNpbmcuIEhtbSwgaGFuZyBvbi4uLiBgcnR3ODlfZndfZG93bmxvYWRgIC0gdGhhdCdzIHdoZXJlIHRoZSAqYWN0dWFsKiBmaXJtd2FyZSBwYXJzaW5nIGhhcHBlbnMuIEludGVyZXN0aW5nLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIExldCdzIHNlZS4uLiBJJ2xsIGNoZWNrIGhvdyBgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXFgIGFuZCBgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrYCBpbnRlcmFjdC4gQWgsIGdvdCBpdC4gYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCBjYWxscyBgcmVxdWVzdF9maXJtd2FyZWAsIHRoYXQncyB0aGUgc3RhbmRhcmQga2VybmVsIEFQSS4gTm93IHRoZSBxdWVzdGlvbiBpczogZG9lcyBgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXFgIGl0c2VsZiBkbyBhbnkgcGFyc2luZyBiZWZvcmUgaGFuZGluZyBpdCBvZmY/IEkgaGF2ZSB0byBsb29rIG1vcmUgY2xvc2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIwNjYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6MzAuMjUzNDg4NjgzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA0NTA5NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfbG9hZF9maXJtd2FyZV9yZXFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTIwOTA9aW50IHJ0dzg5X3dhaXRfZmlybXdhcmVfY29tcGxldGlvbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MjEwMTpzdGF0aWMgaW50IHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMjEwMi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcnR3ODlfZndfcmVxX2luZm8gKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0yMTI0PXZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0yMTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoyMTM0OlxcdHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxKHJ0d2RldiwgXFx1MDAyNnJ0d2Rldi1cXHUwMDNlZncucmVxLCBmd19uYW1lLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTIxMzUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODozMC40NzM5NDQ4NzRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyNDU4NjQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBydHc4OV9sb2FkX2Zpcm13YXJlX3JlcWAgZnVuY3Rpb24uIEknbSBhc3N1bWluZywgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCB0aGlzIGlzIGxpa2VseSBwYXJ0IG9mIHRoZSBSZWFsdGVrIFJUTDg4NTJBRS9CRSBkcml2ZXIgc3RhY2suIE15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlIGFyb3VuZCBob3cgaXQncyBzdHJ1Y3R1cmVkOiBpcyBpdCBhIHNpbXBsZSB3cmFwcGVyLCBvciBkb2VzIGl0IGhhbmRsZSBtb3JlIHNvcGhpc3RpY2F0ZWQgYXNwZWN0cyBvZiB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzPyBXZSdyZSBkZWFsaW5nIHdpdGggYW4gZW1iZWRkZWQgc3lzdGVtLCBzbyBJJ20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCBpdCBsaWtlbHkgY29vcmRpbmF0ZXMgd2l0aCB0aGUgaGFyZHdhcmUncyBzcGVjaWZpYyBsb2FkaW5nIG1lY2hhbmlzbXMsIHBlcmhhcHMgaW52b2x2aW5nIERNQSB0cmFuc2ZlcnMsIGludGVycnVwdCBoYW5kbGluZywgYW5kIHBvc3NpYmx5IGV2ZW4gZGlyZWN0IG1lbW9yeSBhY2Nlc3MgcmVzdHJpY3Rpb25zIGJhc2VkIG9uIHRoZSBzZWN1cml0eSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgd2hldGhlciBpdCBpbnRlcmFjdHMgd2l0aCBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIG9yIHVzZXMgYW55IFJlYWx0ZWstc3BlY2lmaWMgZmlybXdhcmUgbG9hZGluZyBwcm90b2NvbHMuIEkgd2lsbCBhbHNvIGJlIGxvb2tpbmcgdG8gY2hlY2sgaG93IGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkIGlmIGl0IGZhaWxzIHRvIGxvYWQgdGhlIGZpcm13YXJlIHN1Y2Nlc3NmdWxseS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGluZGljYXRpb24gb2YgdGhlIG92ZXJhbGwgcm9idXN0bmVzcyBvZiB0aGUgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjc3MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjM0LjQ5ODUzNDg4NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTYxODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTAxOlxcdHN0YXRpYyBpbnQgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbjIxMDI6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHJ0dzg5X2Z3X3JlcV9pbmZvICpyZXEsXFxuMjEwMzpcXHRcXHRcXHRcXHRcXHQgICBjb25zdCBjaGFyICpmd19uYW1lLCBib29sIG5vd2FybilcXG4yMTA0OlxcdHtcXG4yMTA1OlxcdFxcdGludCByZXQ7XFxuMjEwNjpcXHRcXG4yMTA3OlxcdFxcdGlmIChyZXEtXFx1MDAzZWZpcm13YXJlKSB7XFxuMjEwODpcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19GVyxcXG4yMTA5OlxcdFxcdFxcdFxcdCAgICBcXFwiZnVsbCBmaXJtd2FyZSBoYXMgYmVlbiBlYXJseSByZXF1ZXN0ZWRcXFxcblxcXCIpO1xcbjIxMTA6XFx0XFx0XFx0Y29tcGxldGVfYWxsKFxcdTAwMjZyZXEtXFx1MDAzZWNvbXBsZXRpb24pO1xcbjIxMTE6XFx0XFx0XFx0cmV0dXJuIDA7XFxuMjExMjpcXHRcXHR9XFxuMjExMzpcXHRcXG4yMTE0OlxcdFxcdGlmIChub3dhcm4pXFxuMjExNTpcXHRcXHRcXHRyZXQgPSBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybihcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbjIxMTY6XFx0XFx0ZWxzZVxcbjIxMTc6XFx0XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2cmVxLVxcdTAwM2VmaXJtd2FyZSwgZndfbmFtZSwgcnR3ZGV2LVxcdTAwM2VkZXYpO1xcbjIxMTg6XFx0XFxuMjExOTpcXHRcXHRjb21wbGV0ZV9hbGwoXFx1MDAyNnJlcS1cXHUwMDNlY29tcGxldGlvbik7XFxuMjEyMDpcXHRcXG4yMTIxOlxcdFxcdHJldHVybiByZXQ7XFxuMjEyMjpcXHR9XFxuMjEyMzpcXHRcXG4yMTI0OlxcdHZvaWQgcnR3ODlfbG9hZF9maXJtd2FyZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4yMTI1OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6MzQuNTAxNzAyMzM2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDgwODMzMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGaXJtd2FyZSBEb3dubG9hZCBQcm9jZXNzKipcblxuT2theSwgc28gYHJ0dzg5X2xvYWRfZmlybXdhcmVfcmVxYCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOyBpdCBqdXN0IGdyYWJzIHRoZSBmaXJtd2FyZSBhbmQgaGFuZGxlcyB0aGUgaW5pdGlhbCBjb21wbGV0aW9uLiBUaGUgcmVhbCBwYXJzaW5nIHdvcmssIHRoZSBoZWF2eSBsaWZ0aW5nLCB0aGF0J3MgZGVmaW5pdGVseSBoYXBwZW5pbmcgaW4gYHJ0dzg5X2Z3X2Rvd25sb2FkYC4gSXQgbWFrZXMgc2Vuc2UgaXQncyBjYWxsZWQgbGF0ZXIsIHByZXN1bWFibHkgYWZ0ZXIgZXZlcnl0aGluZydzIHNldHRsZWQgZm9sbG93aW5nIHRoZSBjb21wbGV0aW9uIHRyaWdnZXJlZCBieSBgcnR3ODlfbG9hZF9maXJtd2FyZV9yZXFgLiBTbywgYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgbG9naWMgaXMuIFJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhhdCBmdW5jdGlvbi4gV2FpdCwgaXMgaXQgZXhwb3J0ZWQ/IEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgaXQgYmVpbmcgc3RhdGljLiBOb3BlLCBpdCdzIG5vdC4gT2theSwgdGhhdCBjaGFuZ2VzIHRoaW5ncyDigJMgbGV0J3MganVzdCBjb25maXJtIGl0J3Mgbm90IGV4cG9ydGVkLCBiZWNhdXNlIHRoYXQncyBzaWduaWZpY2FudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0NTAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODo0MC41NDk3ODg3OTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzkxNTkzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qcnR3ODlfZndfZG93bmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjQwLjY1NzcxMDkxOVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTMxNzYzMDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFJlYWx0ZWsgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB3b3Jrcywgc3BlY2lmaWNhbGx5IGhvdyB0aGUgZmlybXdhcmUgZ2V0cyBkb3dubG9hZGVkLiBJJ3ZlIG5vdGljZWQgYSBmdW5jdGlvbiwgYW5kIGl0J3Mgbm90IGV4cG9ydGVkLCBidXQgaW1wb3J0YW50bHksIGl0J3MgKm5vdCogc3RhdGljLCBzbyBJIGNhbiBwcm9iYWJseSB0cmFjZSBpdC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGNoYWluIEkgc2hvdWxkIGJlIGF3YXJlIG9mP1xuXG5JIHNlZSB0aGF0IGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCBpcyBjYWxsaW5nIGBydHc4OV9md19kb3dubG9hZGAuIFRoYXQncyBnb29kLCB0aGF0J3MgdGhlIGZpcm13YXJlIGRvd25sb2FkIEknbSBpbnRlcmVzdGVkIGluISBBbmQgZnVydGhlciwgSSBub3RpY2UgdGhhdCBgcnR3ODlfbWFjX2luaXRgIGNhbGxzIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YC4gRXhwYW5kaW5nIG91dCB0aGUgY2FsbHMgZXZlbiBtb3JlLCBgcnR3ODlfY29yZV9zdGFydGAgdGhlbiBjYWxscyBgcnR3ODlfbWFjX2luaXRgLiBUaGlzIGFsbCBzZWVtcyB0byBjaGFpbiB1cCB0byBgcnR3ODlfY29yZV9zdGFydGAsIHRoYXQgbG9va3MgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgdG8gYmVnaW4gaW52ZXN0aWdhdGluZy5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlciBhbmQgdGFrZSBhIGxvb2sgYXQgYHJ0dzg5X2NvcmVfc3RhcnRgIGFuZCB0cmFjZSBldmVyeXRoaW5nIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzg5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjQ1Ljc4OTQ3NzI4NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQxMTMwOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfY29yZV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02NjU2PUVYUE9SVF9TWU1CT0wocnR3ODlfY2hlY2tfcXVpcmtzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjY2NTg6aW50IHJ0dzg5X2NvcmVfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9OTM2Mj12b2lkIHJ0dzg5X2NvbXBsZXRlX2NvbmQoc3RydWN0IHJ0dzg5X3dhaXRfaW5mbyAqd2FpdCwgdW5zaWduZWQgaW50IGNvbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtOTM2My1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHJ0dzg5X2NvbXBsZXRpb25fZGF0YSAqZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6OTM2NDppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTkzNjUtdm9pZCBydHc4OV9jb3JlX3N0b3Aoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz01Nz1zdGF0aWMgaW50IHJ0dzg5X29wc19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NjM6XFx0cmV0dXJuIHJ0dzg5X2NvcmVfc3RhcnQocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jPTI1Nz12b2lkIHJ0dzg5X2xlYXZlX2lwcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmMtMjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYzoyNjc6XFx0cmV0ID0gcnR3ODlfY29yZV9zdGFydChydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYy0yNjgtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTg6NDUuODczNTk2OTdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyODY3MTk2NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIHJ0dzg5IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGUgcnR3ODkgd2lyZWxlc3MgZHJpdmVyLiBMZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHJ0dzg5X2NvcmVfc3RhcnRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gYmVjYXVzZSBpdCdzIGNhbGxlZCBmcm9tIGBydHc4OV9vcHNfc3RhcnRgLCB3aGljaCBpcyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUaGF0IG1lYW5zIGJyaW5naW5nIHVwIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyB0aGUgdHJpZ2dlciwgbGVhZGluZyB0byBmaXJtd2FyZSBkb3dubG9hZCBhbmQgcGFyc2luZywgbWFraW5nIGl0IGEgdmVyeSBhY2Nlc3NpYmxlIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IHRhcmdldHMgYXJlIGdvaW5nIHRvIGJlIGBydHc4OV9md19kb3dubG9hZGAsIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YCwgYW5kIGBydHc4OV9jb3JlX3N0YXJ0YC4gQWN0dWFsbHksIGBydHc4OV9md19kb3dubG9hZGAgc2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3QgcGF0aC4gSSBzaG91bGQgY2hlY2sgaWYgdGhhdCdzIGFjdHVhbGx5IGluIGBmdy5jYC4gWWVwLCBpdCBpcy4gQW5kIGl0J3MgKm5vdCogc3RhdGljLCBwZXJmZWN0ISBUaGF0IG1lYW5zIGBydHc4OV9md19kb3dubG9hZGAgY2FuIGRlZmluaXRlbHkgYmUgYSBgRm9jdXNTeW1ib2xgIGZvciBzeXprYWxsZXIuXG5cbkxldCdzIHNlZSwgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gQnV0IHRob3NlIGFyZSBzdGF0aWMsIHNvIEkgY2FuJ3QgdXNlIHRoZW0gZGlyZWN0bHkgYXMgYEZvY3VzU3ltYm9sc2AuIEl0IGxvb2tzIGxpa2UgSSBjYW4gc3RpbGwgZm9jdXMgb24gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBUaGUgY29yZSBtb2R1bGUgaXMgYENPTkZJR19SVFc4OV9DT1JFYC4gV2UndmUgZ290IGJ1cyBtb2R1bGVzIHRvbzogYENPTkZJR19SVFc4OV9QQ0lgIGFuZCBgQ09ORklHX1JUVzg5X1VTQmAuIFNpbmNlIHN5emthbGxlciBjYW4gaGFuZGxlIFVTQiwgYENPTkZJR19SVFc4OV9VU0JgIGlzIGEgZ29vZCB0YXJnZXQuIEhvbGQgb24sIGBDT05GSUdfUlRXODlfVVNCYCBuZWVkcyBgQ09ORklHX1VTQmAsIHNvIGxldCdzIHZlcmlmeSB0aGF0IHF1aWNrbHkgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODI1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE5OjE4OjU2LjE2MDMyMDQxMVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMjUwMjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OV9VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTE3PWNvbmZpZyBSVFc4OV9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxODo1Ni4yNjI1NzgwMjdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY5NTQ1MTU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIGZpbGUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gTXkgaW5pdGlhbCBzY2FuIGlzIGZvciB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUuIEknbSBsb29raW5nIGZvciB0aGUgb3ZlcmFsbCBvcmdhbml6YXRpb24sIHRoZSBoaWVyYXJjaHkgb2Ygb3B0aW9ucywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byBlYWNoIG90aGVyLiBJIGV4cGVjdCB0byBzZWUgYGNvbmZpZ2Agc3RhdGVtZW50cyBkZWZpbmluZyB2YXJpb3VzIGZlYXR1cmVzLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0cy4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmFiaWxpdHkgb2YgdGhpcyBkcml2ZXIg4oCTIHdoYXQgb3B0aW9ucyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciAob3IsIG1vcmUgbGlrZWx5LCB0aGUgZGlzdHJpYnV0aW9uIG1haW50YWluZXIpLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLlxuXG5JJ2xsIGJlIGltbWVkaWF0ZWx5IGZvY3VzaW5nIG9uIHRoZSBpbXBvcnRhbnQgcGFydHMgc3VjaCBhcyB0aGUgYmFzZSBkcml2ZXIgc2VsZWN0aW9uLCB3aGljaCBzaG91bGQgYmUgbmVhciB0aGUgdG9wLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlZmluZXMgdGhlIGNvcmUgYHJ0dzg5YCBmdW5jdGlvbmFsaXR5LiBBcmUgdGhlcmUgc2VwYXJhdGUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IFJlYWx0ZWsgY2hpcHMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyPyBUaGF0J3Mgd2hhdCBJJ2QgZXhwZWN0LiBJJ20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgYHNlbGVjdGAsIGBkZXBlbmRzIG9uYCwgYW5kIGBkZWZhdWx0YCBzdGF0ZW1lbnRzLiBUaGVzZSBhcmUgbXkgYnJlYWQgYW5kIGJ1dHRlciB3aGVuIGl0IGNvbWVzIHRvIHVuZGVyc3RhbmRpbmcgaG93IGEgZHJpdmVyIGlzIHBpZWNlZCB0b2dldGhlciBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy5cblxuSSB3aWxsIGhhdmUgdG8gY2hlY2sgZm9yIHNwZWNpZmljIGhhcmR3YXJlIG9yIHJlZ3VsYXRvcnkgZG9tYWluIGNvbmZpZ3VyYXRpb25zLCBhbnkgcG93ZXItc2F2aW5nIG9wdGlvbnMsIGFuZCBhbnkgZmVhdHVyZXMgcmVsYXRlZCB0byBkZWJ1Z2dpbmcgb3IgdGVzdGluZy4gQ29uZGl0aW9uYWwgY29tcGlsYXRpb24gaXMga2V5IOKAkyBJIG5lZWQgdG8gdHJhY2sgZG93biBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgZGVmaW5lcyBhbmQgZGV0ZXJtaW5lIGlmIHRoZXkncmUgaGFuZGxlZCBncmFjZWZ1bGx5LiBBcmUgdGhlcmUgZmFsbGJhY2sgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIG9wdGlvbnMgdGhhdCBiZWNvbWUgYXZhaWxhYmxlIG9ubHkgd2hlbiBjZXJ0YWluIG90aGVyIGZlYXR1cmVzIGFyZSBlbmFibGVkPyBJJ20gYW50aWNpcGF0aW5nIHRoYXQgZGVwZW5kZW5jaWVzIHdpbGwgcGxheSBhIGh1Z2Ugcm9sZSBpbiBkZXRlcm1pbmluZyB3aGljaCBwYXJ0cyBvZiB0aGUgZHJpdmVyIGdldCBjb21waWxlZC5cblxuVGhlIHByZXNlbmNlIG9mIGBoZWxwYCBzZWN0aW9ucyBpcyBhbHdheXMgYSBnb29kIHNpZ24uIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGludGVuZGVkIHVzZSBmb3IgZWFjaCBvZiB0aGVzZSBvcHRpb25zLiBBcmUgdGhleSBzZWxmLWV4cGxhbmF0b3J5PyBPciBhcmUgdGhlcmUgY29tcGxleCB0cmFkZS1vZmZzIHRvIGNvbnNpZGVyLCBzdWNoIGFzIHBlcmZvcm1hbmNlIHZzLiBwb3dlciBjb25zdW1wdGlvbj8gSSdsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGluZmVyIHNvbWUgdGhpbmdzIGJhc2VkIG9uIHRoZSBuYW1lcyBvZiB0aGUgb3B0aW9ucywgYnV0IGNvbXByZWhlbnNpdmUgZG9jdW1lbnRhdGlvbiBpcyBhbHdheXMgd2VsY29tZS4gQW55IG9idmlvdXMgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBvciBzZWN1cml0eSBmZWF0dXJlcyBJIHdvdWxkIHdhbnQgdG8gdGFrZSBub3RlIG9mIGltbWVkaWF0ZWx5LiBVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIGZ1bGx5IGRvY3VtZW50IGhvdyB0aGUgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIHRvIG1heGltaXplIGZ1bmN0aW9uYWxpdHkgYW5kIHBlcmZvcm1hbmNlLCB3aGlsZSBtaW5pbWl6aW5nIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4MDEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOTowMS45NTgwMzI0MDlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg5XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODkuXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg5XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OV9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OV9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OV9VU0JcXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBSVFc4OV84ODUxQlxcbiAgMjQ6XFx0XFx0dHJpc3RhdGVcXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBXFxuICAyNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuICAzMDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgUlRXODlfODg1MkJcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBSVFc4OV84ODUyQlRcXG4gIDM2OlxcdFxcdHRyaXN0YXRlXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBSVFc4OV84ODUyQ1xcbiAgMzk6XFx0XFx0dHJpc3RhdGVcXG4gIDQwOlxcdFxcbiAgNDE6XFx0Y29uZmlnIFJUVzg5Xzg5MjJBXFxuICA0MjpcXHRcXHR0cmlzdGF0ZVxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgUlRXODlfODkyMkRcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBSVFc4OV84ODUxQkVcXG4gIDQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA1MDpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNTE6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAgNTI6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTFCXFxuICA1MzpcXHRcXHRoZWxwXFxuICA1NDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQkUgY2hpcHNldFxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNTc6XFx0XFxuICA1ODpcXHRjb25maWcgUlRXODlfODg1MUJVXFxuICA1OTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNjE6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDYyOlxcdFxcdHNlbGVjdCBSVFc4OV9VU0JcXG4gIDYzOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbiAgNjQ6XFx0XFx0aGVscFxcbiAgNjU6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgUlRXODlfODg1MkFFXFxuICA3MDpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNzI6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDczOlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDc0OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbiAgNzU6XFx0XFx0aGVscFxcbiAgNzY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcXG4gIDc3OlxcdFxcbiAgNzg6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDc5OlxcdFxcbiAgODA6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbiAgODE6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgODI6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDgzOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA4NDpcXHRcXHRzZWxlY3QgUlRXODlfVVNCXFxuICA4NTpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkFcXG4gIDg2OlxcdFxcdGhlbHBcXG4gIDg3OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJBVSBjaGlwc2V0XFxuICA4ODpcXHRcXG4gIDg5OlxcdFxcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDkwOlxcdFxcbiAgOTE6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbiAgOTI6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgOTM6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDk0OlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA5NTpcXHRcXHRzZWxlY3QgUlRXODlfUENJXFxuICA5NjpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkJcXG4gIDk3OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cXG4gIDk4OlxcdFxcdGhlbHBcXG4gIDk5OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJCRSBjaGlwc2V0XFxuIDEwMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTk6MDEuOTU4MTI1ODU5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTIwODkxMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSZWFsdGVrIFJUVzg5IERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBnb2FsIGlzIHRvIHNldCB1cCBmdXp6aW5nIGZvciB0aGUgUmVhbHRlayBSVFc4OSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIG5ldyBib3VuZHMgY2hlY2tzIGludHJvZHVjZWQgaW4gdGhlIHBhdGNoLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIGNvZGUgaXMgaGl0IGR1cmluZyBmaXJtd2FyZSBsb2FkaW5nLCB3aGljaCBtYWtlcyBpdCBhbiBleGNlbGxlbnQgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBjYW4gcmVhY2ggaXQgdmlhIGByZXF1ZXN0X2Zpcm13YXJlYCBpbnRlcmNlcHRpb24gb3IsIGV2ZW4gYmV0dGVyLCBVU0IgZnV6emluZy5cblxuSSd2ZSBkZXRlcm1pbmVkIHRoYXQgdGhlIGtleSBjb25maWd1cmF0aW9ucyBuZWVkZWQgYXJlIGBSVFc4OWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MUJVYCwgYW5kIGBNQUM4MDIxMWAuIFdlIG5lZWQgYE1BQzgwMjExYCBiZWNhdXNlIGBSVFc4OWAgZGVwZW5kcyBvbiBpdC4gSSBhbHNvIGNvbmZpcm1lZCB0aGF0IGluY2x1ZGluZyBgUlRXODlfODg1MkFVYCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYCwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIFRoZSBvdGhlciBVU0IgdmFyaWFudCBpcyBhbHNvIGluY2x1ZGVkIGZvciBmbGV4aWJpbGl0eS5cblxuVGhlIG1haW4gZnVuY3Rpb25zIEknbGwgYmUgZm9jdXNpbmcgb24gZm9yIGZ1enppbmcgYXJlIGBydHc4OV9md19kb3dubG9hZGAgYW5kIGBydHc4OV9tYWNfcGFydGlhbF9pbml0YC4gYHJ0dzg5X2Z3X2Rvd25sb2FkYCBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgZm9yIGZpcm13YXJlIGRvd25sb2FkaW5nIGFuZCBwYXJzaW5nLCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgIGlzIGl0cyBjYWxsZXIuIENydWNpYWxseSwgbmVpdGhlciBpcyBzdGF0aWMgb3IgaW5saW5lZCwgbWFraW5nIHRoZW0gaWRlYWwgc3ltYm9scyB0byB0YXJnZXQuIGBydHc4OV9md19kb3dubG9hZGAgaXMgaW4gYGZ3LmNgLCBhbmQgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgIGlzIGluIGBtYWMuY2AuIFRoZSBwYXRjaCBtb2RpZmllcyBmdW5jdGlvbnMgcmVsYXRlZCB0byBmaXJtd2FyZSBoZWFkZXIgcGFyc2luZywgYW5kIHdoaWxlIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGBydHc4OV9md19oZHJfcGFyc2VyX3YwYCBhbmQgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjFgICptaWdodCogYmUgYWNjZXNzaWJsZSwgaXQgaXMgbW9yZSBzdHJhaWdodGZvcndhcmQgYW5kIHNhZmVyIHRvIHVzZSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXMgdGhlIGVudHJ5IHBvaW50cy5cblxuSSd2ZSB2ZXJpZmllZCB0aGF0IGBydHc4OV9md19kb3dubG9hZGAgaXMgaW5kZWVkIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQgaXMgaGl0IGR1cmluZyBmaXJtd2FyZSBkb3dubG9hZCBhbmQgdGhhdCBpdCBpcyB0aGUgbW9zdCBzdWl0YWJsZSBzdGFydGluZyBwb2ludC5cblxuVGhlcmVmb3JlLCBteSBjb25maWd1cmF0aW9uIGlzOlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IGB0cnVlYFxuKiAgIGBSZWFzb25pbmdgOiBCb3VuZHMgY2hlY2tpbmcgb24gUmVhbHRlayBmaXJtd2FyZSBwYXJzaW5nIGlzIHZ1bG5lcmFibGUgdG8gZnV6emluZy5cbiogICBgRm9jdXNTeW1ib2xzYDogYHJ0dzg5X2Z3X2Rvd25sb2FkYCwgYHJ0dzg5X21hY19wYXJ0aWFsX2luaXRgXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgUlRXODlgLCBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTFCVWAsIGBNQUM4MDIxMWBcbkknbSBub3cgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzcxMywiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOToxNC40NzkwMjA5NjZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUyOTM1NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19kb3dubG9hZFwiLFxuICAgIFwicnR3ODlfbWFjX3BhcnRpYWxfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19kb3dubG9hZFwiLFxuICAgIFwicnR3ODlfbWFjX3BhcnRpYWxfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIFJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgZHJpdmVyIChydHc4OSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgZmlybXdhcmUsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyIHZpYSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIG9yIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOToxNC42NTQzMjE5ODlaIiwiU2VxIjozOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMTQwODE0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOToxNC42NTQ5NTEwODlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTIxMzQ0NjI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgYW5kIHZhbGlkYXRpb24gZm9yIGZpcm13YXJlIGhlYWRlcnMgaW4gYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAuIEl0IGVuc3VyZXMgdGhhdCB0aGUgZmlybXdhcmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiB0aGUgaGVhZGVyIGFuZCBpdHMgc2VjdGlvbnMsIGFuZCB2YWxpZGF0ZXMgdGhlIHNlY3Rpb24gbnVtYmVyLiBXaXRob3V0IHRoZXNlIGNoZWNrcywgdGhlIGNvZGUgY291bGQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpcm13YXJlIGJ1ZmZlciwgd2hpY2ggY29uc3RpdHV0ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIGZpcm13YXJlIGJ1ZmZlciBpdHNlbGYgaXMgcG9wdWxhdGVkIGJ5IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN1YnN5c3RlbSwgc28gcmVhZGluZyBwYXN0IGl0cyBsZW5ndGggaXMgYSBzcGF0aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgKE9PQiksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlcmVmb3JlLCBubyBLTVNBTi1zcGVjaWZpYyByaXNrcyAobGlrZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3IgaW5mby1sZWFrcykgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNDBjNmY0MGYxMTUyOWFhMGFmNWRlODg1YzA3MDc3NjcxZDQ1OWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxOToxNzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuaW5kZXggMDA5OWM1YzAzZTdhNi4uYjI5OTFiYzkzZjg1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5AQCAtMTU2LDggKzE1NiwyNCBAQCBzdGF0aWMgaW50IHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCB1OCAqZncsIHUzMiBsZVxuIFx0aWYgKCFpbmZvKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqZndfaGRyKSkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpbmZvLVx1MDAzZXNlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9XNl9TRUNfTlVNKTtcbitcdGlmICghaW5mby1cdTAwM2VzZWN0aW9uX251bSB8fCBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtIFx1MDAzZSBGV0RMX1NFQ1RJT05fTUFYX05VTSkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdaW52YWxpZCBmdyBzZWN0aW9uIG51bSAldVxcblwiLFxuK1x0XHRcdCAgaW5mby1cdTAwM2VzZWN0aW9uX251bSk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0YmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby1cdTAwM2VzZWN0aW9uX251bSk7XG4rXHRpZiAoYmFzZV9oZHJfbGVuIFx1MDAzZSBsZW4pIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2VkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc3LCBGV19IRFJfVzdfRFlOX0hEUik7XG4gXHRpbmZvLVx1MDAzZWlkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1c3X0lETUVNX1NIQVJFX01PREUpO1xuIFxuQEAgLTQ1NSw5ICs0NzEsMjUgQEAgc3RhdGljIGludCBydHc4OV9md19oZHJfcGFyc2VyX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3QgdTggKmZ3LCB1MzIgbGVcbiBcdGludCByZXQ7XG4gXHR1MzIgaTtcbiBcbitcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqZndfaGRyKSkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdZncgaGVhZGVyIHRydW5jYXRlZFxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpbmZvLVx1MDAzZXNlY3Rpb25fbnVtID0gbGUzMl9nZXRfYml0cyhmd19oZHItXHUwMDNldzYsIEZXX0hEUl9WMV9XNl9TRUNfTlVNKTtcbitcdGlmICghaW5mby1cdTAwM2VzZWN0aW9uX251bSB8fCBpbmZvLVx1MDAzZXNlY3Rpb25fbnVtIFx1MDAzZSBGV0RMX1NFQ1RJT05fTUFYX05VTSkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcIltFUlJdaW52YWxpZCBmdyBzZWN0aW9uIG51bSAldVxcblwiLFxuK1x0XHRcdCAgaW5mby1cdTAwM2VzZWN0aW9uX251bSk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2Vkc3BfY2hlY2tzdW0gPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NiwgRldfSERSX1YxX1c2X0RTUF9DSEtTVU0pO1xuIFx0YmFzZV9oZHJfbGVuID0gc3RydWN0X3NpemUoZndfaGRyLCBzZWN0aW9ucywgaW5mby1cdTAwM2VzZWN0aW9uX251bSk7XG4rXHRpZiAoYmFzZV9oZHJfbGVuIFx1MDAzZSBsZW4pIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJbRVJSXWZ3IGhlYWRlciB0cnVuY2F0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aW5mby1cdTAwM2VkeW5hbWljX2hkcl9lbiA9IGxlMzJfZ2V0X2JpdHMoZndfaGRyLVx1MDAzZXc3LCBGV19IRFJfVjFfVzdfRFlOX0hEUik7XG4gXHRpbmZvLVx1MDAzZWlkbWVtX3NoYXJlX21vZGUgPSBsZTMyX2dldF9iaXRzKGZ3X2hkci1cdTAwM2V3NywgRldfSERSX1YxX1c3X0lETUVNX1NIQVJFX01PREUpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTk6MTk6MTQuNjU0OTUyMTQ5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyMTM0MTUxNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRmlybXdhcmUgSGVhZGVyIFBhcnNpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJ3MgbXkgdGFrZS4gSXQncyBmb2N1c2VkIG9uIGJvbHN0ZXJpbmcgdGhlIHNlY3VyaXR5IG9mIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGZpcm13YXJlIHBhcnNpbmcsIHNwZWNpZmljYWxseSBpbiB0aGUgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjBgIGFuZCBgcnR3ODlfZndfaGRyX3BhcnNlcl92MWAgZnVuY3Rpb25zIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBmaXJtd2FyZSBoZWFkZXIgaGFuZGxpbmcuXG5cbkVzc2VudGlhbGx5LCB0aGV5J3JlIGltcGxlbWVudGluZyBjaGVja3MgZm9yIHRocmVlIGtleSBjb25kaXRpb25zOiBGaXJzdCwgbWFraW5nIHN1cmUgdGhlIGxlbmd0aCBvZiB0aGUgaW5jb21pbmcgZGF0YSAoYGxlbmApIGlzbid0IHNtYWxsZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZmlybXdhcmUgaGVhZGVyIHN0cnVjdHVyZSBpdHNlbGYgKGBzaXplb2YoKmZ3X2hkcilgKS4gU2Vjb25kLCB2YWxpZGF0aW5nIHRoYXQgdGhlIHNlY3Rpb24gbnVtYmVyIGlzbid0IHplcm8gb3IgZXhjZWVkcyB0aGUgZGVmaW5lZCBtYXhpbXVtIChgRldETF9TRUNUSU9OX01BWF9OVU1gKS4gQW5kIHRoaXJkLCBjaGVja2luZyB0aGF0IHRoZSBiYXNlIGhlYWRlciBsZW5ndGggZG9lc24ndCBleGNlZWQgdGhlIHRvdGFsIGJ1ZmZlciBsZW5ndGguXG5cblRoaXMgaXMgYWxsIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFuZCBxdWl0ZSBzb3VuZC4gVGhlc2UgY2hlY2tzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIGR1cmluZyB0aGUgaGVhZGVyIHBhcnNpbmcgcHJvY2Vzcy4gVGhlIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGdvaW5nIHRvIGNhdGNoIHRob3NlIG91dC1vZi1ib3VuZHMgcmVhZHMsIHdoaWNoIGlzIHRoZSBwcmltYXJ5IGNvbmNlcm4gaGVyZS4gSSBkb24ndCBzZWUgYW55IGltbWVkaWF0ZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBiZWluZyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYXMgYSByZXN1bHQgb2YgdGhlc2UgY2hhbmdlcy4gSW4gZmFjdCwgaXQgc2hvdWxkIGVsaW1pbmF0ZSBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBJdCBzdG9wcyByZWFkcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGBmd2AgYnVmZmVyLCB3aGljaCBpcyB2ZXJ5IGxpa2VseSB0byBiZSBhbiBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGlzIGdvb2QgcHJhY3RpY2UuXG5cbk5vdywgSSBkaWQgYSBxdWljayBtZW50YWwgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaXNuJ3QgYW4gaXNzdWUuIFRoZSBgZndgIGJ1ZmZlciwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgaXMgdHlwaWNhbGx5IGhhbmRsZWQgYnkgYHJlcXVlc3RfZmlybXdhcmUoKWAuIFRoaXMgbWVhbnMgaXQncyB1c3VhbGx5IGFsbG9jYXRlZCBhbmQgcG9wdWxhdGVkIGJlZm9yZSBiZWluZyB1c2VkLiBUaGUgY3J1Y2lhbCB0aGluZyBoZXJlIGlzIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxseSBpbml0aWFsaXplZCB1cCB0byB0aGUgc3BlY2lmaWVkIGBsZW5gLiBTbyBpZiB0aGUgYGxlbmAgaXMgdW5leHBlY3RlZGx5IHNtYWxsLCByZWFkaW5nIGJleW9uZCBpdCBpcyBjbGVhcmx5IGFuIG91dC1vZi1ib3VuZHMgaXNzdWUuIFRoYXQncyBhIEtBU0FOIHByb2JsZW0sIG5vdCBhIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgaXNzdWUuIFRoZXJlZm9yZSwgS01TQU4gZG9lc24ndCBzZWVtIHJlbGV2YW50IGluIHRoaXMgY2FzZS4gVGhpcyBwYXRjaCBzZWVtcyB0byBiZSBvbiBzb2xpZCBncm91bmQgaW4gaXRzIGN1cnJlbnQgZm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyOCwiT3V0cHV0VG9rZW5zIjoxOTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxOToxOToyMy44NjgzNzE2MjNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIGZvciBmaXJtd2FyZSBoZWFkZXJzIGluIGBydHc4OV9md19oZHJfcGFyc2VyX3YwYCBhbmQgYHJ0dzg5X2Z3X2hkcl9wYXJzZXJfdjFgLiBJdCBlbnN1cmVzIHRoYXQgdGhlIGZpcm13YXJlIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvbnRhaW4gdGhlIGhlYWRlciBhbmQgaXRzIHNlY3Rpb25zLCBhbmQgdmFsaWRhdGVzIHRoZSBzZWN0aW9uIG51bWJlci4gV2l0aG91dCB0aGVzZSBjaGVja3MsIHRoZSBjb2RlIGNvdWxkIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBmaXJtd2FyZSBidWZmZXIsIHdoaWNoIGNvbnN0aXR1dGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBmaXJtd2FyZSBidWZmZXIgaXRzZWxmIGlzIHBvcHVsYXRlZCBieSB0aGUgZmlybXdhcmUgbG9hZGluZyBzdWJzeXN0ZW0sIHNvIHJlYWRpbmcgcGFzdCBpdHMgbGVuZ3RoIGlzIGEgc3BhdGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIChPT0IpLCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZXJlZm9yZSwgbm8gS01TQU4tc3BlY2lmaWMgcmlza3MgKGxpa2UgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IG9yIGluZm8tbGVha3MpIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBhbmQgdmFsaWRhdGlvbiBmb3IgZmlybXdhcmUgaGVhZGVycyBpbiBgcnR3ODlfZndfaGRyX3BhcnNlcl92MGAgYW5kIGBydHc4OV9md19oZHJfcGFyc2VyX3YxYC4gSXQgZW5zdXJlcyB0aGF0IHRoZSBmaXJtd2FyZSBsZW5ndGggaXMgc3VmZmljaWVudCB0byBjb250YWluIHRoZSBoZWFkZXIgYW5kIGl0cyBzZWN0aW9ucywgYW5kIHZhbGlkYXRlcyB0aGUgc2VjdGlvbiBudW1iZXIuIFdpdGhvdXQgdGhlc2UgY2hlY2tzLCB0aGUgY29kZSBjb3VsZCByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgZmlybXdhcmUgYnVmZmVyLCB3aGljaCBjb25zdGl0dXRlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgZmlybXdhcmUgYnVmZmVyIGl0c2VsZiBpcyBwb3B1bGF0ZWQgYnkgdGhlIGZpcm13YXJlIGxvYWRpbmcgc3Vic3lzdGVtLCBzbyByZWFkaW5nIHBhc3QgaXRzIGxlbmd0aCBpcyBhIHNwYXRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSAoT09CKSwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGVyZWZvcmUsIG5vIEtNU0FOLXNwZWNpZmljIHJpc2tzIChsaWtlIHJlYWRpbmcgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBpbmZvLWxlYWtzKSBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[1] Phase: Succeeded StartedAt: 2026-08-25 19:19:35 +0000 UTC FinishedAt: 2026-08-25 19:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-25 19:19:35 +0000 UTC FinishedAt: 2026-08-25 19:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2] Phase: Succeeded StartedAt: 2026-08-25 19:19:35 +0000 UTC FinishedAt: 2026-08-25 20:13:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-25 19:19:35 +0000 UTC FinishedAt: 2026-08-25 20:13:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-25 19:19:35 +0000 UTC FinishedAt: 2026-08-25 19:20:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-25 19:19:35 +0000 UTC FinishedAt: 2026-08-25 19:19:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowlbtwf/series-workflowlbtwf-convert-artifact-323045748/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-25 19:20:05 +0000 UTC FinishedAt: 2026-08-25 19:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-25 19:20:05 +0000 UTC FinishedAt: 2026-08-25 19:40:41 +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:*cb0773b0-a47d-471b-bc27-86fb92c7c475,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-workflowlbtwf/series-workflowlbtwf-convert-artifact-323045748/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": "e43f5730-e35d-4728-88c1-425be6e41b9a", "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-workflowlbtwf/series-workflowlbtwf-build-action-216739442/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-25 19:20:05 +0000 UTC FinishedAt: 2026-08-25 19:40:31 +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:*cb0773b0-a47d-471b-bc27-86fb92c7c475,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-workflowlbtwf/series-workflowlbtwf-convert-artifact-323045748/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": "e43f5730-e35d-4728-88c1-425be6e41b9a", "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-workflowlbtwf/series-workflowlbtwf-build-action-216739442/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-25 19:40:41 +0000 UTC FinishedAt: 2026-08-25 19:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-25 19:40:41 +0000 UTC FinishedAt: 2026-08-25 19:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-25 19:40:41 +0000 UTC FinishedAt: 2026-08-25 19:41:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-25 19:40:41 +0000 UTC FinishedAt: 2026-08-25 19:40:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowlbtwf/series-workflowlbtwf-convert-artifact-108462131/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-25 19:41:02 +0000 UTC FinishedAt: 2026-08-25 19:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-25 19:41:02 +0000 UTC FinishedAt: 2026-08-25 19:42:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e43f5730-e35d-4728-88c1-425be6e41b9a,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-workflowlbtwf/series-workflowlbtwf-build-action-216739442/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-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-25 19:42:39 +0000 UTC FinishedAt: 2026-08-25 19:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-25 19:42:39 +0000 UTC FinishedAt: 2026-08-25 19:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-25 19:42:39 +0000 UTC FinishedAt: 2026-08-25 20:03:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-25 19:42:39 +0000 UTC FinishedAt: 2026-08-25 20:03:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*cb0773b0-a47d-471b-bc27-86fb92c7c475,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-workflowlbtwf/series-workflowlbtwf-convert-artifact-108462131/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": "e4575f7e-f7e5-49ba-8d12-d2184b42081d", "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-workflowlbtwf/series-workflowlbtwf-build-action-3059222759/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-25 19:42:39 +0000 UTC FinishedAt: 2026-08-25 20:03:00 +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:*cb0773b0-a47d-471b-bc27-86fb92c7c475,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-workflowlbtwf/series-workflowlbtwf-convert-artifact-108462131/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": "e4575f7e-f7e5-49ba-8d12-d2184b42081d", "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-workflowlbtwf/series-workflowlbtwf-build-action-3059222759/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-25 20:03:10 +0000 UTC FinishedAt: 2026-08-25 20:03:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-25 20:03:10 +0000 UTC FinishedAt: 2026-08-25 20:03:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-25 20:03:10 +0000 UTC FinishedAt: 2026-08-25 20:05:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-25 20:03:10 +0000 UTC FinishedAt: 2026-08-25 20:05:22 +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:*e4575f7e-f7e5-49ba-8d12-d2184b42081d,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-workflowlbtwf/series-workflowlbtwf-build-action-3059222759/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-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-25 20:05:32 +0000 UTC FinishedAt: 2026-08-25 20:13:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-25 20:05:32 +0000 UTC FinishedAt: 2026-08-25 20:13:57 +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":["rtw89_fw_download","rtw89_mac_partial_init"],"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:*e43f5730-e35d-4728-88c1-425be6e41b9a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e4575f7e-f7e5-49ba-8d12-d2184b42081d,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-workflowlbtwf/series-workflowlbtwf-build-action-216739442/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-workflowlbtwf/series-workflowlbtwf-build-action-3059222759/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-25 20:05:32 +0000 UTC FinishedAt: 2026-08-25 20:05:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-25 20:05:32 +0000 UTC FinishedAt: 2026-08-25 20:05:36 +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":["rtw89_fw_download","rtw89_mac_partial_init"],"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-workflowlbtwf/series-workflowlbtwf-convert-artifact-400258604/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-25 20:05:32 +0000 UTC FinishedAt: 2026-08-25 20:05:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-25 20:05:32 +0000 UTC FinishedAt: 2026-08-25 20:05:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-25 20:05:32 +0000 UTC FinishedAt: 2026-08-25 20:05:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-25 20:05:42 +0000 UTC FinishedAt: 2026-08-25 20:13:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbtwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_fw_download","rtw89_mac_partial_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_8852AU","RTW89_8851BU","MAC80211"],"series_id":"226c4bf7-76bc-4ca6-afd5-2250bf9becf2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-25 20:05:42 +0000 UTC FinishedAt: 2026-08-25 20:13:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e43f5730-e35d-4728-88c1-425be6e41b9a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e4575f7e-f7e5-49ba-8d12-d2184b42081d,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-workflowlbtwf/series-workflowlbtwf-build-action-216739442/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-workflowlbtwf/series-workflowlbtwf-build-action-3059222759/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-workflowlbtwf/series-workflowlbtwf-convert-artifact-400258604/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,}