Name: series-workflow9kg67 Phase: Succeeded StartedAt: 2026-09-02 13:46:24 +0000 UTC FinishedAt: 2026-09-02 15:07:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[0] Phase: Succeeded StartedAt: 2026-09-02 13:46:24 +0000 UTC FinishedAt: 2026-09-02 14:26:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 13:46:24 +0000 UTC FinishedAt: 2026-09-02 14:26:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b78070aaef63512688aebfbc82365ef9d6660f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW88", "RTW88_CORE", "RTW88_USB", "RTW88_8822BU", "RTW88_8822CU", "RTW88_8723DU", "RTW88_8821CU", "RTW88_8821AU", "RTW88_8812AU", "RTW88_8814AU", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b78070aaef63512688aebfbc82365ef9d6660f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW88", "RTW88_CORE", "RTW88_USB", "RTW88_8822BU", "RTW88_8822CU", "RTW88_8723DU", "RTW88_8821CU", "RTW88_8821AU", "RTW88_8812AU", "RTW88_8814AU", "MAC80211", "USB" ], "series_id": "440d1eb4-d512-48e4-a4f0-8bcb2fac961e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw_chip_info_setup", "rtw_usb_probe" ], "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+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OCYjMzQ7LAogICAgJiMzNDtSVFc4OF9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg4X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQlUmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMkNVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg3MjNEVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIxQ1UmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMUFVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODE0QVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3X2NoaXBfaW5mb19zZXR1cCYjMzQ7LAogICAgJiMzNDtydHdfdXNiX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBtb2RpZmllcyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCBzbyB0aGF0IHdoZW4gYW4gaW52YWxpZCBNQUMgYWRkcmVzcyBpcyByZWFkIGZyb20gdGhlIGVmdXNlLCB0aGUgZHJpdmVyIGF0dGVtcHRzIHRvIGZldGNoIGEgdmFsaWQgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHRyZWUgLyBmaXJtd2FyZSBub2RlIG9yIE5WTUVNIHVzaW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYGV0aF9yYW5kb21fYWRkcigpYC4gQm90aCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCAob24gc3VjY2VzcykgYW5kIGBldGhfcmFuZG9tX2FkZHIoKWAgKG9uIGZhbGxiYWNrKSBjb21wbGV0ZWx5IG92ZXJ3cml0ZSBhbmQgaW5pdGlhbGl6ZSBhbGwgYEVUSF9BTEVOYCBieXRlcyBvZiBgZWZ1c2UtXHUwMDNlYWRkcmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaCBjb25kaXRpb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQUMgYWRkcmVzcyBzZXR1cCBsb2dpYyBpbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCAoY2FsbGVkIGR1cmluZyBjaGlwIGluZm8gc2V0dXApIHRvIGF0dGVtcHQgZmV0Y2hpbmcgYSBNQUMgYWRkcmVzcyB2aWEgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBnZW5lcmF0aW5nIGEgcmFuZG9tIE1BQyBhZGRyZXNzLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgaW5jbHVkaW5nIGZvciBVU0ItYmFzZWQgcnR3ODggV2lGaSBkZXZpY2VzIHRoYXQgY2FuIGJlIGVtdWxhdGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQvUmF3IEdhZGdldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTQ6MTU6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1xuaW5kZXggY2Q5MjU0MzcwZmNjNy4uMGYyMzQ5OGI1Yzk2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1xuQEAgLTIwNjAsOCAmIzQzOzIwNjAsMTEgQEAgc3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4gXHRlZnVzZS1cdTAwM2VleHRfbG5hXzVnID0gZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgXHUwMDI2IEJJVCgzKSA/IDEgOiAwO1xuIFxuIFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKGVmdXNlLVx1MDAzZWFkZHIpKSB7XG4tXHRcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cdTAwM2VhZGRyKTtcbi1cdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZWZ1c2UgTUFDIGludmFsaWQsIHVzaW5nIHJhbmRvbVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXHUwMDNlZGV2LCBlZnVzZS1cdTAwM2VhZGRyKSkge1xuJiM0MztcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4mIzQzO1x0XHRcdGRldl93YXJuKHJ0d2Rldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0IFwmIzM0O2ZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcblwmIzM0Oyk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gb3V0X2Rpc2FibGU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODgmIzM0OywKICAgICYjMzQ7UlRXODhfQ09SRSYjMzQ7LAogICAgJiMzNDtSVFc4OF9VU0ImIzM0OywKICAgICYjMzQ7UlRXODhfODgyMkJVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84NzIzRFUmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMUNVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjFBVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODEyQVUmIzM0OywKICAgICYjMzQ7UlRXODhfODgxNEFVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0d19jaGlwX2luZm9fc2V0dXAmIzM0OywKICAgICYjMzQ7cnR3X3VzYl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUFDIGFkZHJlc3Mgc2V0dXAgbG9naWMgaW4gYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgKGNhbGxlZCBkdXJpbmcgY2hpcCBpbmZvIHNldHVwKSB0byBhdHRlbXB0IGZldGNoaW5nIGEgTUFDIGFkZHJlc3MgdmlhIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gZ2VuZXJhdGluZyBhIHJhbmRvbSBNQUMgYWRkcmVzcy4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGluY2x1ZGluZyBmb3IgVVNCLWJhc2VkIHJ0dzg4IFdpRmkgZGV2aWNlcyB0aGF0IGNhbiBiZSBlbXVsYXRlZCBhbmQgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0L1JhdyBHYWRnZXQgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFiODkyYjhjMzAyNTc4ZTUyMTI3N2IyOWJmYmZkN2U5YmUzZmEzM2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDE0OjE1OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYwppbmRleCBjZDkyNTQzNzBmY2M3Li4wZjIzNDk4YjVjOTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYwpAQCAtMjA2MCw4ICYjNDM7MjA2MCwxMSBAQCBzdGF0aWMgaW50IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldikKIAllZnVzZS0mZ3Q7ZXh0X2xuYV81ZyA9IGVmdXNlLSZndDtsbmFfdHlwZV81ZyAmYW1wOyBCSVQoMykgPyAxIDogMDsKIAogCWlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS0mZ3Q7YWRkcikpIHsKLQkJZXRoX3JhbmRvbV9hZGRyKGVmdXNlLSZndDthZGRyKTsKLQkJZGV2X3dhcm4ocnR3ZGV2LSZndDtkZXYsICYjMzQ7ZWZ1c2UgTUFDIGludmFsaWQsIHVzaW5nIHJhbmRvbVxuJiMzNDspOwomIzQzOwkJaWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LSZndDtkZXYsIGVmdXNlLSZndDthZGRyKSkgewomIzQzOwkJCWV0aF9yYW5kb21fYWRkcihlZnVzZS0mZ3Q7YWRkcik7CiYjNDM7CQkJZGV2X3dhcm4ocnR3ZGV2LSZndDtkZXYsCiYjNDM7CQkJCSAmIzM0O2ZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxuJiMzNDspOwomIzQzOwkJfQogCX0KIAogb3V0X2Rpc2FibGU6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBUaGUgZGlmZiBwb2ludHMgdG8gYSBjaGFuZ2UgaW4gdGhlIGBydHc4OC9tYWluLmNgIGZpbGUgd2l0aGluIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIGNoYW5nZSBjb25jZXJucyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHRoZSBFdGhlcm5ldCBNQUMgYWRkcmVzcyBzdG9yZWQgaW4gdGhlIGVGdXNlLiBUaGUgb3JpZ2luYWwgY29kZSBnZW5lcmF0ZWQgYSByYW5kb20gTUFDIGFkZHJlc3MgaWYgdGhlIGVGdXNlIGNvbnRhaW5lZCBhbiBpbnZhbGlkIG9uZSwgYnV0IG5vdyBpdCBhdHRlbXB0cyB0byBnZXQgdGhlIE1BQyBhZGRyZXNzIHRocm91Z2ggYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGJlZm9yZSByZXNvcnRpbmcgdG8gcmFuZG9tIGdlbmVyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSBhIHdhcm5pbmcgbWVzc2FnZSBpcyBhZGRlZCBpZiBnZXR0aW5nIGEgdmFsaWQgTUFDIGZhaWxzLCB3aGljaCBwcm92aWRlcyBtb3JlIGNvbnRleHQuCgpOb3csIGxldCYjMzk7cyB6b29tIG91dCBhIGJpdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgcnR3ODhgIGRyaXZlciBiZXR0ZXIuIElzIHRoaXMgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBkZXZpY2U/IElzIHRoaXMgc29tZXRoaW5nIEkgY2FuIGVtdWxhdGUgb3IgZnV6ej8gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd29yayB3aXRoIFVTQiwgUENJLCBvciBTRElPIGRldmljZXM/IEkga25vdyBSZWFsdGVrIGhhcyBhIGhpc3Rvcnkgd2l0aCBhbGwgdGhyZWUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybS4gSSBrbm93IHRoYXQgVVNCIGRldmljZXMgKmNhbiogYmUgZnV6emVkIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUvc3l6a2FsbGVyLCB1c2luZyB0ZWNobmlxdWVzIGxpa2UgUmF3IEdhZGdldCwgZHVtbXlfaGNkLCBvciBVU0IgZW11bGF0aW9uLiBTbywgaXMgdGhlcmUgYSBgcnR3ODhfdXNiYCBjb21wb25lbnQgdG8gYmUgY29uc2lkZXJlZD8gTGV0JiMzOTtzIGNoZWNrIHdpdGggZ3JlcHBlciBvciBieSByZWFkaW5nIHRoZSBmaWxlLiBJIG5lZWQgdG8ga25vdyBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHRvIGRldGVybWluZSBpdHMgc3VpdGFiaWxpdHkgZm9yIGZ1enppbmcgYW5kIGlmIEkgY2FuIHVzZSBteSBub3JtYWwgUUVNVSBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfUlRXODgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfUlRXODhfQ09SRSlcdCYjNDM7PSBydHc4OF9jb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNC1ydHc4OF9jb3JlLXkgJiM0Mzs9IG1haW4ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9MjE9cnR3ODhfY29yZS0kKENPTkZJR19QTSkgJiM0Mzs9IHdvdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToyMzpydHc4OF9jb3JlLSQoQ09ORklHX1JUVzg4X0xFRFMpICYjNDM7PSBsZWQub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJCKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMjYtcnR3ODhfODgyMmItb2Jqc1x0XHQ6PSBydHc4ODIyYi5vIHJ0dzg4MjJiX3RhYmxlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19SVFc4OF84ODIyQkUpXHQmIzQzOz0gcnR3ODhfODgyMmJlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMjktcnR3ODhfODgyMmJlLW9ianNcdFx0Oj0gcnR3ODgyMmJlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19SVFc4OF84ODIyQlMpXHQmIzQzOz0gcnR3ODhfODgyMmJzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzItcnR3ODhfODgyMmJzLW9ianNcdFx0Oj0gcnR3ODgyMmJzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19SVFc4OF84ODIyQlUpXHQmIzQzOz0gcnR3ODhfODgyMmJ1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzUtcnR3ODhfODgyMmJ1LW9ianNcdFx0Oj0gcnR3ODgyMmJ1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19SVFc4OF84ODIyQylcdCYjNDM7PSBydHc4OF84ODIyYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTM4LXJ0dzg4Xzg4MjJjLW9ianNcdFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfUlRXODhfODgyMkNFKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQxLXJ0dzg4Xzg4MjJjZS1vYmpzXHRcdDo9IHJ0dzg4MjJjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfUlRXODhfODgyMkNTKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ0LXJ0dzg4Xzg4MjJjcy1vYmpzXHRcdDo9IHJ0dzg4MjJjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfUlRXODhfODgyMkNVKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ3LXJ0dzg4Xzg4MjJjdS1vYmpzXHRcdDo9IHJ0dzg4MjJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfUlRXODhfODcyM1gpXHQmIzQzOz0gcnR3ODhfODcyM3gub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01MC1ydHc4OF84NzIzeC1vYmpzXHRcdDo9IHJ0dzg3MjN4Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19SVFc4OF84NzAzQilcdCYjNDM7PSBydHc4OF84NzAzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTUzLXJ0dzg4Xzg3MDNiLW9ianNcdFx0Oj0gcnR3ODcwM2IubyBydHc4NzAzYl90YWJsZXMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX1JUVzg4Xzg3MjNDUylcdCYjNDM7PSBydHc4OF84NzIzY3Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01Ni1ydHc4OF84NzIzY3Mtb2Jqc1x0XHQ6PSBydHc4NzIzY3Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX1JUVzg4Xzg3MjNEKVx0JiM0Mzs9IHJ0dzg4Xzg3MjNkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTktcnR3ODhfODcyM2Qtb2Jqc1x0XHQ6PSBydHc4NzIzZC5vIHJ0dzg3MjNkX3RhYmxlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19SVFc4OF84NzIzREUpXHQmIzQzOz0gcnR3ODhfODcyM2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjItcnR3ODhfODcyM2RlLW9ianNcdFx0Oj0gcnR3ODcyM2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19SVFc4OF84NzIzRFMpXHQmIzQzOz0gcnR3ODhfODcyM2RzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjUtcnR3ODhfODcyM2RzLW9ianNcdFx0Oj0gcnR3ODcyM2RzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjY3Om9iai0kKENPTkZJR19SVFc4OF84NzIzRFUpXHQmIzQzOz0gcnR3ODhfODcyM2R1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjgtcnR3ODhfODcyM2R1LW9ianNcdFx0Oj0gcnR3ODcyM2R1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjcwOm9iai0kKENPTkZJR19SVFc4OF84ODIxQylcdCYjNDM7PSBydHc4OF84ODIxYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTcxLXJ0dzg4Xzg4MjFjLW9ianNcdFx0Oj0gcnR3ODgyMWMubyBydHc4ODIxY190YWJsZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3MzpvYmotJChDT05GSUdfUlRXODhfODgyMUNFKVx0JiM0Mzs9IHJ0dzg4Xzg4MjFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc0LXJ0dzg4Xzg4MjFjZS1vYmpzXHRcdDo9IHJ0dzg4MjFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3NjpvYmotJChDT05GSUdfUlRXODhfODgyMUNTKVx0JiM0Mzs9IHJ0dzg4Xzg4MjFjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc3LXJ0dzg4Xzg4MjFjcy1vYmpzXHRcdDo9IHJ0dzg4MjFjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfUlRXODhfODgyMUNVKVx0JiM0Mzs9IHJ0dzg4Xzg4MjFjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTgwLXJ0dzg4Xzg4MjFjdS1vYmpzXHRcdDo9IHJ0dzg4MjFjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfUlRXODhfODhYWEEpXHQmIzQzOz0gcnR3ODhfODh4eGEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS04My1ydHc4OF84OHh4YS1vYmpzXHRcdDo9IHJ0dzg4eHhhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjg1Om9iai0kKENPTkZJR19SVFc4OF84ODIxQSlcdCYjNDM7PSBydHc4OF84ODIxYS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg2LXJ0dzg4Xzg4MjFhLW9ianNcdFx0Oj0gcnR3ODgyMWEubyBydHc4ODIxYV90YWJsZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfUlRXODhfODgxMkEpXHQmIzQzOz0gcnR3ODhfODgxMmEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS04OS1ydHc4OF84ODEyYS1vYmpzXHRcdDo9IHJ0dzg4MTJhLm8gcnR3ODgxMmFfdGFibGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjFBVSlcdCYjNDM7PSBydHc4OF84ODIxYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05Mi1ydHc4OF84ODIxYXUtb2Jqc1x0XHQ6PSBydHc4ODIxYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6OTQ6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MTJBVSlcdCYjNDM7PSBydHc4OF84ODEyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05NS1ydHc4OF84ODEyYXUtb2Jqc1x0XHQ6PSBydHc4ODEyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6OTc6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MTRBKVx0JiM0Mzs9IHJ0dzg4Xzg4MTRhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtOTgtcnR3ODhfODgxNGEtb2Jqc1x0XHQ6PSBydHc4ODE0YS5vIHJ0dzg4MTRhX3RhYmxlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfUlRXODhfODgxNEFFKVx0JiM0Mzs9IHJ0dzg4Xzg4MTRhZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTEwMS1ydHc4OF84ODE0YWUtb2Jqc1x0XHQ6PSBydHc4ODE0YWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfUlRXODhfODgxNEFVKVx0JiM0Mzs9IHJ0dzg4Xzg4MTRhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTEwNC1ydHc4OF84ODE0YXUtb2Jqc1x0XHQ6PSBydHc4ODE0YXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwNjpvYmotJChDT05GSUdfUlRXODhfUENJKVx0XHQmIzQzOz0gcnR3ODhfcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTA3LXJ0dzg4X3BjaS1vYmpzXHRcdFx0Oj0gcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMDk6b2JqLSQoQ09ORklHX1JUVzg4X1NESU8pXHQmIzQzOz0gcnR3ODhfc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMC1ydHc4OF9zZGlvLW9ianNcdFx0XHQ6PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMTI6b2JqLSQoQ09ORklHX1JUVzg4X1VTQilcdFx0JiM0Mzs9IHJ0dzg4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMy1ydHc4OF91c2Itb2Jqc1x0XHRcdDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmM9MzU1Mz12b2lkIHJ0d19jb2V4X3dsX2Nja2xvY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtMzU2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjM1NjQ6I2lmZGVmIENPTkZJR19SVFc4OF9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYy0zNTY1LSNkZWZpbmUgSU5GT19TSVpFXHQ4MFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTM5MzY9dm9pZCBydHdfY29leF9kaXNwbGF5X2NvZXhfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtNDIwNC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYzo0MjA1OiNlbmRpZiAvKiBDT05GSUdfUlRXODhfREVCVUdGUyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYzoxNzojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM9MTM0OT12b2lkIHJ0d19kZWJ1Z2ZzX2RlaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xMzUyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYzoxMzUzOiNlbmRpZiAvKiBDT05GSUdfUlRXODhfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jLTEzNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTM1NTojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmMtMTM1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM9MTM3Mz1FWFBPUlRfU1lNQk9MKHJ0d19kYmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jLTEzNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTM3NTojZW5kaWYgLyogQ09ORklHX1JUVzg4X0RFQlVHICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oPTg9ZW51bSBydHdfZGVidWdfbWFzayB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oOjM0OiNpZmRlZiBDT05GSUdfUlRXODhfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTM1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaD00Mz1zdGF0aWMgaW5saW5lIHZvaWQgcnR3X2RlYnVnZnNfZGVpbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpIHt9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmgtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg6NDU6I2VuZGlmIC8qIENPTkZJR19SVFc4OF9ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmgtNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg6NDc6I2lmZGVmIENPTkZJR19SVFc4OF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaD02ND1zdGF0aWMgaW5saW5lIGJvb2wgcnR3X2RiZ19pc19lbmFibGVkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oOjcwOiNlbmRpZiAvKiBDT05GSUdfUlRXODhfREVCVUcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaC03MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2xlZC5oLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2xlZC5oOjg6I2lmZGVmIENPTkZJR19SVFc4OF9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2xlZC5oLTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jPTE4ODY9Y29uc3Qgc3RydWN0IHJ0d19jaGlwX2luZm8gcnR3ODcwM2JfaHdfc3BlYyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTk5NS1cdC8qIFRoZXNlIHJlZ2lzdGVycyBhcmUgdXNlZCB0byByZWFkIChhbmQgcHJpbnQpIGZyb20gaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYzoxOTk2Olx0ICogQ09ORklHX1JUVzg4X0RFQlVHRlMgaXMgZW5hYmxlZC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xOTk3LVx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk3OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyJiMzOTtzIEVGVVNFIEluZm9ybWF0aW9uIFNldHVwKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgaXNzdWUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IGl0JiMzOTtzIGhhbmRsaW5nIEVGVVNFIGluZm9ybWF0aW9uLCBzbyBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXBgIGZ1bmN0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgc3VnZ2VzdHMgaXQmIzM5O3MgYSBrZXkgcGllY2UgaW4gdGhpcyBwdXp6bGUuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0JiMzOTtzIGRvaW5nLCBob3cgaXQmIzM5O3Mgc2V0dGluZyB0aGluZ3MgdXAsIGFuZCB3aGF0IGRhdGEgaXQmIzM5O3MgZHJhd2luZyBmcm9tIHRoZSBFRlVTRS4gVGhlbiBJJiMzOTtsbCBleHBhbmQgdGhlIGludmVzdGlnYXRpb24gb3V0d2FyZHMgdG8gaXRzIGNhbGxlcnMuIFVuZGVyc3RhbmRpbmcgKndobyogaXMgY2FsbGluZyBpdCwgKndoZW4qLCBhbmQgKndoeSogaXMgY3J1Y2lhbCB0byBlc3RhYmxpc2hpbmcgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIGhvdyB0aGlzIGluZm9ybWF0aW9uIGZlZWRzIGludG8gdGhlIG92ZXJhbGwgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgYW5kIGludGVyYWN0aW9uIGlzIGxpa2VseSBjcml0aWNhbCBoZXJlLiBJIGV4cGVjdCB0aGF0IHdpbGwgcmV2ZWFsIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBidWcgZml4ZXMsIG9yIG1heWJlIGV2ZW4gcG9pbnQgdG8gYSBmdW5kYW1lbnRhbCBkZXNpZ24gaXNzdWUgaWYgSSYjMzk7bSBsdWNreSwgd2hpY2ggSSBob3BlIHRvIGF2b2lkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIwMDM9c3RhdGljIHZvaWQgcnR3X2NoaXBfZWZ1c2VfZGlzYWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDA5OnN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAxMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjA5Nz1pbnQgcnR3X2NoaXBfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMTA3Olx0cmV0ID0gcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjEwOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM9MTAwNz1pbnQgcnR3ODh4eGFfcG93ZXJfb24oc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYzoxMDE4Olx0LyogT3ZlcnJpZGUgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAxOS1cdGlmIChjaGlwLVx1MDAzZWlkID09IFJUV19DSElQX1RZUEVfODgyMUEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTAyMzpcdC8qIE92ZXJyaWRlIHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMjQtXHRpZiAoY2hpcC1cdTAwM2VpZCA9PSBSVFdfQ0hJUF9UWVBFXzg4MTJBKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MTEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYW5kIGl0cyBDYWxsZXJzKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgcnR3X2NoaXBfaW5mb19zZXR1cGAgZnVuY3Rpb24gd29ya3MsIGFuZCBjcml0aWNhbGx5LCAqd2hvKiBpcyB1c2luZyBpdC4gVW5kZXJzdGFuZGluZyB0aGUgc2V0dXAgcHJvY2VzcyBpcyBmdW5kYW1lbnRhbCwgZXNwZWNpYWxseSBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGludGVyYWN0aW9uIG9yIGNydWNpYWwgY29uZmlndXJhdGlvbi4gU28sIG15IGluaXRpYWwgYXBwcm9hY2ggd2lsbCBiZSB0byBtZXRpY3Vsb3VzbHkgZXhhbWluZSB0aGUgZnVuY3Rpb24gaXRzZWxmIOKAkyB3aGF0IHBhcmFtZXRlcnMgZG9lcyBpdCB0YWtlLCB3aGF0IGRvZXMgaXQgaW5pdGlhbGl6ZSwgd2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlPyBUaGVuLCBqdXN0IGFzIGltcG9ydGFudGx5LCBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgc2luZ2xlIHBsYWNlIGluIHRoZSBjb2RlYmFzZSB3aGVyZSBgcnR3X2NoaXBfaW5mb19zZXR1cGAgaXMgY2FsbGVkLiBGaW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBmbG93LiBUaGlzIHdpbGwgdGVsbCBtZSB0aGUgY29udGV4dCBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYW5kIHdoYXQgb3RoZXIgc3Vic3lzdGVtcyBvciBtb2R1bGVzIHJlbHkgb24gaXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGJpZyBwaWN0dXJlIG9mIGhvdyB0aGUgY2hpcCBpbmZvcm1hdGlvbiBpcyBoYW5kbGVkIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGNvcmUgcGllY2Ugb2YgdGhlIGluaXRpYWxpemF0aW9uLCBhbmQgbGlrZWx5IGhhcyBjb25uZWN0aW9ucyB0byB0aGUgZGV2aWNlIGRyaXZlciBhbmQgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXJzLiBMZXQmIzM5O3MgZ2V0IHRvIGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19jaGlwX2luZm9fc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIwNzg9c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwOTc6aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMjMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjEyNDpFWFBPUlRfU1lNQk9MKHJ0d19jaGlwX2luZm9fc2V0dXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjEyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaD0yMjU4PXZvaWQgcnR3X2NvcmVfc3RvcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjIyNTk6aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC0yMjYwLWludCBydHdfY29yZV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcGNpLmM9MTc5NT1pbnQgcnR3X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jLTE4NDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jOjE4NTA6XHRyZXQgPSBydHdfY2hpcF9pbmZvX3NldHVwKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jLTE4NTEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9zZGlvLmM9MTMyNT1pbnQgcnR3X3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqc2Rpb19mdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvc2Rpby5jLTEzNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3NkaW8uYzoxMzY5Olx0cmV0ID0gcnR3X2NoaXBfaW5mb19zZXR1cChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9zZGlvLmMtMTM3MC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jPTEyNjM9aW50IHJ0d191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEzMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjEzMTI6XHRyZXQgPSBydHdfY2hpcF9pbmZvX3NldHVwKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEzMTMtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMjAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgVVNCIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYHJ0d191c2JfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNgIGZpbGUuIE15IGh1bmNoIGlzIHRoYXQgdGhpcyBjb3VsZCBiZSBhIHBvaW50IG9mIGludGVyZXN0IGZvciBmdXp6aW5nLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIGhvdyBVU0IgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgdXNpbmcgc29tZXRoaW5nIGxpa2UgVVNCIFJhdyBHYWRnZXQgYW5kIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIHdpdGggZHVtbXlfaGNkIG9yIHJhdy1nYWRnZXQuCgpCZWZvcmUgSSBqdW1wIGluLCBJIHdhbnQgdG8gcmV2aWV3IGFueSByZWNlbnQgcGF0Y2hlcy4gVGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbiBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCDigJMgdW5kZXJzdGFuZGluZyB0aGUgY2hhbmdlcyB0aGVyZSB3aWxsIGdpdmUgbWUgY29udGV4dC4KCk9uY2UgSSBoYXZlIHRoYXQsIEkgbmVlZCB0byBjaGVjayBvdXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDIwNjAuIEkgbmVlZCB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgaXMgd2lyZWQgdG9nZXRoZXIgaW4gdGhlIGNvcmUgZHJpdmVyLiBIb3BlZnVsbHksIHRoaXMgYXBwcm9hY2ggd2lsbCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyB2dWxuZXJhYmlsaXR5IHN1cmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDQwOlx0XHRcdGVmdXNlLVx1MDAzZWxuYV90eXBlXzJnID0gMDtcbjIwNDE6XHRcdGlmIChlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyA9PSAweGZmKVxuMjA0MjpcdFx0XHRlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyA9IDA7XG4yMDQzOlx0XHRpZiAoZWZ1c2UtXHUwMDNlY2hhbm5lbF9wbGFuID09IDB4ZmYpXG4yMDQ0Olx0XHRcdGVmdXNlLVx1MDAzZWNoYW5uZWxfcGxhbiA9IDB4N2Y7XG4yMDQ1Olx0XHRpZiAoZWZ1c2UtXHUwMDNlcmZfYm9hcmRfb3B0aW9uID09IDB4ZmYpXG4yMDQ2Olx0XHRcdGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiA9IDA7XG4yMDQ3Olx0XHRpZiAoZWZ1c2UtXHUwMDNlYnRfc2V0dGluZyBcdTAwMjYgQklUKDApKVxuMjA0ODpcdFx0XHRlZnVzZS1cdTAwM2VzaGFyZV9hbnQgPSB0cnVlO1xuMjA0OTpcdFx0aWYgKGVmdXNlLVx1MDAzZXJlZ2QgPT0gMHhmZilcbjIwNTA6XHRcdFx0ZWZ1c2UtXHUwMDNlcmVnZCA9IDA7XG4yMDUxOlx0XHRpZiAoZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9PSAweGZmKVxuMjA1MjpcdFx0XHRlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzJnID0gMDtcbjIwNTM6XHRcdGlmIChlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID09IDB4ZmYpXG4yMDU0Olx0XHRcdGVmdXNlLVx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfNWcgPSAwO1xuMjA1NTpcdFxuMjA1NjpcdFx0ZWZ1c2UtXHUwMDNlYnRjb2V4ID0gKGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiBcdTAwMjYgMHhlMCkgPT0gMHgyMDtcbjIwNTc6XHRcdGVmdXNlLVx1MDAzZWV4dF9wYV8yZyA9IGVmdXNlLVx1MDAzZXBhX3R5cGVfMmcgXHUwMDI2IEJJVCg0KSA/IDEgOiAwO1xuMjA1ODpcdFx0ZWZ1c2UtXHUwMDNlZXh0X2xuYV8yZyA9IGVmdXNlLVx1MDAzZWxuYV90eXBlXzJnIFx1MDAyNiBCSVQoMykgPyAxIDogMDtcbjIwNTk6XHRcdGVmdXNlLVx1MDAzZWV4dF9wYV81ZyA9IGVmdXNlLVx1MDAzZXBhX3R5cGVfNWcgXHUwMDI2IEJJVCgwKSA/IDEgOiAwO1xuMjA2MDpcdFx0ZWZ1c2UtXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVx1MDAzZWxuYV90eXBlXzVnIFx1MDAyNiBCSVQoMykgPyAxIDogMDtcbjIwNjE6XHRcbjIwNjI6XHRcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cdTAwM2VhZGRyKSkge1xuMjA2MzpcdFx0XHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXHUwMDNlZGV2LCBlZnVzZS1cdTAwM2VhZGRyKSkge1xuMjA2NDpcdFx0XHRcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cdTAwM2VhZGRyKTtcbjIwNjU6XHRcdFx0XHRkZXZfd2FybihydHdkZXYtXHUwMDNlZGV2LFxuMjA2NjpcdFx0XHRcdFx0IFwmIzM0O2ZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcblwmIzM0Oyk7XG4yMDY3Olx0XHRcdH1cbjIwNjg6XHRcdH1cbjIwNjk6XHRcbjIwNzA6XHRvdXRfZGlzYWJsZTpcbjIwNzE6XHRcdHJ0d19jaGlwX2VmdXNlX2Rpc2FibGUocnR3ZGV2KTtcbjIwNzI6XHRcbjIwNzM6XHRvdXRfdW5sb2NrOlxuMjA3NDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJ0d2Rldi1cdTAwM2VtdXRleCk7XG4yMDc1Olx0XHRyZXR1cm4gcmV0O1xuMjA3NjpcdH1cbjIwNzc6XHRcbjIwNzg6XHRzdGF0aWMgaW50IHJ0d19jaGlwX2JvYXJkX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbjIwNzk6XHR7XG4yMDgwOlx0XHRzdHJ1Y3QgcnR3X2hhbCAqaGFsID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWhhbDtcbjIwODE6XHRcdGNvbnN0IHN0cnVjdCBydHdfcmZlX2RlZiAqcmZlX2RlZiA9IHJ0d19nZXRfcmZlX2RlZihydHdkZXYpO1xuMjA4MjpcdFxuMjA4MzpcdFx0aWYgKCFyZmVfZGVmKVxuMjA4NDpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjIwODU6XHRcbjIwODY6XHRcdHJ0d19waHlfc2V0dXBfcGh5X2NvbmQocnR3ZGV2LCBoYWwtXHUwMDNlcGtnX3R5cGUpO1xuMjA4NzpcdFxuMjA4ODpcdFx0cnR3X3BoeV9pbml0X3R4X3Bvd2VyKHJ0d2Rldik7XG4yMDg5Olx0XHRydHdfbG9hZF90YWJsZShydHdkZXYsIHJmZV9kZWYtXHUwMDNlcGh5X3BnX3RibCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzkyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1BQyBBZGRyZXNzIEluaXRpYWxpemF0aW9uIENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSBhIGNoYW5nZSBpbiBob3cgYSBNQUMgYWRkcmVzcyBpcyBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg4YCBkcml2ZXIuIEJlZm9yZSwgaWYgdGhlIEVGVVNFIE1BQyBhZGRyZXNzIHdhc24mIzM5O3QgdmFsaWQsIGl0IHdhcyBpbW1lZGlhdGVseSByYW5kb21pemVkLiBOb3csIHRoZXJlJiMzOTtzIGFuIGludGVybWVkaWF0ZSBzdGVwOiBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtJmd0O2RldiwgZWZ1c2UtJmd0O2FkZHIpYC4gVGhpcyBmdW5jdGlvbiBzZWVtcyB0byB0cnkgdG8gcmV0cmlldmUgYSBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UmIzM5O3MgZmlybXdhcmUgb3IgcHJvcGVydGllcywgdGhpbmdzIGxpa2UgZGV2aWNlIHRyZWUgb3IgQUNQSS4gT25seSAqaWYqIHRoYXQgZmFpbHMg4oCTIHJldHVybnMgYW4gZXJyb3Ig4oCTIGRvZXMgaXQgZmFsbCBiYWNrIHRvIHJhbmRvbWl6YXRpb24uCgpUaGUgY29yZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgY2hhbmdlIGlzIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBjYXJlZnVsbHkuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nOgoqICAgRG9jdW1lbnRhdGlvbi9LY29uZmlnL0NvbW1lbnRzLgoqICAgUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyAobG9nZ2luZywgdHJhY2Vwb2ludHMpLgoqICAgQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCiogICBVbnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoR0NFLCBRRU1VKSwgaW5jbHVkaW5nIGVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgSSBkb24mIzM5O3QgdXNlCiogICBWZW5kb3Itc3BlY2lmaWMgZHJpdmVycyAoUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBHUFUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS4KKiAgIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKU2luY2UgdGhpcyB0b3VjaGVzIGRyaXZlciBsb2dpYywgSSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0IGlzIHJlYWNoYWJsZSBjb2RlIG9yIG5vdC4gTXkgY29kZSBzZWFyY2ggdG9vbHMgc2hvdyB0aGlzIGlzIGEgcmVhbCBhbmQgcmVhY2hhYmxlIGxvZ2ljLgoKU28sIGlzIGl0PyBDYW4gdGhpcyBgcnR3ODhgIGRyaXZlciBiZSBwcm9iZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gRG9lcyBpdCByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIG9yIGZpcm13YXJlIHRvIGJlIGZ1bmN0aW9uYWw/IENhbiBJIHByb2JlIGl0IHVzaW5nIGEgVVNCIGdhZGdldCBvciBzb21lIGZvcm0gb2YgVVNCIGVtdWxhdGlvbiB3aXRoaW4gc3l6a2FsbGVyPyBJIG5lZWQgdG8gY2hlY2sgaG93IHJ0dzg4IFVTQiBkZXZpY2VzIGFyZSBoYW5kbGVkLiBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhY2hhYmxlLCBhbmQgdGhlIGNoYW5nZSBpbXBhY3RzIGNvcmUgbG9naWMsIHRoZW4gaXQgc2hvdWxkIGJlIHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d191c2JfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2R1LmM9MjA9c3RhdGljIGludCBydHc4NzIzZHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZHUuYy0yMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkdS5jOjIzOlx0cmV0dXJuIHJ0d191c2JfcHJvYmUoaW50ZiwgaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZHUuYy0yNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYXUuYz04ND1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4MTJhdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYXUuYy04Ni1cdC5pZF90YWJsZSA9IHJ0d184ODEyYXVfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhdS5jOjg3Olx0LnByb2JlID0gcnR3X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmF1LmMtODgtXHQuZGlzY29ubmVjdCA9IHJ0d191c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhdS5jPTQ0PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODgxNGF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhdS5jLTQ2LVx0LmlkX3RhYmxlID0gcnR3Xzg4MTRhdV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGF1LmM6NDc6XHQucHJvYmUgPSBydHdfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YXUuYy00OC1cdC5kaXNjb25uZWN0ID0gcnR3X3VzYl9kaXNjb25uZWN0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWF1LmM9Njg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODIxYXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWF1LmMtNzAtXHQuaWRfdGFibGUgPSBydHdfODgyMWF1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYXUuYzo3MTpcdC5wcm9iZSA9IHJ0d191c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhdS5jLTcyLVx0LmRpc2Nvbm5lY3QgPSBydHdfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxY3UuYz00Nj1zdGF0aWMgaW50IHJ0d184ODIxY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxY3UuYy00OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjdS5jOjQ5Olx0cmV0dXJuIHJ0d191c2JfcHJvYmUoaW50ZiwgaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxY3UuYy01MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYz04OD1zdGF0aWMgaW50IHJ0dzg4MjJidV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTkwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmJ1LmM6OTE6XHRyZXR1cm4gcnR3X3VzYl9wcm9iZShpbnRmLCBpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTkyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jPTMwPXN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYzozMzpcdHJldHVybiBydHdfdXNiX3Byb2JlKGludGYsIGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9MTIyNT1zdGF0aWMgdm9pZCBydHdfdXNiX3BoeV9jZmcoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEyNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjEyNjM6aW50IHJ0d191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTI2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzU4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTM1OTpFWFBPUlRfU1lNQk9MKHJ0d191c2JfcHJvYmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzYwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmg9OTA9c3RhdGljIGlubGluZSBzdHJ1Y3QgcnR3X3VzYl90eF9kYXRhICpydHdfdXNiX2dldF90eF9kYXRhKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuaC05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmg6MTAwOmludCBydHdfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuaC0xMDEtdm9pZCBydHdfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk3NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLCBsYWlkIG91dCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgVVNCIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBSZWFsdGVrIFdpRmkgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRyYWNlIGluZGljYXRlcyB0aGF0IGBydHdfdXNiX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY2AgaXMgdGhlIGVudHJ5IHBvaW50LiAgVGhlIGNvZGUgZmxvdyYjMzk7cyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBgcnR3X3VzYl9wcm9iZWAgaW1tZWRpYXRlbHkga2lja3Mgb2ZmIGEgY2hhaW46IGBydHdfdXNiX3Byb2JlYCBjYWxscyBgcnR3X2NoaXBfaW5mb19zZXR1cChydHdkZXYpYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IGFmdGVyIHRoZSBVU0IgZGV2aWNlIGlzIGRldGVjdGVkLCBhIGNyaXRpY2FsIHNlcXVlbmNlIG9mIGluaXRpYWxpemF0aW9ucyBpcyBpbml0aWF0ZWQuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgbGlrZWx5IGhhbmRsZXMgZ2VuZXJhbCBjaGlwLXNwZWNpZmljIHNldHVwLCBhbmQgdGhlIHN1YnNlcXVlbnQgY2FsbCB0byBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaGludHMgYXQgdGhlIGxvYWRpbmcgb3IgcHJvY2Vzc2luZyBvZiBkYXRhIGZyb20gdGhlIGNoaXAmIzM5O3MgZUZVU0UsIHdoaWNoIHdvdWxkIGJlIGNydWNpYWwgZm9yIHRoaW5ncyBsaWtlIGNhbGlicmF0aW9uLCBNQUMgYWRkcmVzcywgYW5kIG90aGVyIGNyaXRpY2FsIGRldmljZSBwYXJhbWV0ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLCBidXQgSSYjMzk7bSBnZXR0aW5nIGEgcHJldHR5IHNvbGlkIHBpY3R1cmUgb2YgdGhlIHByb2JlIHByb2Nlc3MuIEkmIzM5O2xsIGJlIGNoZWNraW5nIGB1c2IuY2AgZGlyZWN0bHkgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI2MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjYzOlx0aW50IHJ0d191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbjEyNjQ6XHR7XG4xMjY1Olx0XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xuMTI2NjpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4xMjY3Olx0XHRzdHJ1Y3QgcnR3X3VzYiAqcnR3dXNiO1xuMTI2ODpcdFx0aW50IGRydl9kYXRhX3NpemU7XG4xMjY5Olx0XHRpbnQgcmV0O1xuMTI3MDpcdFxuMTI3MTpcdFx0ZHJ2X2RhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcnR3X2RldikgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBydHdfdXNiKTtcbjEyNzI6XHRcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KGRydl9kYXRhX3NpemUsIFx1MDAyNnJ0d19vcHMpO1xuMTI3MzpcdFx0aWYgKCFodylcbjEyNzQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xMjc1Olx0XG4xMjc2Olx0XHRydHdkZXYgPSBody1cdTAwM2Vwcml2O1xuMTI3NzpcdFx0cnR3ZGV2LVx1MDAzZWh3ID0gaHc7XG4xMjc4Olx0XHRydHdkZXYtXHUwMDNlZGV2ID0gXHUwMDI2aW50Zi1cdTAwM2VkZXY7XG4xMjc5Olx0XHRydHdkZXYtXHUwMDNlY2hpcCA9IChzdHJ1Y3QgcnR3X2NoaXBfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvO1xuMTI4MDpcdFx0cnR3ZGV2LVx1MDAzZWhjaS5vcHMgPSBcdTAwMjZydHdfdXNiX29wcztcbjEyODE6XHRcdHJ0d2Rldi1cdTAwM2VoY2kudHlwZSA9IFJUV19IQ0lfVFlQRV9VU0I7XG4xMjgyOlx0XG4xMjgzOlx0XHRydHd1c2IgPSBydHdfZ2V0X3VzYl9wcml2KHJ0d2Rldik7XG4xMjg0Olx0XHRydHd1c2ItXHUwMDNlcnR3ZGV2ID0gcnR3ZGV2O1xuMTI4NTpcdFxuMTI4NjpcdFx0cmV0ID0gcnR3X3VzYl9hbGxvY19yeF9idWZzKHJ0d3VzYik7XG4xMjg3Olx0XHRpZiAocmV0KVxuMTI4ODpcdFx0XHRnb3RvIGVycl9yZWxlYXNlX2h3O1xuMTI4OTpcdFxuMTI5MDpcdFx0cmV0ID0gcnR3X2NvcmVfaW5pdChydHdkZXYpO1xuMTI5MTpcdFx0aWYgKHJldClcbjEyOTI6XHRcdFx0Z290byBlcnJfZnJlZV9yeF9idWZzO1xuMTI5MzpcdFxuMTI5NDpcdFx0cmV0ID0gcnR3X3VzYl9pbnRmX2luaXQocnR3ZGV2LCBpbnRmKTtcbjEyOTU6XHRcdGlmIChyZXQpIHtcbjEyOTY6XHRcdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBpbml0IFVTQiBpbnRlcmZhY2VcXG5cJiMzNDspO1xuMTI5NzpcdFx0XHRnb3RvIGVycl9kZWluaXRfY29yZTtcbjEyOTg6XHRcdH1cbjEyOTk6XHRcbjEzMDA6XHRcdHJldCA9IHJ0d191c2JfaW5pdF90eChydHdkZXYpO1xuMTMwMTpcdFx0aWYgKHJldCkge1xuMTMwMjpcdFx0XHRydHdfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIGluaXQgVVNCIFRYXFxuXCYjMzQ7KTtcbjEzMDM6XHRcdFx0Z290byBlcnJfZGVzdHJveV91c2I7XG4xMzA0Olx0XHR9XG4xMzA1Olx0XG4xMzA2Olx0XHRyZXQgPSBydHdfdXNiX2luaXRfcngocnR3ZGV2KTtcbjEzMDc6XHRcdGlmIChyZXQpIHtcbjEzMDg6XHRcdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBpbml0IFVTQiBSWFxcblwmIzM0Oyk7XG4xMzA5Olx0XHRcdGdvdG8gZXJyX2Rlc3Ryb3lfdHh3cTtcbjEzMTA6XHRcdH1cbjEzMTE6XHRcbjEzMTI6XHRcdHJldCA9IHJ0d19jaGlwX2luZm9fc2V0dXAocnR3ZGV2KTtcbjEzMTM6XHRcdGlmIChyZXQpIHtcbjEzMTQ6XHRcdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZXR1cCBjaGlwIGluZm9ybWF0aW9uXFxuXCYjMzQ7KTtcbjEzMTU6XHRcdFx0Z290byBlcnJfZGVzdHJveV9yeHdxO1xuMTMxNjpcdFx0fVxuMTMxNzpcdFxuMTMxODpcdFx0cnR3X3VzYl9waHlfY2ZnKHJ0d2RldiwgVVNCX1NQRUVEX0hJR0gpO1xuMTMxOTpcdFx0cnR3X3VzYl9waHlfY2ZnKHJ0d2RldiwgVVNCX1NQRUVEX1NVUEVSKTtcbjEzMjA6XHRcbjEzMjE6XHRcdHJldCA9IHJ0d191c2Jfc3dpdGNoX21vZGUocnR3ZGV2KTtcbjEzMjI6XHRcdGlmIChyZXQpIHtcbjEzMjM6XHRcdFx0LyogTm90IGEgZmFpbCwgYnV0IHdlIGRvIG5lZWQgdG8gc2tpcCBydHdfcmVnaXN0ZXJfaHcuICovXG4xMzI0Olx0XHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1VTQiwgXCYjMzQ7c3dpdGNoaW5nIHRvIFVTQiAzIG1vZGVcXG5cJiMzNDspO1xuMTMyNTpcdFx0XHRyZXQgPSAwO1xuMTMyNjpcdFx0XHRnb3RvIGVycl9kZXN0cm95X3J4d3E7XG4xMzI3Olx0XHR9XG4xMzI4Olx0XG4xMzI5Olx0XHRyZXQgPSBydHdfcmVnaXN0ZXJfaHcocnR3ZGV2LCBydHdkZXYtXHUwMDNlaHcpO1xuMTMzMDpcdFx0aWYgKHJldCkge1xuMTMzMTpcdFx0XHRydHdfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIGh3XFxuXCYjMzQ7KTtcbjEzMzI6XHRcdFx0Z290byBlcnJfZGVzdHJveV9yeHdxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU1NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjaGlwJiMzOTtzIGVGdXNlIGluZm9ybWF0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgcnR3ODggZmFtaWx5LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIHNldHVwIGZ1bmN0aW9uLiBTbywgSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgLiBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBzb21ldGhpbmcgcmVsYXRlZCB0byBlRnVzZSBpbmZvLCBnaXZlbiB0aGUgZHJpdmVyIHN0cnVjdHVyZSBhbmQgY29tbW9uIGNvZGluZyBwcmFjdGljZXMsIGlzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGl0c2VsZiBpcyBhIHByZXR0eSBzdHJvbmcgaW5kaWNhdG9yLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBwb3NzaWJseSB0aGUgbG9hZGluZyBvciBwYXJzaW5nIG9mIHRoZSBlRnVzZSBkYXRhIGhhcHBlbmluZyBoZXJlLiBGcm9tIHRoZXJlIEkgY2FuIHRyYWNrIHdoZXJlIHRoZSBpbmZvcm1hdGlvbiBpcyB1c2VkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgZm9yIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAwNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDA1Olx0XHRydHdfaGNpX3N0b3AocnR3ZGV2KTtcbjIwMDY6XHRcdHJ0d19tYWNfcG93ZXJfb2ZmKHJ0d2Rldik7XG4yMDA3Olx0fVxuMjAwODpcdFxuMjAwOTpcdHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuMjAxMDpcdHtcbjIwMTE6XHRcdHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWVmdXNlO1xuMjAxMjpcdFx0aW50IHJldDtcbjIwMTM6XHRcbjIwMTQ6XHRcdG11dGV4X2xvY2soXHUwMDI2cnR3ZGV2LVx1MDAzZW11dGV4KTtcbjIwMTU6XHRcbjIwMTY6XHRcdC8qIHBvd2VyIG9uIG1hYyB0byByZWFkIGVmdXNlICovXG4yMDE3Olx0XHRyZXQgPSBydHdfY2hpcF9lZnVzZV9lbmFibGUocnR3ZGV2KTtcbjIwMTg6XHRcdGlmIChyZXQpXG4yMDE5Olx0XHRcdGdvdG8gb3V0X3VubG9jaztcbjIwMjA6XHRcbjIwMjE6XHRcdHJldCA9IHJ0d19wYXJzZV9lZnVzZV9tYXAocnR3ZGV2KTtcbjIwMjI6XHRcdGlmIChyZXQpXG4yMDIzOlx0XHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4yMDI0Olx0XG4yMDI1Olx0XHRyZXQgPSBydHdfZHVtcF9od19mZWF0dXJlKHJ0d2Rldik7XG4yMDI2Olx0XHRpZiAocmV0KVxuMjAyNzpcdFx0XHRnb3RvIG91dF9kaXNhYmxlO1xuMjAyODpcdFxuMjAyOTpcdFx0cmV0ID0gcnR3X2NoZWNrX3N1cHBvcnRlZF9yZmUocnR3ZGV2KTtcbjIwMzA6XHRcdGlmIChyZXQpXG4yMDMxOlx0XHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4yMDMyOlx0XG4yMDMzOlx0XHRpZiAoZWZ1c2UtXHUwMDNlY3J5c3RhbF9jYXAgPT0gMHhmZilcbjIwMzQ6XHRcdFx0ZWZ1c2UtXHUwMDNlY3J5c3RhbF9jYXAgPSAwO1xuMjAzNTpcdFx0aWYgKGVmdXNlLVx1MDAzZXBhX3R5cGVfMmcgPT0gMHhmZilcbjIwMzY6XHRcdFx0ZWZ1c2UtXHUwMDNlcGFfdHlwZV8yZyA9IDA7XG4yMDM3Olx0XHRpZiAoZWZ1c2UtXHUwMDNlcGFfdHlwZV81ZyA9PSAweGZmKVxuMjAzODpcdFx0XHRlZnVzZS1cdTAwM2VwYV90eXBlXzVnID0gMDtcbjIwMzk6XHRcdGlmIChlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyA9PSAweGZmKVxuMjA0MDpcdFx0XHRlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyA9IDA7XG4yMDQxOlx0XHRpZiAoZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgPT0gMHhmZilcbjIwNDI6XHRcdFx0ZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgPSAwO1xuMjA0MzpcdFx0aWYgKGVmdXNlLVx1MDAzZWNoYW5uZWxfcGxhbiA9PSAweGZmKVxuMjA0NDpcdFx0XHRlZnVzZS1cdTAwM2VjaGFubmVsX3BsYW4gPSAweDdmO1xuMjA0NTpcdFx0aWYgKGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiA9PSAweGZmKVxuMjA0NjpcdFx0XHRlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xuMjA0NzpcdFx0aWYgKGVmdXNlLVx1MDAzZWJ0X3NldHRpbmcgXHUwMDI2IEJJVCgwKSlcbjIwNDg6XHRcdFx0ZWZ1c2UtXHUwMDNlc2hhcmVfYW50ID0gdHJ1ZTtcbjIwNDk6XHRcdGlmIChlZnVzZS1cdTAwM2VyZWdkID09IDB4ZmYpXG4yMDUwOlx0XHRcdGVmdXNlLVx1MDAzZXJlZ2QgPSAwO1xuMjA1MTpcdFx0aWYgKGVmdXNlLVx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPT0gMHhmZilcbjIwNTI6XHRcdFx0ZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9IDA7XG4yMDUzOlx0XHRpZiAoZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9PSAweGZmKVxuMjA1NDpcdFx0XHRlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID0gMDtcbjIwNTU6XHRcbjIwNTY6XHRcdGVmdXNlLVx1MDAzZWJ0Y29leCA9IChlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gXHUwMDI2IDB4ZTApID09IDB4MjA7XG4yMDU3Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfMmcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzJnIFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcbjIwNTg6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfMmcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDU5Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfNWcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzVnIFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcbjIwNjA6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfNWcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDYxOlx0XG4yMDYyOlx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjM6XHRcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjQ6XHRcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4yMDY1Olx0XHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbjIwNjY6XHRcdFx0XHRcdCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHZhbGlkIE1BQyBhZGRyZXNzLCB1c2luZyByYW5kb21cXG5cJiMzNDspO1xuMjA2NzpcdFx0XHR9XG4yMDY4Olx0XHR9XG4yMDY5Olx0XG4yMDcwOlx0b3V0X2Rpc2FibGU6XG4yMDcxOlx0XHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XG4yMDcyOlx0XG4yMDczOlx0b3V0X3VubG9jazpcbjIwNzQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZydHdkZXYtXHUwMDNlbXV0ZXgpO1xuMjA3NTpcdFx0cmV0dXJuIHJldDtcbjIwNzY6XHR9XG4yMDc3Olx0XG4yMDc4Olx0c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4yMDc5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE5NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmUsIHVzaW5nIGEgZmlyc3QtcGVyc29uIG5hcnJhdGl2ZSBhbmQgYSBib2xkZWQgaGVhZGVyOgoKKipEaXZpbmcgaW50byB0aGUgUlRXODggS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW5zdGluY3QgaW1tZWRpYXRlbHkgZ29lcyB0byB0aGUgS2NvbmZpZyBmaWxlcy4gV2l0aCBzb21ldGhpbmcgbGlrZSBSVFc4OCwgdGhlIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gbmF2aWdhdGUgdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhcmUsIGFuZCB3aGF0IGNvbmZpZ3VyYWJsZSBvcHRpb25zIGFyZSBhdmFpbGFibGUuIFRoaXMgbGlrZWx5IG1lYW5zIHRyYWNpbmcgdGhyb3VnaCB0aGUgZGVwZW5kZW5jeSBjaGFpbnMsIHN0YXJ0aW5nIHdpdGggYSBnZW5lcmFsIHdpcmVsZXNzIG9yIG5ldHdvcmtpbmcgS2NvbmZpZywgYW5kIGRyaWxsaW5nIGRvd24gdW50aWwgSSByZWFjaCB0aGUgUlRXODgtc3BlY2lmaWMgb3B0aW9ucy4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBzeW1ib2wgdGhhdCBhY3RpdmF0ZXMgdGhlIFJUVzg4IHN1cHBvcnQsIGFuZCB0aGVuIGhvdyBpdCB0aWVzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBGaW5kaW5nIHRoZSByaWdodCBjb25maWcgb3B0aW9ucyBpcyBrZXkgdG8gdHJvdWJsZXNob290aW5nIGFueSBwcm9ibGVtcyBvciBpZiBJIG5lZWQgdG8gYnVpbGQgYSBjdXN0b20ga2VybmVsLCBJIG5lZWQgdG8ga25vdyB3aGF0IHRvIGVuYWJsZS4gTGV04oCZcyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTExPWlmIFJUVzg4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM6Y29uZmlnIFJUVzg4X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OF9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA6Y29uZmlnIFJUVzg4X1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM6Y29uZmlnIFJUVzg4X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNjpjb25maWcgUlRXODhfODgyMkJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg4Xzg4MjJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OF84NzIzWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzozNTpjb25maWcgUlRXODhfODcwM0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM5OmNvbmZpZyBSVFc4OF84NzIzRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDM6Y29uZmlnIFJUVzg4Xzg4MjFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ2OmNvbmZpZyBSVFc4OF84OFhYQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0OTpjb25maWcgUlRXODhfODgyMUFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjUzOmNvbmZpZyBSVFc4OF84ODEyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NTc6Y29uZmlnIFJUVzg4Xzg4MTRBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjYwOmNvbmZpZyBSVFc4OF84ODIyQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NzE6Y29uZmlnIFJUVzg4Xzg4MjJCU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTcyLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6ODI6Y29uZmlnIFJUVzg4Xzg4MjJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo5Mzpjb25maWcgUlRXODhfODgyMkNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUVzg4Xzg4MjJDU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwNS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg4Xzg4MjJDVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEyNjpjb25maWcgUlRXODhfODcyM0RFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI3LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM3OmNvbmZpZyBSVFc4OF84NzIzRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNEUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTQ4OmNvbmZpZyBSVFc4OF84NzIzQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTYyOmNvbmZpZyBSVFc4OF84NzIzRFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNEVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNzM6Y29uZmlnIFJUVzg4Xzg4MjFDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3NC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMUNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE4NDpjb25maWcgUlRXODhfODgyMUNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE5NTpjb25maWcgUlRXODhfODgyMUNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA2OmNvbmZpZyBSVFc4OF84ODIxQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFBVS84ODExQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjE3OmNvbmZpZyBSVFc4OF84ODEyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMjg6Y29uZmlnIFJUVzg4Xzg4MTRBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyOS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIzOTpjb25maWcgUlRXODhfODgxNEFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQwLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODE0QVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjUwOmNvbmZpZyBSVFc4OF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1MS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OCBkZWJ1ZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTg6Y29uZmlnIFJUVzg4X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNTktXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODggZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNjY6Y29uZmlnIFJUVzg4X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNjctXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTc2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgRGVlcCBpbnRvIHRoZSBgUlRXODhgIEtjb25maWcqKgoKT2theSwgdGltZSB0byByZWFsbHkgc2NydXRpbml6ZSB0aGUgYFJUVzg4YCBLY29uZmlnIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgZXZlcnkgY29uZmlndXJhdGlvbiBvcHRpb24gYXZhaWxhYmxlIGZvciB0aGlzIHdpcmVsZXNzIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyB0aHJvdWdoIGVhY2ggb3B0aW9uIGluZGl2aWR1YWxseSwgZGlzc2VjdGluZyBpdHMgcHVycG9zZSwgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGlkZW50aWZ5IGFueSBhcmVhcyBvZiBpbnRlcmVzdCBvciBwb3RlbnRpYWwgY29uZmxpY3RzIOKAkyBwZXJoYXBzIHNvbWUgcG9vcmx5IGRvY3VtZW50ZWQgZGVmYXVsdHMgb3IgY29uZmlndXJhdGlvbiBpbnRlcmFjdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEkmIzM5O20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBtYXBwZWQgb250byB0aGUgS2NvbmZpZyBvcHRpb25zOyB3aGljaCBmZWF0dXJlcyBhcmUgbWFuZGF0b3J5LCBhbmQgd2hpY2ggYXJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSSB3YW50IHRvIGJ1aWxkIGEgdmVyeSBjbGVhciBtZW50YWwgbW9kZWwgb2YgaG93IHRoZSBkcml2ZXIgaXMgc3RydWN0dXJlZCBhbmQgaG93IGRpZmZlcmVudCBoYXJkd2FyZSB2YXJpYW50cyBhcmUgc3VwcG9ydGVkIHRocm91Z2ggdGhpcyBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIG9wdGltaXphdGlvbiwgYXJlYXMgd2hlcmUgZGVmYXVsdCB2YWx1ZXMgc2VlbSBzdWJvcHRpbWFsLCBvciBvcHBvcnR1bml0aWVzIHRvIGV4cG9zZSBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIHRvIHRoZSBlbmQtdXNlci4gRXNzZW50aWFsbHksIEkmIzM5O20gZGlnZ2luZyBmb3IgYSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZSB0byBlbnN1cmUgdGhpcyBkcml2ZXIgaXMgdHVuZWQgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIGZsZXhpYmlsaXR5LCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGdyZWF0ZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgUlRXODhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OC5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OF9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg4X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODhfU0RJT1xuICAyMTpcdFx0dHJpc3RhdGVcbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgUlRXODhfVVNCXG4gIDI0Olx0XHR0cmlzdGF0ZVxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBSVFc4OF84ODIyQlxuICAyNzpcdFx0dHJpc3RhdGVcbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgUlRXODhfODgyMkNcbiAgMzA6XHRcdHRyaXN0YXRlXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFJUVzg4Xzg3MjNYXG4gIDMzOlx0XHR0cmlzdGF0ZVxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBSVFc4OF84NzAzQlxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcdHNlbGVjdCBSVFc4OF84NzIzWFxuICAzODpcdFxuICAzOTpcdGNvbmZpZyBSVFc4OF84NzIzRFxuICA0MDpcdFx0dHJpc3RhdGVcbiAgNDE6XHRcdHNlbGVjdCBSVFc4OF84NzIzWFxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBSVFc4OF84ODIxQ1xuICA0NDpcdFx0dHJpc3RhdGVcbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgUlRXODhfODhYWEFcbiAgNDc6XHRcdHRyaXN0YXRlXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIFJUVzg4Xzg4MjFBXG4gIDUwOlx0XHR0cmlzdGF0ZVxuICA1MTpcdFx0c2VsZWN0IFJUVzg4Xzg4WFhBXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIFJUVzg4Xzg4MTJBXG4gIDU0Olx0XHR0cmlzdGF0ZVxuICA1NTpcdFx0c2VsZWN0IFJUVzg4Xzg4WFhBXG4gIDU2Olx0XG4gIDU3Olx0Y29uZmlnIFJUVzg4Xzg4MTRBXG4gIDU4Olx0XHR0cmlzdGF0ZVxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBSVFc4OF84ODIyQkVcbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAgNjI6XHRcdGRlcGVuZHMgb24gUENJXG4gIDYzOlx0XHRzZWxlY3QgUlRXODhfQ09SRVxuICA2NDpcdFx0c2VsZWN0IFJUVzg4X1BDSVxuICA2NTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjJCXG4gIDY2Olx0XHRoZWxwXG4gIDY3Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQkUgY2hpcHNldFxuICA2ODpcdFxuICA2OTpcdFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuICA3MDpcdFxuICA3MTpcdGNvbmZpZyBSVFc4OF84ODIyQlNcbiAgNzI6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gIDczOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICA3NDpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAgNzU6XHRcdHNlbGVjdCBSVFc4OF9TRElPXG4gIDc2Olx0XHRzZWxlY3QgUlRXODhfODgyMkJcbiAgNzc6XHRcdGhlbHBcbiAgNzg6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCUyBjaGlwc2V0XG4gIDc5Olx0XG4gIDgwOlx0XHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gIDgxOlx0XG4gIDgyOlx0Y29uZmlnIFJUVzg4Xzg4MjJCVVxuICA4MzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuICA4NDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgODU6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gIDg2Olx0XHRzZWxlY3QgUlRXODhfVVNCXG4gIDg3Olx0XHRzZWxlY3QgUlRXODhfODgyMkJcbiAgODg6XHRcdGhlbHBcbiAgODk6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCVSBjaGlwc2V0XG4gIDkwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTk4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogODIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIFVTQiBFbnVtZXJhdGlvbiBQYXRoIG9mIHJ0dzg4KioKCk9rYXksIGxldCYjMzk7cyB0cmFjZSB0aGlzLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIFVTQiBwcm9iZSBmb3IgcnR3ODggKmFjdHVhbGx5KiBoaXRzIGBydHdfY2hpcF9pbmZvX3NldHVwYCBkdXJpbmcgZGV2aWNlIGVudW1lcmF0aW9uLiBSaWdodCwgc28gd2Ugc3RhcnQgaW4gYHJ0d191c2JfcHJvYmVgLiBXZSYjMzk7cmUgYWxsb2NhdGluZyBzb21lIGRhdGEgc3RydWN0dXJlczogdGhlIGBydHdfZGV2YCBhbmQgYHJ0d191c2JgIHN0cnVjdHVyZXMuIFdlJiMzOTtyZSBzZXR0aW5nIHVwIHRoZSBgaWVlZTgwMjExX2h3YCBhbmQgbGlua2luZyBpdCB0byBvdXIgcHJpdmF0ZSBkYXRhLiBUaGUgYHJ0d2Rldi0mZ3Q7Y2hpcGAgcG9pbnRlciwgaW1wb3J0YW50bHksIGlzIHBvcHVsYXRlZCB3aXRoIGBpZC0mZ3Q7ZHJpdmVyX2luZm9gLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjaGlwLXNwZWNpZmljIGluZm9ybWF0aW9uIGNvbWVzIGZyb20uCgpUaGVuLCB3ZSBhbGxvY2F0ZSBSWCBidWZmZXJzLCBpbml0aWFsaXplIHRoZSBjb3JlLCBVU0IgaW50ZXJmYWNlIGFuZCBSWC9UWCBmdW5jdGlvbnMuIE5vdyBoZXJlIGl0IGlzOiB0aGUgY2FsbCB0byBgcnR3X2NoaXBfaW5mb19zZXR1cChydHdkZXYpYC4gUGVyZmVjdCwgc28gZmFyLCBzbyBnb29kLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBJIHdhbnRlZCB0byB2ZXJpZnkgd2FzIGNhbGxlZC4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzICppbnNpZGUqIGBydHdfY2hpcF9pbmZvX3NldHVwYC4gQWgsIGl0IGNhbGxzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHJ0d2RldilgLiBPay4gTG9va2luZyBpbnRvIHRoYXQgZnVuY3Rpb24gbm93LiBUaGlzIGlzIHdoZXJlIHdlIG1pZ2h0IGV4cGVjdCB0byBzZWUgZUZ1c2UgY29uZmlndXJhdGlvbiBoYXBwZW5pbmcuIFdlIHNlZSBjYWxscyB0byBlbmFibGUgdGhlIGVGdXNlLCBwYXJzZSB0aGUgbWFwLCBkdW1wIGhhcmR3YXJlIGZlYXR1cmVzLCBjaGVjayBmb3Igc3VwcG9ydGVkIHJhZGlvIGZyZXF1ZW5jeSBlbGVtZW50LgoKSG9sZCBvbiwgdGhlcmUmIzM5O3Mgc29tZXRoaW5nIGludGVyZXN0aW5nIGhlcmUuIEl0IGxvb2tzIGxpa2UgaXQgdHJpZXMgdG8gcmV0cmlldmUgdGhlIE1BQyBhZGRyZXNzLiBTcGVjaWZpY2FsbHksIGlmIHRoZSByZXRyaWV2ZWQgTUFDIGlzIGludmFsaWQsIGl0IHRyaWVzIHRvIGdldCB0aGUgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHdpdGggYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLiBPdGhlcndpc2UsIGlmIHRoZSBjYWxsIGZhaWxzLCB3ZSYjMzk7cmUgZ2VuZXJhdGluZyBhIHJhbmRvbSBNQUMgYWRkcmVzcyBhbmQgaXNzdWluZyBhIHdhcm5pbmcuIEkgbmVlZCB0byBjaGVjayB3aGF0IGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBhY3R1YWxseSBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZpY2VfZ2V0X21hY19hZGRyZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1wbGF0Zm9ybS5jPTE1MD1zdGF0aWMgaW50IHhnYmVfcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBsYXRmb3JtLmMtMjU0LVx0LyogUmV0cmlldmUgdGhlIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBsYXRmb3JtLmM6MjU1Olx0cmV0ID0gZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhkZXYsIHBkYXRhLVx1MDAzZW1hY19hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGxhdGZvcm0uYy0yNTYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTcwMzk9c3RhdGljIGludCB0ZzNfZ2V0X2RldmljZV9hZGRyZXNzKHN0cnVjdCB0ZzMgKnRwLCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzExMy1cdGlmICh0ZzNfaXNfZGVmYXVsdF9tYWNfYWRkcmVzcyhhZGRyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3MTE0Olx0XHRyZXR1cm4gZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhcdTAwMjZ0cC1cdTAwM2VwZGV2LVx1MDAzZWRldiwgYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzExNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz0xMDg0PXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEwOTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzoxMDk4Olx0aWYgKCFkZXZpY2VfZ2V0X21hY19hZGRyZXNzKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBtYWNfYWRkcikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEwOTktXHRcdGV0aGVyX2FkZHJfY29weShsYW45NjZ4LVx1MDAzZWJhc2VfbWFjLCBtYWNfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC5jPTIzNzk9c3RhdGljIGludCBzbXNjOTExeF9wcm9iZV9jb25maWcoc3RydWN0IHNtc2M5MTF4X3BsYXRmb3JtX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2Mvc21zYzkxMXguYy0yMzkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC5jOjIzOTE6XHRkZXZpY2VfZ2V0X21hY19hZGRyZXNzKGRldiwgY29uZmlnLVx1MDAzZW1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmMtMjM5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYz0zMzUzPXN0YXRpYyBpbnQgYXRoMTBrX2NvcmVfcHJvYmVfZncoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtMzQ1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jOjM0NTI6XHRkZXZpY2VfZ2V0X21hY19hZGRyZXNzKGFyLVx1MDAzZWRldiwgYXItXHUwMDNlbWFjX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtMzQ1My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwNjkzPWludCBhdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDcxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA3MTI6XHRkZXZpY2VfZ2V0X21hY19hZGRyZXNzKGFiLVx1MDAzZWRldiwgbWFjX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDcxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMDA5PXN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwNjItXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwNjM6XHRcdGlmIChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cdTAwM2VkZXYsIGVmdXNlLVx1MDAzZWFkZHIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDY0LVx0XHRcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cdTAwM2VhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzNDAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHRyeWluZyB0byBwaW4gZG93biB3aGVyZSB0aGUgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGZ1bmN0aW9uIGxpdmVzLiBUaGUgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgdG8gYG5ldC9ldGhlcm5ldC9ldGguY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmdW5jdGlvbiYjMzk7cyBuYW1lIGFuZCBnZW5lcmFsIHB1cnBvc2UuIE5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCByZXRyaWV2ZXMgdGhpcyBNQUMgYWRkcmVzcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgd2hldGhlciBpdCBkaXJlY3RseSBxdWVyaWVzIHRoZSBoYXJkd2FyZSwgcmVsaWVzIG9uIGNhY2hlZCB2YWx1ZXMsIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBzb3BoaXN0aWNhdGVkIGxvZ2ljIHdpdGhpbiB0aGUgZnVuY3Rpb24gdG8gaGFuZGxlIGRpZmZlcmVudCBuZXR3b3JrIGludGVyZmFjZXMgb3IgZWRnZSBjYXNlcy4gVGltZSB0byBleGFtaW5lIHRoZSBjb2RlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ldGhlcm5ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmM9NjA0PUVYUE9SVF9TWU1CT0woZndub2RlX2dldF9tYWNfYWRkcmVzcyk7XG4tLVxubmV0L2V0aGVybmV0L2V0aC5jLTYxMC0gKi9cbm5ldC9ldGhlcm5ldC9ldGguYzo2MTE6aW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICphZGRyKVxubmV0L2V0aGVybmV0L2V0aC5jLTYxMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjcxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBbmFseXNpczogUmVhbHRlayBSVFc4OCBVU0IgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIGRlYWQgZW5kLiBIb3dldmVyLCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgaXMgZXhwb3J0ZWQgYW5kIGNhbGxlZCBieSBgcnR3X3BjaV9wcm9iZWAsIGBydHdfc2Rpb19wcm9iZWAsIGFuZCBpbXBvcnRhbnRseSwgYHJ0d191c2JfcHJvYmVgLiAgVGhlIGtleSBxdWVzdGlvbiBpcywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7IE15IGluaXRpYWwgdGhvdWdodCBpcyB5ZXMsIGxldCYjMzk7cyByZXZpZXcgdGhlIHByb21wdC4KClRoZSBwcm9tcHQgb3V0bGluZXMgc3BlY2lmaWMgc2NlbmFyaW9zIHdoZXJlIGEgcGF0Y2ggaXNuJiMzOTt0IGZ1enphYmxlLCBhbmQgaXQgZmVlbHMgbGlrZSB0aGlzIG1pZ2h0IGJlIHJlYWNoYWJsZSB3aXRoaW4gYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyB3ZSBzaG91bGQgY29uc2lkZXIgd2hldGhlciB0aGlzIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgcHJvbXB0IG5vdGVzIHRoYXQgdGhlIGZ1enppbmcgc2hvdWxkbiYjMzk7dCBpbmNsdWRlIHRlYXJkb3duIGZ1bmN0aW9ucy4KCkFoYSEgVVNCIHdpcmVsZXNzIGRvbmdsZXMgYXJlIHN1cHBvcnRlZCBieSBgcnR3ODhgLCBhbmQgdGhlc2UgKmNhbiogYmUgZW11bGF0ZWQgdmlhIFVTQiBSYXcgR2FkZ2V0IG9yIGBkdW1teV9oY2RgLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBwaWVjZS4gV2hlbiB0aGUgZHJpdmVyIHByb2JlcywgYHJ0d191c2JfcHJvYmVgIHJ1bnMgYHJ0d19jaGlwX2luZm9fc2V0dXBgLCB3aGljaCBwYXJzZXMgdGhlIGVmdXNlIGRhdGEuIElmIHRoZSBFdGhlcm5ldCBNQUMgYWRkcmVzcyBpcyBpbnZhbGlkIChgIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtJmd0O2FkZHIpYCksIHdoaWNoIGlzICpoaWdobHkqIHByb2JhYmxlIHdpdGggZW11bGF0ZWQgb3IgZnV6emVkIFVTQiBkZXNjcmlwdG9ycywgaXQgdGhlbiBjYWxscyBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyYC4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgcGF0aCB0aGF0JiMzOTtzIGludGVyZXN0aW5nIGZvciBmdXp6aW5nLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gIEkgbmVlZCB0byBjaGVjayBgUlRXODhfODgyMkJVYCwgYFJUVzg4Xzg4MjJDVWAsIGBSVFc4OF84NzIzRFVgLCBgUlRXODhfODgyMUNVYCwgYFJUVzg4Xzg4MjFBVWAsIGBSVFc4OF84ODEyQVVgLCBgUlRXODhfODgxNEFVYCwgYFJUVzg4X0NPUkVgLCBhbmQgYFJUVzg4X1VTQmAsIGFuZCB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIHRoZXNlIGRyaXZlcnMgYXJlIGVuYWJsZWQgYW5kIGNhbiBiZSBpbmNsdWRlZCBmb3IgdGVzdGluZy4gR2l2ZW4gdGhhdCB0aGVzZSBVU0IgZGV2aWNlcyBhcmUgbGlzdGVkIGJ5IG5hbWUsIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7bSBnb2luZyB0byBkZXRlcm1pbmUgKipXb3J0aEZ1enppbmc9dHJ1ZSoqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UuKnJ0dzg4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnPTE3PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZzoxODpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWctMTktc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjEzNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVycy4gSSBrbm93IEkgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdgIGFuZCwgbW9yZSBicm9hZGx5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoZXNlIGFyZSB0aGUgZmlsZXMgd2hlcmUgdGhlIGtlcm5lbCYjMzk7cyBidWlsZCBzeXN0ZW0gZGVmaW5lcyB0aGUgc2VsZWN0YWJsZSBmZWF0dXJlcyBhbmQgb3B0aW9ucyBmb3IgdGhlc2UgbmV0d29yayBpbnRlcmZhY2VzLiBCeSBleHBsb3JpbmcgdGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcywgSSBzaG91bGQgYmUgYWJsZSB0byB1bmRlcnN0YW5kIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkgYXJlIGRlcGVuZGVudCBvbiBlYWNoIG90aGVyLCBhbmQgcG9zc2libHksIHdoYXQgc3BlY2lmaWMgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyB3aXRoaW4gdGhlc2UgS2NvbmZpZyBmaWxlcyB0byBjb25maWd1cmUgdGhlIHdpcmVsZXNzIGRyaXZlcnMgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7UmVhbHRlayBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX1JFQUxURUtcbiAgMTQ6XHRcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdcJiMzNDtcbiAgMTY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL0tjb25maWdcJiMzNDtcbiAgMTc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9LY29uZmlnXCYjMzQ7XG4gIDE4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wmIzM0O1xuICAxOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcJiMzNDtcbiAgMjA6XHRcbiAgMjE6XHRlbmRpZiAjIFdMQU5fVkVORE9SX1JFQUxURUtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2OTcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBwb3JlIG92ZXIgZXZlcnkgbGluZSwgZXZlcnkgYGNvbmZpZ2Agc3ltYm9sLCBldmVyeSBgZGVwZW5kcyBvbmAgY2xhdXNlLCBhbmQgZXZlcnkgZGVmYXVsdCB2YWx1ZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgbnVhbmNlczsgcGVyaGFwcyBzb21lIHN1YnRsZSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgdGhpcyBtb2R1bGUsIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgd2lyZWxlc3MgZHJpdmVycywgYW5kIGhvdyBldmVyeXRoaW5nIHRpZXMgdG9nZXRoZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCB0aGUgaW50ZW50IG9mIHRoZSBkZXNpZ25lcnMuIFRoaXMgd2lsbCBnaXZlIG1lIHdoYXQgSSBuZWVkIHRvIGFkdmlzZSBvbiBhIHJlbGF0ZWQgdG9waWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgUlRXODhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OC5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OF9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg4X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODhfU0RJT1xuICAyMTpcdFx0dHJpc3RhdGVcbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgUlRXODhfVVNCXG4gIDI0Olx0XHR0cmlzdGF0ZVxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBSVFc4OF84ODIyQlxuICAyNzpcdFx0dHJpc3RhdGVcbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgUlRXODhfODgyMkNcbiAgMzA6XHRcdHRyaXN0YXRlXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFJUVzg4Xzg3MjNYXG4gIDMzOlx0XHR0cmlzdGF0ZVxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBSVFc4OF84NzAzQlxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcdHNlbGVjdCBSVFc4OF84NzIzWFxuICAzODpcdFxuICAzOTpcdGNvbmZpZyBSVFc4OF84NzIzRFxuICA0MDpcdFx0dHJpc3RhdGVcbiAgNDE6XHRcdHNlbGVjdCBSVFc4OF84NzIzWFxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBSVFc4OF84ODIxQ1xuICA0NDpcdFx0dHJpc3RhdGVcbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgUlRXODhfODhYWEFcbiAgNDc6XHRcdHRyaXN0YXRlXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIFJUVzg4Xzg4MjFBXG4gIDUwOlx0XHR0cmlzdGF0ZVxuICA1MTpcdFx0c2VsZWN0IFJUVzg4Xzg4WFhBXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIFJUVzg4Xzg4MTJBXG4gIDU0Olx0XHR0cmlzdGF0ZVxuICA1NTpcdFx0c2VsZWN0IFJUVzg4Xzg4WFhBXG4gIDU2Olx0XG4gIDU3Olx0Y29uZmlnIFJUVzg4Xzg4MTRBXG4gIDU4Olx0XHR0cmlzdGF0ZVxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBSVFc4OF84ODIyQkVcbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAgNjI6XHRcdGRlcGVuZHMgb24gUENJXG4gIDYzOlx0XHRzZWxlY3QgUlRXODhfQ09SRVxuICA2NDpcdFx0c2VsZWN0IFJUVzg4X1BDSVxuICA2NTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjJCXG4gIDY2Olx0XHRoZWxwXG4gIDY3Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQkUgY2hpcHNldFxuICA2ODpcdFxuICA2OTpcdFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuICA3MDpcdFxuICA3MTpcdGNvbmZpZyBSVFc4OF84ODIyQlNcbiAgNzI6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gIDczOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICA3NDpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAgNzU6XHRcdHNlbGVjdCBSVFc4OF9TRElPXG4gIDc2Olx0XHRzZWxlY3QgUlRXODhfODgyMkJcbiAgNzc6XHRcdGhlbHBcbiAgNzg6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCUyBjaGlwc2V0XG4gIDc5Olx0XG4gIDgwOlx0XHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gIDgxOlx0XG4gIDgyOlx0Y29uZmlnIFJUVzg4Xzg4MjJCVVxuICA4MzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuICA4NDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgODU6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gIDg2Olx0XHRzZWxlY3QgUlRXODhfVVNCXG4gIDg3Olx0XHRzZWxlY3QgUlRXODhfODgyMkJcbiAgODg6XHRcdGhlbHBcbiAgODk6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCVSBjaGlwc2V0XG4gIDkwOlx0XG4gIDkxOlx0XHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAgOTI6XHRcbiAgOTM6XHRjb25maWcgUlRXODhfODgyMkNFXG4gIDk0Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gIDk1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA5NjpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAgOTc6XHRcdHNlbGVjdCBSVFc4OF9QQ0lcbiAgOTg6XHRcdHNlbGVjdCBSVFc4OF84ODIyQ1xuICA5OTpcdFx0aGVscFxuIDEwMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkNFIGNoaXBzZXRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMDgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBydHc4OCBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBkaXZlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdgIGZpbGUuIEkmIzM5O20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiB0aGVzZSBLY29uZmlnIGZpbGVzLCBzbyBJIGhhdmUgYSBwcmV0dHkgZ29vZCBpZGVhIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gSSBuZWVkIHRvIHNlZSBob3cgUmVhbHRlayYjMzk7cyBydHc4OCBkcml2ZXIgaXMgY29uZmlndXJlZCwgcGFydGljdWxhcmx5IHRoZSBkZXBlbmRlbmNpZXMsIG9wdGlvbnMsIGFuZCBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgb3IgaGFyZHdhcmUgc3VwcG9ydCB0aGV5JiMzOTtyZSBleHBvc2luZy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGEgaGllcmFyY2hpY2FsIG9yZ2FuaXphdGlvbiwgd2l0aCB0b3AtbGV2ZWwgb3B0aW9ucyBlbmNvbXBhc3NpbmcgYnJvYWRlciBkcml2ZXIgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZW4gbmVzdGVkIGNvbmZpZ3VyYXRpb25zIGZvciB0aGluZ3MgbGlrZSBzcGVjaWZpYyBjaGlwc2V0cywgcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcywgZGVidWdnaW5nIG9wdGlvbnMsIGFuZCByZWd1bGF0b3J5IGRvbWFpbiBjaG9pY2VzLgoKTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXNuJiMzOTt0IGp1c3QgdG8gKnVuZGVyc3RhbmQqIGl0OyBJJiMzOTttIHRyeWluZyB0byBtZW50YWxseSBtYXAgaXQgYWdhaW5zdCB0aGUgZXhpc3Rpbmcgd2lyZWxlc3Mgc3RhY2ssIGFuZCBob3cgSSYjMzk7ZCBhcHByb2FjaCBpbnRlZ3JhdGluZyBvciBtb2RpZnlpbmcgaXQgaWYgSSBuZWVkZWQgdG8uIFNwZWNpZmljYWxseSwgSeKAmWxsIGxvb2sgZm9yIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgc3BlY2lhbCBhdHRlbnRpb24gZHVyaW5nIGJ1aWxkLCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcy4gSSYjMzk7bGwgYmUgbm90aW5nIGRvd24gYW55IG5vbi1vYnZpb3VzIGRlcGVuZGVuY2llcyBvciBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIHRyaXAgbWUgdXAgbGF0ZXIuIEkmIzM5O20ga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHVubmVjZXNzYXJpbHkgY29tcGxleCBvciB0aGF0IGRldmlhdGVzIGZyb20gY29tbW9uIEtjb25maWcgY29udmVudGlvbnMsIGFzIHRob3NlIGFyZSBwb3RlbnRpYWwgcmVkIGZsYWdzIGZvciBmdXR1cmUgbWFpbnRlbmFuY2UgaXNzdWVzLiBIb3BlZnVsbHksIHRoaXMgS2NvbmZpZyBpcyB3ZWxsLXN0cnVjdHVyZWQgYW5kIGZvbGxvd3MgYmVzdCBwcmFjdGljZXM7IGEgY2xlYW4gYW5kIHJlYWRhYmxlIEtjb25maWcgbWFrZXMgZXZlcnl0aGluZyBtdWNoIGVhc2llciBkb3duIHRoZSByb2FkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMTpcdFxuIDEwMjpcdFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDEwMzpcdFxuIDEwNDpcdGNvbmZpZyBSVFc4OF84ODIyQ1NcbiAxMDU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTA2Olx0XHRkZXBlbmRzIG9uIE1NQ1xuIDEwNzpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAxMDg6XHRcdHNlbGVjdCBSVFc4OF9TRElPXG4gMTA5Olx0XHRzZWxlY3QgUlRXODhfODgyMkNcbiAxMTA6XHRcdGhlbHBcbiAxMTE6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDUyBjaGlwc2V0XG4gMTEyOlx0XG4gMTEzOlx0XHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMTE0Olx0XG4gMTE1Olx0Y29uZmlnIFJUVzg4Xzg4MjJDVVxuIDExNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDExNzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAxMTg6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTE5Olx0XHRzZWxlY3QgUlRXODhfVVNCXG4gMTIwOlx0XHRzZWxlY3QgUlRXODhfODgyMkNcbiAxMjE6XHRcdGhlbHBcbiAxMjI6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDVSBjaGlwc2V0XG4gMTIzOlx0XG4gMTI0Olx0XHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxMjU6XHRcbiAxMjY6XHRjb25maWcgUlRXODhfODcyM0RFXG4gMTI3Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNERSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTI4Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDEyOTpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAxMzA6XHRcdHNlbGVjdCBSVFc4OF9QQ0lcbiAxMzE6XHRcdHNlbGVjdCBSVFc4OF84NzIzRFxuIDEzMjpcdFx0aGVscFxuIDEzMzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODcyM0RFIGNoaXBzZXRcbiAxMzQ6XHRcbiAxMzU6XHRcdCAgODAyLjExbiBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDEzNjpcdFxuIDEzNzpcdGNvbmZpZyBSVFc4OF84NzIzRFNcbiAxMzg6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0RTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTM5Olx0XHRkZXBlbmRzIG9uIE1NQ1xuIDE0MDpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAxNDE6XHRcdHNlbGVjdCBSVFc4OF9TRElPXG4gMTQyOlx0XHRzZWxlY3QgUlRXODhfODcyM0RcbiAxNDM6XHRcdGhlbHBcbiAxNDQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg3MjNEUyBjaGlwc2V0XG4gMTQ1Olx0XG4gMTQ2Olx0XHQgIDgwMi4xMW4gU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxNDc6XHRcbiAxNDg6XHRjb25maWcgUlRXODhfODcyM0NTXG4gMTQ5Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDE1MDpcdFx0ZGVwZW5kcyBvbiBNTUNcbiAxNTE6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTUyOlx0XHRzZWxlY3QgUlRXODhfU0RJT1xuIDE1MzpcdFx0c2VsZWN0IFJUVzg4Xzg3MDNCXG4gMTU0Olx0XHRoZWxwXG4gMTU1Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBlbmFibGUgc3VwcG9ydCBmb3IgODcyM0NTIGNoaXBzZXQgKEVYUEVSSU1FTlRBTClcbiAxNTY6XHRcbiAxNTc6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB0aGUgODcyM0NTIDgwMi4xMW4gU0RJT1xuIDE1ODpcdFx0ICB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXIuXG4gMTU5Olx0XG4gMTYwOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcnR3ODhfODcyM2NzLlxuIDE2MTpcdFxuIDE2MjpcdGNvbmZpZyBSVFc4OF84NzIzRFVcbiAxNjM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0RVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAxNjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gMTY1Olx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDE2NjpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDE2NzpcdFx0c2VsZWN0IFJUVzg4Xzg3MjNEXG4gMTY4Olx0XHRoZWxwXG4gMTY5Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4NzIzRFUgY2hpcHNldFxuIDE3MDpcdFxuIDE3MTpcdFx0ICA4MDIuMTFuIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxNzI6XHRcbiAxNzM6XHRjb25maWcgUlRXODhfODgyMUNFXG4gMTc0Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTc1Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDE3NjpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAxNzc6XHRcdHNlbGVjdCBSVFc4OF9QQ0lcbiAxNzg6XHRcdHNlbGVjdCBSVFc4OF84ODIxQ1xuIDE3OTpcdFx0aGVscFxuIDE4MDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMUNFIGNoaXBzZXRcbiAxODE6XHRcbiAxODI6XHRcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxODM6XHRcbiAxODQ6XHRjb25maWcgUlRXODhfODgyMUNTXG4gMTg1Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDE4NjpcdFx0ZGVwZW5kcyBvbiBNTUNcbiAxODc6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTg4Olx0XHRzZWxlY3QgUlRXODhfU0RJT1xuIDE4OTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjFDXG4gMTkwOlx0XHRoZWxwXG4gMTkxOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIxQ1MgY2hpcHNldFxuIDE5MjpcdFxuIDE5MzpcdFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDE5NDpcdFxuIDE5NTpcdGNvbmZpZyBSVFc4OF84ODIxQ1VcbiAxOTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMUNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAxOTc6XHRcdGRlcGVuZHMgb24gVVNCXG4gMTk4Olx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDE5OTpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDIwMDpcdFx0c2VsZWN0IFJUVzg4Xzg4MjFDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTE0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgaGVhcnQgb2YgdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBnZXQgc3BlY2lmaWMgYW5kIHplcm8gaW4gb24gbGluZXMgMjAxIHRocm91Z2ggMjcwIG9mIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBmdW5jdGlvbmFsaXRpZXMgb2YgdGhpcyBkcml2ZXIgYXJlIGRlZmluZWQgYW5kIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSSB3YW50IHRvIHNlZSB3aGljaCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCB0aGUgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZSBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cywgYW5kIGhvdyB0aGUgZGV2ZWxvcGVycyBoYXZlIHN0cnVjdHVyZWQgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgZGVzaWduIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIGN1c3RvbWl6YXRpb24gb3IgZGVidWdnaW5nLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgbWl4IG9mIGdlbmVyYWwgb3B0aW9ucyByZWxhdGVkIHRvIFBIWSBwYXJhbWV0ZXJzLCBwb3dlciBtYW5hZ2VtZW50LCByZWd1bGF0b3J5IGRvbWFpbiBzZXR0aW5ncywgYW5kIHBvc3NpYmx5IHNvbWUgc3BlY2lmaWMgaGFyZHdhcmUtcmVsYXRlZCBjb25maWd1cmF0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSBSZWFsdGVrIGNoaXBzZXRzIHN1cHBvcnRlZCB3aXRoaW4gdGhpcyBLY29uZmlnIHNlY3Rpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBrZXkgaGVyZeKAlHdoaWNoIG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgbXVzdCBiZSBlbmFibGVkIGZvciBhIGdpdmVuIFJlYWx0ZWstc3BlY2lmaWMgb3B0aW9uIHRvIHdvcms/IEkmIzM5O20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCBjZXJ0YWluIG9wdGlvbnMgd2lsbCBiZSBndWFyZGVkIGJ5IHNwZWNpZmljIGBpZmRlZmAgc3RhdGVtZW50cyBvciBgc2VsZWN0YCBkaXJlY3RpdmVzLCB0byBzdXBwb3J0IGRpZmZlcmVudCBoYXJkd2FyZSByZXZpc2lvbnMgb3IgY29uZmlndXJhdGlvbnMuIFRoaXMgd2lsbCBob3BlZnVsbHkgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBkZXNpZ24gY2hvaWNlcyBtYWRlIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgYWNyb3NzIHZhcmlvdXMgUmVhbHRlayB3aXJlbGVzcyBkZXZpY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAxOlx0XHRoZWxwXG4gMjAyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIxQ1UgY2hpcHNldFxuIDIwMzpcdFxuIDIwNDpcdFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMjA1Olx0XG4gMjA2Olx0Y29uZmlnIFJUVzg4Xzg4MjFBVVxuIDIwNzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQVUvODgxMUFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAyMDg6XHRcdGRlcGVuZHMgb24gVVNCXG4gMjA5Olx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDIxMDpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDIxMTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjFBXG4gMjEyOlx0XHRoZWxwXG4gMjEzOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIxQVUgYW5kIDg4MTFBVSBjaGlwc2V0XG4gMjE0Olx0XG4gMjE1Olx0XHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAyMTY6XHRcbiAyMTc6XHRjb25maWcgUlRXODhfODgxMkFVXG4gMjE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMjE5Olx0XHRkZXBlbmRzIG9uIFVTQlxuIDIyMDpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAyMjE6XHRcdHNlbGVjdCBSVFc4OF9VU0JcbiAyMjI6XHRcdHNlbGVjdCBSVFc4OF84ODEyQVxuIDIyMzpcdFx0aGVscFxuIDIyNDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgxMkFVIGNoaXBzZXRcbiAyMjU6XHRcbiAyMjY6XHRcdCAgODAyLjExYWMgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDIyNzpcdFxuIDIyODpcdGNvbmZpZyBSVFc4OF84ODE0QUVcbiAyMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAyMzA6XHRcdGRlcGVuZHMgb24gUENJXG4gMjMxOlx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDIzMjpcdFx0c2VsZWN0IFJUVzg4X1BDSVxuIDIzMzpcdFx0c2VsZWN0IFJUVzg4Xzg4MTRBXG4gMjM0Olx0XHRoZWxwXG4gMjM1Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODE0QUUgY2hpcHNldFxuIDIzNjpcdFxuIDIzNzpcdFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDIzODpcdFxuIDIzOTpcdGNvbmZpZyBSVFc4OF84ODE0QVVcbiAyNDA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxNEFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAyNDE6XHRcdGRlcGVuZHMgb24gVVNCXG4gMjQyOlx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDI0MzpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDI0NDpcdFx0c2VsZWN0IFJUVzg4Xzg4MTRBXG4gMjQ1Olx0XHRoZWxwXG4gMjQ2Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODE0QVUgY2hpcHNldFxuIDI0NzpcdFxuIDI0ODpcdFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMjQ5Olx0XG4gMjUwOlx0Y29uZmlnIFJUVzg4X0RFQlVHXG4gMjUxOlx0XHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODggZGVidWcgc3VwcG9ydFwmIzM0O1xuIDI1MjpcdFx0ZGVwZW5kcyBvbiBSVFc4OF9DT1JFXG4gMjUzOlx0XHRoZWxwXG4gMjU0Olx0XHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0XG4gMjU1Olx0XG4gMjU2Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gc2ltcGxpZnkgZGVidWcgcHJvYmxlbXNcbiAyNTc6XHRcbiAyNTg6XHRjb25maWcgUlRXODhfREVCVUdGU1xuIDI1OTpcdFx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg4IGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuIDI2MDpcdFx0ZGVwZW5kcyBvbiBSVFc4OF9DT1JFXG4gMjYxOlx0XHRoZWxwXG4gMjYyOlx0XHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0XG4gMjYzOlx0XG4gMjY0Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gc2ltcGxpZnkgZGVidWcgcHJvYmxlbXNcbiAyNjU6XHRcbiAyNjY6XHRjb25maWcgUlRXODhfTEVEU1xuIDI2NzpcdFx0Ym9vbFxuIDI2ODpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuIDI2OTpcdFx0ZGVmYXVsdCB5XG4gMjcwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNDY0CgkJCQkJCQlvdXRwdXQ6IDI3MQoJCQkJCQkJdGhvdWdodHM6IDcwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRm9jdXNTeW1ib2xzLCBFbmFibGVDb25maWdzLCBhbmQgV29ydGhGdXp6aW5nIGZvciBSVFc4OCBEcml2ZXIgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IHBvaW50cyBmb3IgZnV6emluZyB0aGUgUlRXODggZHJpdmVyLgoKRmlyc3QsIHRoZSAqRm9jdXNTeW1ib2xzKi4gSSBzZWUgYHJ0d19jaGlwX2luZm9fc2V0dXBgIGlzIGEgY3JpdGljYWwgZXhwb3J0ZWQgc3ltYm9sLiBJdCYjMzk7cyB0aGUgb25lIHRoYXQgY2FsbHMgdGhlIHN0YXRpYyBmdW5jdGlvbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAuIE5vdywgYHJ0d191c2JfcHJvYmVgIGNhbGxzIGBydHdfY2hpcF9pbmZvX3NldHVwYCwgYnV0IHRoZXJlIGFyZSBvdGhlciBwcm9iZXMgdG8gY29uc2lkZXIgc3VjaCBhcyBgcnR3X3BjaV9wcm9iZWAsIGFuZCBgcnR3X3NkaW9fcHJvYmVgLiBIb3dldmVyLCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYXBwZWFycyB0byBiZSB0aGUgY2VudHJhbCBlbnRyeSBwb2ludC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBgRVhQT1JUX1NZTUJPTGAgbWVhbnMgaXQmIzM5O3MgKm5vdCogaW5saW5lZCwgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQuIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBpcyBzdGF0aWMsIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aGluIGBydHdfY2hpcF9pbmZvX3NldHVwYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIFNvLCBmb2N1c2luZyBvbiBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYW5kIGJ5IGV4dGVuc2lvbiwgYHJ0d191c2JfcHJvYmVgIHNlZW1zIGxpa2UgYSBnb29kIGFwcHJvYWNoLgoKTmV4dCwgdGhlICpFbmFibGVDb25maWdzKi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQuIFRoZSBsaXN0IHNob3dzIGBSVFc4OGAsIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBzcGVjaWZpYyBjaGlwc2V0cyBsaWtlIGBSVFc4OF84ODIyQlVgLCBgUlRXODhfODgyMkNVYCwgZXRjLiBBbHNvLCBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgZXNzZW50aWFsIGZvciB0aGlzIHRvIHdvcmsuCgpGaW5hbGx5LCBpcyB0aGlzIGNvZGUgKldvcnRoRnV6emluZyo/IExldCYjMzk7cyBnbyB0aHJvdWdoIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4KCjEuICBJcyBpdCBqdXN0IGRvY3VtZW50YXRpb24gb3IgS2NvbmZpZyBjaGFuZ2VzPyBObywgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBjb3JlIGRyaXZlciBmaWxlOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgLiBUaGlzIGlzIGdvb2QuCjIuICBBcmUgdGhlc2UganVzdCBsb2dnaW5nIGNoYW5nZXM/IE5vLCBpdCYjMzk7cyBhZGRpbmcgYSBjYWxsIHRvIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCwgYW5kIHRoZSBjb2RlICppbnRlcmFjdHMgd2l0aCBmaXJtd2FyZSBhbmQgZGV2aWNlIHByb3BlcnRpZXMqIGFuZCwgaW1wb3J0YW50bHksIGFsdGVycyB0aGUgTUFDIGFkZHJlc3MgcmVzb2x1dGlvbiBpZiB0aGUgZWZ1c2UgTUFDIGlzIGJhZC4KMy4gIEFyZSB0aGVzZSBzaW1wbGUgY29uc3RhbnQgY2hhbmdlcz8gTm9wZS4KNC4gIENhbiB0aGlzIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IFllcywgdmlhIFVTQiBlbXVsYXRpb24gdXNpbmcgZHVtbXlcX2hjZCBvciBSYXcgR2FkZ2V0Lgo1LiAgSXMgdGhpcyBzb21lIGVzb3RlcmljIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcj8gTm8sIGl0IHN1cHBvcnRzIFVTQiBkZXZpY2VzLgo2LiAgQXJlIHRoZXNlIHRlYXJkb3duIGNhbGxiYWNrcz8gTm8uCgpUaGVyZWZvcmUsICpXb3J0aEZ1enppbmcqIGlzIGluZGVlZCB0cnVlLCBhbmQgdGhpcyBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGJ1aWxkcyBjbGVhbmx5IGFuZCB0aGVuIEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODhfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJCVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQ1UmIzM0OywKICAgICYjMzQ7UlRXODhfODcyM0RVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjFDVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIxQVUmIzM0OywKICAgICYjMzQ7UlRXODhfODgxMkFVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MTRBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHdfY2hpcF9pbmZvX3NldHVwJiMzNDssCiAgICAmIzM0O3J0d191c2JfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1BQyBhZGRyZXNzIHNldHVwIGxvZ2ljIGluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIChjYWxsZWQgZHVyaW5nIGNoaXAgaW5mbyBzZXR1cCkgdG8gYXR0ZW1wdCBmZXRjaGluZyBhIE1BQyBhZGRyZXNzIHZpYSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGdlbmVyYXRpbmcgYSByYW5kb20gTUFDIGFkZHJlc3MuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgZm9yIFVTQi1iYXNlZCBydHc4OCBXaUZpIGRldmljZXMgdGhhdCBjYW4gYmUgZW11bGF0ZWQgYW5kIGZ1enplZCB2aWEgVVNCIGdhZGdldC9SYXcgR2FkZ2V0IGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODhfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJCVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQ1UmIzM0OywKICAgICYjMzQ7UlRXODhfODcyM0RVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjFDVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIxQVUmIzM0OywKICAgICYjMzQ7UlRXODhfODgxMkFVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MTRBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHdfY2hpcF9pbmZvX3NldHVwJiMzNDssCiAgICAmIzM0O3J0d191c2JfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1BQyBhZGRyZXNzIHNldHVwIGxvZ2ljIGluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIChjYWxsZWQgZHVyaW5nIGNoaXAgaW5mbyBzZXR1cCkgdG8gYXR0ZW1wdCBmZXRjaGluZyBhIE1BQyBhZGRyZXNzIHZpYSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGdlbmVyYXRpbmcgYSByYW5kb20gTUFDIGFkZHJlc3MuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgZm9yIFVTQi1iYXNlZCBydHc4OCBXaUZpIGRldmljZXMgdGhhdCBjYW4gYmUgZW11bGF0ZWQgYW5kIGZ1enplZCB2aWEgVVNCIGdhZGdldC9SYXcgR2FkZ2V0IGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgIG1vZGlmaWVzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIHNvIHRoYXQgd2hlbiBhbiBpbnZhbGlkIE1BQyBhZGRyZXNzIGlzIHJlYWQgZnJvbSB0aGUgZWZ1c2UsIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdG8gZmV0Y2ggYSB2YWxpZCBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSAvIGZpcm13YXJlIG5vZGUgb3IgTlZNRU0gdXNpbmcgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyKClgLiBCb3RoIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIChvbiBzdWNjZXNzKSBhbmQgYGV0aF9yYW5kb21fYWRkcigpYCAob24gZmFsbGJhY2spIGNvbXBsZXRlbHkgb3ZlcndyaXRlIGFuZCBpbml0aWFsaXplIGFsbCBgRVRIX0FMRU5gIGJ5dGVzIG9mIGBlZnVzZS1cdTAwM2VhZGRyYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnJhbmNoIGNvbmRpdGlvbnMgYXJlIGludHJvZHVjZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTQ6MTU6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jCmluZGV4IGNkOTI1NDM3MGZjYzcuLjBmMjM0OThiNWM5NmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jCkBAIC0yMDYwLDggJiM0MzsyMDYwLDExIEBAIHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KQogCWVmdXNlLSZndDtleHRfbG5hXzVnID0gZWZ1c2UtJmd0O2xuYV90eXBlXzVnICZhbXA7IEJJVCgzKSA/IDEgOiAwOwogCiAJaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKGVmdXNlLSZndDthZGRyKSkgewotCQlldGhfcmFuZG9tX2FkZHIoZWZ1c2UtJmd0O2FkZHIpOwotCQlkZXZfd2FybihydHdkZXYtJmd0O2RldiwgJiMzNDtlZnVzZSBNQUMgaW52YWxpZCwgdXNpbmcgcmFuZG9tXG4mIzM0Oyk7CiYjNDM7CQlpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtJmd0O2RldiwgZWZ1c2UtJmd0O2FkZHIpKSB7CiYjNDM7CQkJZXRoX3JhbmRvbV9hZGRyKGVmdXNlLSZndDthZGRyKTsKJiM0MzsJCQlkZXZfd2FybihydHdkZXYtJmd0O2RldiwKJiM0MzsJCQkJICYjMzQ7ZmFpbGVkIHRvIGdldCB2YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tXG4mIzM0Oyk7CiYjNDM7CQl9CiAJfQogCiBvdXRfZGlzYWJsZToKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJdCBhcHBlYXJzIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW52YWxpZCBNQUMgYWRkcmVzc2VzIHJlYWQgZnJvbSB0aGUgZUZ1c2UuIEJlZm9yZSwgaXQgd291bGQgc2ltcGx5IGdlbmVyYXRlIGEgcmFuZG9tIE1BQy4gTm93LCBpdCYjMzk7cyBhdHRlbXB0aW5nIHRvIG9idGFpbiBhIHZhbGlkIE1BQyBhZGRyZXNzIHVzaW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBiZWZvcmUgcmVzb3J0aW5nIHRvIGEgcmFuZG9tIGdlbmVyYXRpb24uCgpNeSBmaXJzdCBpbXB1bHNlIGlzIHRvIGNvbmZpcm0gdGhlIGxvY2F0aW9uIG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUuIEkgd2FudCB0byBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3IgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZy4gSSYjMzk7bGwgbmVlZCB0byBsb2NhdGUgdGhlIHNlY3Rpb24gb2YgY29kZSBhcm91bmQgbGluZSAyMDYwIGluIHRoYXQgZmlsZS4gSSB0aGluayBJJiMzOTtsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIHF1aWNrbHkgZ2V0IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgY2xhcmlmeSBhbnkgZGVwZW5kZW5jaWVzIG9yIG90aGVyIHJlbGV2YW50IGZhY3RvcnMgYXQgcGxheSB3aXRoIHRoaXMgcGF0Y2guIFRoaXMgYXBwcm9hY2ggd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIGNoYW5nZSYjMzk7cyBpbnRlbnQgYW5kIHBvdGVudGlhbCBpbXBhY3QgbW9yZSBlZmZlY3RpdmVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjA0NTpcdFx0aWYgKGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiA9PSAweGZmKVxuMjA0NjpcdFx0XHRlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xuMjA0NzpcdFx0aWYgKGVmdXNlLVx1MDAzZWJ0X3NldHRpbmcgXHUwMDI2IEJJVCgwKSlcbjIwNDg6XHRcdFx0ZWZ1c2UtXHUwMDNlc2hhcmVfYW50ID0gdHJ1ZTtcbjIwNDk6XHRcdGlmIChlZnVzZS1cdTAwM2VyZWdkID09IDB4ZmYpXG4yMDUwOlx0XHRcdGVmdXNlLVx1MDAzZXJlZ2QgPSAwO1xuMjA1MTpcdFx0aWYgKGVmdXNlLVx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPT0gMHhmZilcbjIwNTI6XHRcdFx0ZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9IDA7XG4yMDUzOlx0XHRpZiAoZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9PSAweGZmKVxuMjA1NDpcdFx0XHRlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID0gMDtcbjIwNTU6XHRcbjIwNTY6XHRcdGVmdXNlLVx1MDAzZWJ0Y29leCA9IChlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gXHUwMDI2IDB4ZTApID09IDB4MjA7XG4yMDU3Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfMmcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzJnIFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcbjIwNTg6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfMmcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDU5Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfNWcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzVnIFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcbjIwNjA6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfNWcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDYxOlx0XG4yMDYyOlx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjM6XHRcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjQ6XHRcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4yMDY1Olx0XHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbjIwNjY6XHRcdFx0XHRcdCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHZhbGlkIE1BQyBhZGRyZXNzLCB1c2luZyByYW5kb21cXG5cJiMzNDspO1xuMjA2NzpcdFx0XHR9XG4yMDY4Olx0XHR9XG4yMDY5Olx0XG4yMDcwOlx0b3V0X2Rpc2FibGU6XG4yMDcxOlx0XHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XG4yMDcyOlx0XG4yMDczOlx0b3V0X3VubG9jazpcbjIwNzQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZydHdkZXYtXHUwMDNlbXV0ZXgpO1xuMjA3NTpcdFx0cmV0dXJuIHJldDtcbjIwNzY6XHR9XG4yMDc3Olx0XG4yMDc4Olx0c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4yMDc5Olx0e1xuMjA4MDpcdFx0c3RydWN0IHJ0d19oYWwgKmhhbCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VoYWw7XG4yMDgxOlx0XHRjb25zdCBzdHJ1Y3QgcnR3X3JmZV9kZWYgKnJmZV9kZWYgPSBydHdfZ2V0X3JmZV9kZWYocnR3ZGV2KTtcbjIwODI6XHRcbjIwODM6XHRcdGlmICghcmZlX2RlZilcbjIwODQ6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjcKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCB0aGlzIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBhbmQgd2hlcmUgaXQmIzM5O3MgdXNlZC4gU2luY2UgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgY29kZWJhc2UsIHRoZSBxdWlja2VzdCB3YXkgdG8gZmluZCBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGEgZnVuY3Rpb24gbGlrZSB0aGlzIGlzIHRvIHNpbXBseSB1c2UgZ3JlcCB0byBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgb2YgaXQuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGFuIGluaXRpYWwgb3ZlcnZpZXcgb2YgaXRzIGNvbnRleHQuIEEgc2ltcGxlIGdyZXAgd2lsbCB0ZWxsIG1lIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQsIHdoZXJlIGl0JiMzOTtzIGNhbGxlZCwgYW5kIHdoYXQga2luZCBvZiBkYXRhIGl0JiMzOTtzIG9wZXJhdGluZyBvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgZXNwZWNpYWxseSBpZiB0aGlzIGlzIHNvbWV0aGluZyBuZXcgdGhhdCBJIGFtIGxvb2tpbmcgaW50by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oPTM0PWludCBudm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICphZGRyYnVmKTtcbmluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaDozNTppbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpO1xuaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oLTM2LWludCBkZXZpY2VfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG4tLVxubmV0L2V0aGVybmV0L2V0aC5jPTYwND1FWFBPUlRfU1lNQk9MKGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MpO1xuLS1cbm5ldC9ldGhlcm5ldC9ldGguYy02MTAtICovXG5uZXQvZXRoZXJuZXQvZXRoLmM6NjExOmludCBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgY2hhciAqYWRkcilcbm5ldC9ldGhlcm5ldC9ldGguYy02MTIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTUFDIEFkZHJlc3MgUmV0cmlldmFsKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSYjMzk7cmUgcHVsbGluZyB0aGUgTUFDIGFkZHJlc3MgZnJvbSBhIGRldmljZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBpcyBwcm9iYWJseSBoYW5kbGVkIHNvbWV3aGVyZSBpbiB0aGUgRXRoZXJuZXQgZHJpdmVyIGNvZGUsIHNvIG15IG5leHQgc3RlcCBpcyB0byBoZWFkIG92ZXIgdG8gYG5ldC9ldGhlcm5ldC9ldGguY2AuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gdGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGl0c2VsZiwgYW5kIHRoZW4gaG93IGl0JiMzOTtzIGludGVyZmFjaW5nIHdpdGggdGhlIGhhcmR3YXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB3ZSYjMzk7cmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgTklDLCB3aGV0aGVyIHdlJiMzOTtyZSB1c2luZyByZWdpc3RlcnMsIG9yIERNQSwgYW5kIHdoYXQgYWJzdHJhY3Rpb24gbGF5ZXIgaXMgYmVpbmcgdXNlZCB0byBtYWtlIHRoaXMgaGFwcGVuLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBpbiBob3cgd2UmIzM5O3JlIGZldGNoaW5nIHRoZSBhZGRyZXNzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYwNTpcdFxuIDYwNjpcdC8qKlxuIDYwNzpcdCAqIGRldmljZV9nZXRfbWFjX2FkZHJlc3MgLSBHZXQgdGhlIE1BQyBmb3IgYSBnaXZlbiBkZXZpY2VcbiA2MDg6XHQgKiBAZGV2Olx0UG9pbnRlciB0byB0aGUgZGV2aWNlXG4gNjA5Olx0ICogQGFkZHI6XHRBZGRyZXNzIG9mIGJ1ZmZlciB0byBzdG9yZSB0aGUgTUFDIGluXG4gNjEwOlx0ICovXG4gNjExOlx0aW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICphZGRyKVxuIDYxMjpcdHtcbiA2MTM6XHRcdGlmICghZndub2RlX2dldF9tYWNfYWRkcmVzcyhkZXZfZndub2RlKGRldiksIGFkZHIpKVxuIDYxNDpcdFx0XHRyZXR1cm4gMDtcbiA2MTU6XHRcbiA2MTY6XHRcdHJldHVybiBudm1lbV9nZXRfbWFjX2FkZHJlc3MoZGV2LCBhZGRyKTtcbiA2MTc6XHR9XG4gNjE4Olx0RVhQT1JUX1NZTUJPTChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKTtcbiA2MTk6XHRcbiA2MjA6XHQvKipcbiA2MjE6XHQgKiBkZXZpY2VfZ2V0X2V0aGRldl9hZGRyZXNzIC0gU2V0IG5ldGRldiYjMzk7cyBNQUMgYWRkcmVzcyBmcm9tIGEgZ2l2ZW4gZGV2aWNlXG4gNjIyOlx0ICogQGRldjpcdFBvaW50ZXIgdG8gdGhlIGRldmljZVxuIDYyMzpcdCAqIEBuZXRkZXY6XHRQb2ludGVyIHRvIG5ldGRldiB0byB3cml0ZSB0aGUgYWRkcmVzcyB0b1xuIDYyNDpcdCAqXG4gNjI1Olx0ICogV3JhcHBlciBhcm91bmQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpIHdoaWNoIHdyaXRlcyB0aGUgYWRkcmVzc1xuIDYyNjpcdCAqIGRpcmVjdGx5IHRvIG5ldGRldi1cdTAwM2VkZXZfYWRkci5cbiA2Mjc6XHQgKi9cbiA2Mjg6XHRpbnQgZGV2aWNlX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gNjI5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjI2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE1BQyBBZGRyZXNzIFJldHJpZXZhbCoqCgpPa2F5LCBzbyB0aGUgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGZ1bmN0aW9uLi4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBsb2dpYy4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbiB0aGUgc3VyZmFjZSwgYnV0IHRoZXJlIGFyZSBhbHdheXMgbnVhbmNlcy4gTXkgcHJpbWFyeSB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZGVzaWduZWQgdG8gZmV0Y2ggdGhlIE1BQyBhZGRyZXNzLCBhbmQgaXQmIzM5O3MgZG9pbmcgc28gd2l0aCBhIHdlbGwtZGVmaW5lZCBmYWxsYmFjayBtZWNoYW5pc20uIEZpcnN0IGl0JiMzOTtzIHRyeWluZyB0aGUgRlcgbm9kZSBvciBOVm1lbSBhbmQsIHNob3VsZCB0aG9zZSBmYWlsLCBpdCYjMzk7cyBhdHRlbXB0aW5nIHRvIG9idGFpbiBhIHJhbmRvbSBhZGRyZXNzLgoKVGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgaXMgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIGBlZnVzZS0mZ3Q7YWRkcmAgb24gc3VjY2VzcywgaW5kaWNhdGluZyB0aGUgcmV0cmlldmVkIE1BQyBhZGRyZXNzIGlzICpwbGFjZWQqIGluIHRoaXMgc3RydWN0IHZhcmlhYmxlLiBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIHplcm8gdmFsdWUgb24gc3VjY2Vzcywgd2hpY2ggd291bGQgY29uZmlybSB0aGlzIHdyaXRlIG9wZXJhdGlvbi4gR2l2ZW4gdGhhdCwgdGhlIGBlZnVzZS0mZ3Q7YWRkcmAgaXMgd2hlcmUgdGhlIHJlc3VsdCBpcyBmb3VuZCwgYXNzdW1pbmcgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMgd2l0aG91dCBhIG5lZ2F0aXZlIHZhbHVlIHJldHVybmVkLCBzbyBpdCYjMzk7cyBwb3B1bGF0ZWQgd2l0aCBFVEhfQUxFTiBieXRlcy4KCk5vdywgSSBuZWVkIHRvIGxvb2sgY2xvc2VyIGF0IHRoZSBgc3RydWN0IHJ0d19lZnVzZWAuIEkgc2hvdWxkIHVuZGVyc3RhbmQgd2hhdCBgZWZ1c2VgIGlzLCBpbiB0aGlzIGNvbnRleHQsIGFuZCBlbnN1cmUgdGhhdCB0aGUgbWVtb3J5IGxheW91dCBpcyBzdWl0YWJsZSBmb3IgdGhpcyB0eXBlIG9mIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHJ0d19lZnVzZSBcXHsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmg9MTcxMT1zdHJ1Y3QgcnR3X2RtX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTE3OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDoxNzkyOnN0cnVjdCBydHdfZWZ1c2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmgtMTc5My1cdHUzMiBzaXplO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTMxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgcnR3ODggRHJpdmVyJiMzOTtzIE1haW4gSGVhZGVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaGAgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBsaW5lIDE3OTIuIEkga25vdyB0aGlzIGNvZGUgYmFzZSwgSSBjYW4gcHJvYmFibHkgZ3Vlc3Mgd2hhdCBraW5kIG9mIGRhdGEgc3RydWN0dXJlIG9yIG1hY3JvIGRlZmluaXRpb24gSSBzaG91bGQgZmluZCBhdCB0aGF0IGxvY2F0aW9uIGFuZCB3aGF0IGlzIHRoZSBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgcmV2ZWFscyBpdHNlbGYgYXQgdGhhdCBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzkwOlx0fTtcbjE3OTE6XHRcbjE3OTI6XHRzdHJ1Y3QgcnR3X2VmdXNlIHtcbjE3OTM6XHRcdHUzMiBzaXplO1xuMTc5NDpcdFx0dTMyIHBoeXNpY2FsX3NpemU7XG4xNzk1Olx0XHR1MzIgbG9naWNhbF9zaXplO1xuMTc5NjpcdFx0dTMyIHByb3RlY3Rfc2l6ZTtcbjE3OTc6XHRcbjE3OTg6XHRcdHU4IGFkZHJbRVRIX0FMRU5dO1xuMTc5OTpcdFx0dTggY2hhbm5lbF9wbGFuO1xuMTgwMDpcdFx0dTggY291bnRyeV9jb2RlWzJdO1xuMTgwMTpcdFx0dTggcmZfYm9hcmRfb3B0aW9uO1xuMTgwMjpcdFx0dTggcmZlX29wdGlvbjtcbjE4MDM6XHRcdHU4IHBvd2VyX3RyYWNrX3R5cGU7XG4xODA0Olx0XHR1OCB0aGVybWFsX21ldGVyW1JUV19SRl9QQVRIX01BWF07XG4xODA1Olx0XHR1OCB0aGVybWFsX21ldGVyX2s7XG4xODA2Olx0XHR1OCBjcnlzdGFsX2NhcDtcbjE4MDc6XHRcdHU4IGFudF9kaXZfY2ZnO1xuMTgwODpcdFx0dTggYW50X2Rpdl90eXBlO1xuMTgwOTpcdFx0dTggcmVnZDtcbjE4MTA6XHRcdHU4IGFmZTtcbjE4MTE6XHRcbjE4MTI6XHRcdHU4IGxuYV90eXBlXzJnO1xuMTgxMzpcdFx0dTggbG5hX3R5cGVfNWc7XG4xODE0Olx0XHR1OCBnbG5hX3R5cGU7XG4xODE1Olx0XHR1OCBhbG5hX3R5cGU7XG4xODE2Olx0XHRib29sIGV4dF9sbmFfMmc7XG4xODE3Olx0XHRib29sIGV4dF9sbmFfNWc7XG4xODE4Olx0XHR1OCBwYV90eXBlXzJnO1xuMTgxOTpcdFx0dTggcGFfdHlwZV81ZztcbjE4MjA6XHRcdHU4IGdwYV90eXBlO1xuMTgyMTpcdFx0dTggYXBhX3R5cGU7XG4xODIyOlx0XHRib29sIGV4dF9wYV8yZztcbjE4MjM6XHRcdGJvb2wgZXh0X3BhXzVnO1xuMTgyNDpcdFx0dTggdHhfYmJfc3dpbmdfc2V0dGluZ18yZztcbjE4MjU6XHRcdHU4IHR4X2JiX3N3aW5nX3NldHRpbmdfNWc7XG4xODI2Olx0XG4xODI3Olx0XHRib29sIGJ0Y29leDtcbjE4Mjg6XHRcdC8qIGJ0IHNoYXJlIGFudGVubmEgd2l0aCB3aWZpICovXG4xODI5Olx0XHRib29sIHNoYXJlX2FudDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkwNAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGVmdXNlIEluaXRpYWxpemF0aW9uIGluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBlZnVzZWAgZGF0YSBzdHJ1Y3R1cmUgaXMgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBgZWZ1c2VgIGRhdGEgaXMgYWN0dWFsbHkgKmFsbG9jYXRlZCogYW5kICppbml0aWFsaXplZCouIEFyZSB3ZSBzZWVpbmcgYSBzdGF0aWNhbGx5IGRlZmluZWQgYGVmdXNlYCBzb21ld2hlcmUsIG9yIGlzIGl0IGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8gQXJlIHRoZXJlIGFueSBjb25zdHJ1Y3RvcnMgb3IgaW5pdCBmdW5jdGlvbnMgaW52b2x2ZWQ/IFdoZXJlJiMzOTtzIHRoZSBwcmltYXJ5IHNldHVwIGhhcHBlbmluZywgYW5kIHdoYXQmIzM5O3MgdGhlIHR5cGljYWwgd29ya2Zsb3c/IFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBmbGFzaCBpbnRlcmZhY2UgaXMgc3VwcG9zZWQgdG8gYmUgd29ya2luZywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBwb2ludHMgb2YgZmFpbHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMDAzPXN0YXRpYyB2b2lkIHJ0d19jaGlwX2VmdXNlX2Rpc2FibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjAwOTpzdGF0aWMgaW50IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIwOTc9aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjEwNzpcdHJldCA9IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMDgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jPTEwMDc9aW50IHJ0dzg4eHhhX3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTAxODpcdC8qIE92ZXJyaWRlIHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMTktXHRpZiAoY2hpcC1cdTAwM2VpZCA9PSBSVFdfQ0hJUF9UWVBFXzg4MjFBKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMDIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jOjEwMjM6XHQvKiBPdmVycmlkZSBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKCkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMDI0LVx0aWYgKGNoaXAtXHUwMDNlaWQgPT0gUlRXX0NISVBfVFlQRV84ODEyQSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1OAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbiwgZm9jdXNpbmcgb24gdGhlIGNvbnRleHQgYW5kIGxpa2VseSBkZXNpZ24gY29uc2lkZXJhdGlvbnMsIGFzIGlmIGl0JiMzOTtzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGlzc2VjdCBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaW4gdGhlIFJlYWx0ZWsgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBpdCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggdGhlICYjMzQ7ZWZ1c2UmIzM0OyBzdWdnZXN0cyBpdCYjMzk7cyBhIGNyaXRpY2FsIGVhcmx5LXN0YWdlIGZ1bmN0aW9uLCBsaWtlbHkgaW52b2x2ZWQgaW4gcmV0cmlldmluZyBhbmQgc2V0dGluZyB1cCBpbml0aWFsIGNoaXAgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20gbm9uLXZvbGF0aWxlIG1lbW9yeS4gVGhhdCYjMzk7cyBhIGtleSBwcm9jZXNzLgoKSSYjMzk7ZCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZSByZXNwb25zaWJsZSBmb3IgcmVhZGluZyB2aXRhbCBpbmZvcm1hdGlvbiBzdG9yZWQgb24gdGhlIGNoaXAmIzM5O3MgaW50ZXJuYWwgZWxlY3Ryb25pYyBmdXNlLCBvZnRlbiB1c2VkIGZvciBmYWN0b3J5IGNhbGlicmF0aW9uIGRhdGEsIGNoaXAgcmV2aXNpb24gaW5mb3JtYXRpb24sIE1BQyBhZGRyZXNzZXMsIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLCBhbmQgcG9zc2libHkgZXZlbiBzb21lIGJhc2ljIGZpcm13YXJlIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGJlZ2lucy4KCkkmIzM5O20gdGhpbmtpbmcgaXTigJlzIHByb2JhYmx5IHN0cnVjdHVyZWQgdG8gaGFuZGxlIHBvdGVudGlhbCByZWFkIGVycm9ycyBmcm9tIHRoZSBlRnVzZSwgd2l0aCBzb21lIGtpbmQgb2YgZmFsbGJhY2sgb3IgZXJyb3IgaGFuZGxpbmcgaW4gcGxhY2UuIEkgd291bGQgZXhwZWN0IGl0IHRvIGRldGVybWluZSB0aGUgY2hpcCYjMzk7cyBoYXJkd2FyZSByZXZpc2lvbiBiYXNlZCBvbiB0aGUgZUZ1c2UgZGF0YSwgYXMgdGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBmZWF0dXJlIGVuYWJsaW5nIG9yIGRpc2FibGluZy4gSXQgd291bGQgYWxzbyBuZWVkIHRvIGFkZHJlc3MgcG9zc2libGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBkaWZmZXJlbnQgY2hpcCByZXZpc2lvbnMuCgpUaGlzIGZ1bmN0aW9uIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgaW50ZXJhY3QgY2xvc2VseSB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIERhdGEgcmV0cmlldmVkIGhlcmUgd2lsbCBkaWN0YXRlIHdoYXQgZ2V0cyBsb2FkZWQgbGF0ZXIsIGhvdyB0aGUgcG93ZXIgbWFuYWdlbWVudCBpcyBzdHJ1Y3R1cmVkLCBhbmQgd2hpY2ggcmVndWxhdG9yeSBjb25zdHJhaW50cyBhcmUgYXBwbGllZC4gVW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpcyB2aXRhbCBiZWNhdXNlIGEgY29ycnVwdGVkIG9yIGluY29ycmVjdGx5IGNvbmZpZ3VyZWQgZUZ1c2UgY2FuIGxlYWQgdG8gY29tcGxldGUgZmFpbHVyZSBvciBzZXZlcmUgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gb2YgdGhlIHdpcmVsZXNzIGludGVyZmFjZS4gSSYjMzk7bSBpbWFnaW5pbmcgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGxvd2VyIGxldmVsIGhhcmR3YXJlIGFic3RyYWN0aW9uIHRvIHJlYWQgYml0cyBmcm9tIHRoZSBlRnVzZSBhbmQgdGhlbiB0cmFuc2xhdGVzIHRoZSBkYXRhIHRvIG1vcmUgdXNhYmxlIHZhcmlhYmxlcyB0aGF0IGxhdGVyIGZ1bmN0aW9ucyBtYXkgdXRpbGl6ZS4KCk15IGNvbmNlcm4gaXMgdGhhdCwgd2hpbGUgZUZ1c2UgaXMgcmVsaWFibGUsIGVycm9ycyBpbiB0aGUgcmVhZGluZyBwcm9jZXNzIGNhbiBzdGlsbCBoYXBwZW4sIHRoZXJlZm9yZSBJIHdpbGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIGVycm9yIGhhbmRsaW5nIHRvIGFzc3VyZSB0aGUgY2hpcCBydW5zIGFzIGl0IHNob3VsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjAwODpcdFxuMjAwOTpcdHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuMjAxMDpcdHtcbjIwMTE6XHRcdHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWVmdXNlO1xuMjAxMjpcdFx0aW50IHJldDtcbjIwMTM6XHRcbjIwMTQ6XHRcdG11dGV4X2xvY2soXHUwMDI2cnR3ZGV2LVx1MDAzZW11dGV4KTtcbjIwMTU6XHRcbjIwMTY6XHRcdC8qIHBvd2VyIG9uIG1hYyB0byByZWFkIGVmdXNlICovXG4yMDE3Olx0XHRyZXQgPSBydHdfY2hpcF9lZnVzZV9lbmFibGUocnR3ZGV2KTtcbjIwMTg6XHRcdGlmIChyZXQpXG4yMDE5Olx0XHRcdGdvdG8gb3V0X3VubG9jaztcbjIwMjA6XHRcbjIwMjE6XHRcdHJldCA9IHJ0d19wYXJzZV9lZnVzZV9tYXAocnR3ZGV2KTtcbjIwMjI6XHRcdGlmIChyZXQpXG4yMDIzOlx0XHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4yMDI0Olx0XG4yMDI1Olx0XHRyZXQgPSBydHdfZHVtcF9od19mZWF0dXJlKHJ0d2Rldik7XG4yMDI2Olx0XHRpZiAocmV0KVxuMjAyNzpcdFx0XHRnb3RvIG91dF9kaXNhYmxlO1xuMjAyODpcdFxuMjAyOTpcdFx0cmV0ID0gcnR3X2NoZWNrX3N1cHBvcnRlZF9yZmUocnR3ZGV2KTtcbjIwMzA6XHRcdGlmIChyZXQpXG4yMDMxOlx0XHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4yMDMyOlx0XG4yMDMzOlx0XHRpZiAoZWZ1c2UtXHUwMDNlY3J5c3RhbF9jYXAgPT0gMHhmZilcbjIwMzQ6XHRcdFx0ZWZ1c2UtXHUwMDNlY3J5c3RhbF9jYXAgPSAwO1xuMjAzNTpcdFx0aWYgKGVmdXNlLVx1MDAzZXBhX3R5cGVfMmcgPT0gMHhmZilcbjIwMzY6XHRcdFx0ZWZ1c2UtXHUwMDNlcGFfdHlwZV8yZyA9IDA7XG4yMDM3Olx0XHRpZiAoZWZ1c2UtXHUwMDNlcGFfdHlwZV81ZyA9PSAweGZmKVxuMjAzODpcdFx0XHRlZnVzZS1cdTAwM2VwYV90eXBlXzVnID0gMDtcbjIwMzk6XHRcdGlmIChlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyA9PSAweGZmKVxuMjA0MDpcdFx0XHRlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyA9IDA7XG4yMDQxOlx0XHRpZiAoZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgPT0gMHhmZilcbjIwNDI6XHRcdFx0ZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgPSAwO1xuMjA0MzpcdFx0aWYgKGVmdXNlLVx1MDAzZWNoYW5uZWxfcGxhbiA9PSAweGZmKVxuMjA0NDpcdFx0XHRlZnVzZS1cdTAwM2VjaGFubmVsX3BsYW4gPSAweDdmO1xuMjA0NTpcdFx0aWYgKGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiA9PSAweGZmKVxuMjA0NjpcdFx0XHRlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xuMjA0NzpcdFx0aWYgKGVmdXNlLVx1MDAzZWJ0X3NldHRpbmcgXHUwMDI2IEJJVCgwKSlcbjIwNDg6XHRcdFx0ZWZ1c2UtXHUwMDNlc2hhcmVfYW50ID0gdHJ1ZTtcbjIwNDk6XHRcdGlmIChlZnVzZS1cdTAwM2VyZWdkID09IDB4ZmYpXG4yMDUwOlx0XHRcdGVmdXNlLVx1MDAzZXJlZ2QgPSAwO1xuMjA1MTpcdFx0aWYgKGVmdXNlLVx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPT0gMHhmZilcbjIwNTI6XHRcdFx0ZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9IDA7XG4yMDUzOlx0XHRpZiAoZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9PSAweGZmKVxuMjA1NDpcdFx0XHRlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID0gMDtcbjIwNTU6XHRcbjIwNTY6XHRcdGVmdXNlLVx1MDAzZWJ0Y29leCA9IChlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gXHUwMDI2IDB4ZTApID09IDB4MjA7XG4yMDU3Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfMmcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzJnIFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcbjIwNTg6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfMmcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDU5Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfNWcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzVnIFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcbjIwNjA6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfNWcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDYxOlx0XG4yMDYyOlx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjM6XHRcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjQ6XHRcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4yMDY1Olx0XHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbjIwNjY6XHRcdFx0XHRcdCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHZhbGlkIE1BQyBhZGRyZXNzLCB1c2luZyByYW5kb21cXG5cJiMzNDspO1xuMjA2NzpcdFx0XHR9XG4yMDY4Olx0XHR9XG4yMDY5Olx0XG4yMDcwOlx0b3V0X2Rpc2FibGU6XG4yMDcxOlx0XHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XG4yMDcyOlx0XG4yMDczOlx0b3V0X3VubG9jazpcbjIwNzQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZydHdkZXYtXHUwMDNlbXV0ZXgpO1xuMjA3NTpcdFx0cmV0dXJuIHJldDtcbjIwNzY6XHR9XG4yMDc3Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MzcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYGVmdXNlLSZndDthZGRyYCBiYWNrIHRvIGl0cyBvcmlnaW4uIEZyb20gd2hhdCBJIHJlY2FsbCwgYGVmdXNlLSZndDthZGRyYCBpcyBuZXN0bGVkIHdpdGhpbiBgcnR3ZGV2LSZndDtlZnVzZWAuIEFuZCwgaWYgbXkgbWVtb3J5IGlzIHNlcnZpbmcgbWUgcmlnaHQsIGBydHdkZXZgIGl0c2VsZiBpcyBhbiBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBsYXJnZXIgYHJ0d2RldmAgc3RydWN0dXJlLiBJIGJlbGlldmUgdGhhdCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkLCB0eXBpY2FsbHkgdGhyb3VnaCBga3phbGxvY2AsIGBhbGxvY19ldGhlcmRldmAsIG9yIHBlcmhhcHMgZXZlbiBzb21ldGhpbmcgbGlrZSBgaWVlZTgwMjExX2FsbG9jX2h3YCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IGNvbnRleHQuCgpTbywgdGhlIGNydWNpYWwgbmV4dCBzdGVwIGlzIHBpbnBvaW50aW5nIHByZWNpc2VseSAqd2hlcmUqIHRoZSBgc3RydWN0IHJ0d19kZXZgIGlzIGFsbG9jYXRlZCB3aXRoaW4gdGhpcyBjb2RlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbGlmZWN5Y2xlIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvZiBgZWZ1c2UtJmd0O2FkZHJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19jb3JlX2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MjQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgQ29yZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGBydHdfY29yZWAgc3R1ZmYgaXMgaW5pdGlhbGl6ZWQuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGxvY2F0ZSBlaXRoZXIgdGhlIGBydHdfY29yZV9pbml0YCBmdW5jdGlvbiBpdHNlbGYsIG9yIGZhaWxpbmcgdGhhdCwgSSYjMzk7bGwgdHJ5IHRvIGZpbmQgd2hlcmUgdGhlIGBydHdfZGV2YCB2YXJpYWJsZSBpcyBiZWluZyBhbGxvY2F0ZWQuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSDigJMgdW5kZXJzdGFuZGluZyB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGlzIGNydWNpYWwgZm9yIGRlZXBlciBhbmFseXNpcy4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aG9zZSB0d28gZW50cnkgcG9pbnRzIGFuZCBzZWUgd2hlcmUgdGhlIHRyYWlsIGxlYWRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHdfZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTY2PXN0cnVjdCBydHdfd2F0Y2hfZG9nX2l0ZXJfZGF0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjc6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTY4LVx0c3RydWN0IHJ0d192aWYgKnJ0d3ZpZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzE6c3RhdGljIHZvaWQgcnR3X2R5bmFtaWNfY3NpX3JhdGUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0d192aWYgKnJ0d3ZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTg5PXN0YXRpYyB2b2lkIHJ0d192aWZfd2F0Y2hfZG9nX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDY6c3RhdGljIHZvaWQgcnR3X3N3X2JlYWNvbl9sb3NzX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDctXHRcdFx0XHQgICAgIHN0cnVjdCBydHdfdmlmICpydHd2aWYsIGludCByZWNlaXZlZF9iZWFjb25zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIyND1zdGF0aWMgdm9pZCBydHdfd2F0Y2hfZG9nX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjI1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIyNjpcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMjctXHRcdFx0XHRcdCAgICAgIHdhdGNoX2RvZ193b3JrLndvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTMxMj1zdGF0aWMgdm9pZCBydHdfYzJoX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMzEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjMxNDpcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsIGMyaF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMxNS1cdHN0cnVjdCBza19idWZmICpza2IsICp0bXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MzI0PXN0YXRpYyB2b2lkIHJ0d19pcHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zMjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzI2Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3X2RldiwgaXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMzI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTMzND1zdGF0aWMgdm9pZCBydHdfc3RhX3JjX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMzNy1cdFx0XHRcdFx0ICAgICAgIHJjX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzM4Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IHNpLVx1MDAzZXJ0d2RldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzozNDU6aW50IHJ0d19zdGFfYWRkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zNDYtXHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMzc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzgwOnZvaWQgcnR3X3N0YV9yZW1vdmUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTM4MS1cdFx0ICAgIGJvb2wgZndfZXhpc3QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NDA0PXN0cnVjdCBydHdfZndjZF9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjQxMTpzdGF0aWMgaW50IHJ0d19md2NkX3ByZXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNDM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NDM2OnN0YXRpYyB1OCAqcnR3X2Z3Y2RfbmV4dChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgaXRlbSwgdTMyIHNpemUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00Mzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjQ2MzpzdGF0aWMgdm9pZCBydHdfZndjZF9kdW1wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00NjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjQ3NzpzdGF0aWMgdm9pZCBydHdfZndjZF9mcmVlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgZnJlZV9zZWxmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNDc4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo0OTA6c3RhdGljIGludCBydHdfZndfZHVtcF9jcmFzaF9sb2coc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ5MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NTIwOmludCBydHdfZHVtcF9mdyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCB1MzIgb2NwX3NyYywgdTMyIHNpemUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy01MjEtXHRcdHUzMiBmd2NkX2l0ZW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NTU5PUVYUE9SVF9TWU1CT0wocnR3X2R1bXBfZncpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NTYxOmludCBydHdfZHVtcF9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3QgdTMyIGFkZHIsIGNvbnN0IHUzMiBzaXplKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTYyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz01OTk9c3RhdGljIHZvaWQgcnR3X3Jlc2V0X2tleV9pdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYwNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo2MDU6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYwNi1cdHN0cnVjdCBydHdfc2VjX2Rlc2MgKnNlYyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VzZWM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NjExPXN0YXRpYyB2b2lkIHJ0d19yZXNldF9zdGFfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjYxMzpcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSAoc3RydWN0IHJ0d19kZXYgKilkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTYyMj1zdGF0aWMgdm9pZCBydHdfcmVzZXRfdmlmX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYyMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo2MjQ6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYyNS1cdHN0cnVjdCBydHdfdmlmICpydHd2aWYgPSAoc3RydWN0IHJ0d192aWYgKil2aWYtXHUwMDNlZHJ2X3ByaXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NjM0OnZvaWQgcnR3X2Z3X3JlY292ZXJ5KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTYzOT1FWFBPUlRfU1lNQk9MKHJ0d19md19yZWNvdmVyeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo2NDE6c3RhdGljIHZvaWQgX19md19yZWNvdmVyeV93b3JrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTY3ND1zdGF0aWMgdm9pZCBydHdfZndfcmVjb3Zlcnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6Njc2Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3X2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTY3Ny1cdFx0XHRcdFx0ICAgICAgZndfcmVjb3Zlcnlfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NzEyPXN0YXRpYyB2b2lkIHJ0d190eHFfYmFfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NzE0Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3X2RldiwgYmFfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MTUtXHRzdHJ1Y3QgcnR3X3R4cV9iYV9pdGVyX2RhdGEgZGF0YTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz03MzE9RVhQT1JUX1NZTUJPTChydHdfc2V0X3J4X2ZyZXFfYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo3MzM6dm9pZCBydHdfc2V0X2R0aW1fcGVyaW9kKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IGR0aW1fcGVyaW9kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNzM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo3Mzk6dm9pZCBydHdfdXBkYXRlX2NoYW5uZWwoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggY2VudGVyX2NoYW5uZWwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03NDAtXHRcdFx0dTggcHJpbWFyeV9jaGFubmVsLCBlbnVtIHJ0d19zdXBwb3J0ZWRfYmFuZCBiYW5kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTgyMj12b2lkIHJ0d19nZXRfY2hhbm5lbF9wYXJhbXMoc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTg3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjg3MTp2b2lkIHJ0d19zZXRfY2hhbm5lbChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtODcyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy05MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MTU6dm9pZCBydHdfY2hpcF9wcmVwYXJlX3R4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy05MTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjkyNTpzdGF0aWMgdm9pZCBydHdfdmlmX3dyaXRlX2FkZHIoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIHN0YXJ0LCB1OCAqYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6OTMzOnZvaWQgcnR3X3ZpZl9wb3J0X2NvbmZpZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTM0LVx0XHRcdCBzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTk2ND1zdGF0aWMgdTggaHdfYndfY2FwX3RvX2JpdGFtcCh1OCBid19jYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6OTg0OnN0YXRpYyB2b2lkIHJ0d19od19jb25maWdfcmZfYW50X251bShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBod19hbnRfbnVtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xMTU5PXN0YXRpYyB1NjQgcnR3X3JhdGVfbWFza19yZWNvdmVyKHU2NCByYV9tYXNrLCB1NjQgcmFfbWFza19iYWspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTE2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjExNzA6c3RhdGljIHU2NCBydHdfcmF0ZV9tYXNrX2NmZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3X3N0YV9pbmZvICpzaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTExNzEtXHRcdFx0ICAgICB1NjQgcmFfbWFzaywgYm9vbCBpc192aHRfZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTEyMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxMjEyOnZvaWQgcnR3X3VwZGF0ZV9zdGFfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3X3N0YV9pbmZvICpzaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTEyMTMtXHRcdFx0IGJvb2wgcmVzZXRfcmFfbWFzaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTMzMjppbnQgcnR3X3dhaXRfZmlybXdhcmVfY29tcGxldGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTMzMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTM1Mj1FWFBPUlRfU1lNQk9MKHJ0d193YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzNTQ6c3RhdGljIGVudW0gcnR3X2xwc19kZWVwX21vZGUgcnR3X3VwZGF0ZV9scHNfZGVlcF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzU1LVx0XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcnR3X2Z3X3N0YXRlICpmdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTM3NDppbnQgcnR3X3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNDQzPUVYUE9SVF9TWU1CT0wocnR3X3Bvd2VyX29uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNDQ1OnZvaWQgcnR3X2NvcmVfZndfc2Nhbl9ub3RpZnkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBzdGFydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNDYxOnZvaWQgcnR3X2NvcmVfc2Nhbl9zdGFydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQ2Mi1cdFx0XHQgY29uc3QgdTggKm1hY19hZGRyLCBib29sIGh3X3NjYW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQ4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0OTA6dm9pZCBydHdfY29yZV9zY2FuX2NvbXBsZXRlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDkxLVx0XHRcdCAgICBib29sIGh3X3NjYW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTUxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE1MTU6aW50IHJ0d19jb3JlX3N0YXJ0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTUzOTp2b2lkIHJ0d19wb3dlcl9vZmYoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE1NDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTE1NDU9RVhQT1JUX1NZTUJPTChydHdfcG93ZXJfb2ZmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE1NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNTQ3OnZvaWQgcnR3X2NvcmVfc3RvcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU0OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE1NzM6c3RhdGljIHZvaWQgcnR3X2luaXRfaHRfY2FwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTc0LVx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YV9odF9jYXAgKmh0X2NhcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTYwNTpzdGF0aWMgdm9pZCBydHdfaW5pdF92aHRfY2FwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjA2LVx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTY0OTpzdGF0aWMgdTE2IHJ0d19nZXRfbWF4X3NjYW5faWVfbGVuKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNjY0PXN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE2NjU6cnR3X3NiYW5kX2R1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTY2Ni1cdCAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTE2OTE9c3RhdGljIHZvaWQgcnR3X3NldF9zdXBwb3J0ZWRfYmFuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjk0LVx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjk1Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjk2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTE3MjM9c3RhdGljIHZvaWQgcnR3X3ZpZl9zbXBzX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzI1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE3MjY6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3MjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTczNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE3Mzc6dm9pZCBydHdfc2V0X3R4cnhfMXNzKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgdHhyeF8xc3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTc1NDpzdGF0aWMgdm9pZCBfX3VwZGF0ZV9maXJtd2FyZV9mZWF0dXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzU1LVx0XHRcdFx0ICAgICAgc3RydWN0IHJ0d19md19zdGF0ZSAqZncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE3Njk6c3RhdGljIHZvaWQgX191cGRhdGVfZmlybXdhcmVfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc3MC1cdFx0XHRcdCAgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzgzOnN0YXRpYyB2b2lkIF9fdXBkYXRlX2Zpcm13YXJlX2luZm9fbGVnYWN5KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzg0LVx0XHRcdFx0XHQgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzk1OnN0YXRpYyB2b2lkIHVwZGF0ZV9maXJtd2FyZV9pbmZvKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzk2LVx0XHRcdFx0IHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTE4MDQ9c3RhdGljIHZvaWQgcnR3X2xvYWRfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODA2LVx0c3RydWN0IHJ0d19md19zdGF0ZSAqZncgPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTgwNzpcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBmdy1cdTAwM2VydHdkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODA4LVx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IHJ0d2Rldi1cdTAwM2Vody1cdTAwM2V3aXBoeTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTgzMDpzdGF0aWMgaW50IHJ0d19sb2FkX2Zpcm13YXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGVudW0gcnR3X2Z3X3R5cGUgdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE4MzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE4NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxODY2OnN0YXRpYyBpbnQgcnR3X2NoaXBfcGFyYW1ldGVyX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTkxOTpzdGF0aWMgaW50IHJ0d19jaGlwX2VmdXNlX2VuYWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTkyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTk1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE5NjA6c3RhdGljIGludCBydHdfZHVtcF9od19mZWF0dXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTYxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjAwMzpzdGF0aWMgdm9pZCBydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjAwOTpzdGF0aWMgaW50IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDc4OnN0YXRpYyBpbnQgcnR3X2NoaXBfYm9hcmRfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA3OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwOTc6aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIxMjQ9RVhQT1JUX1NZTUJPTChydHdfY2hpcF9pbmZvX3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMTI2OnN0YXRpYyB2b2lkIHJ0d19zdGF0c19pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTI3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjE0MTppbnQgcnR3X2NvcmVfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjE0Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjIyMj1FWFBPUlRfU1lNQk9MKHJ0d19jb3JlX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIyMjQ6dm9pZCBydHdfY29yZV9kZWluaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyMjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIyNTY9RVhQT1JUX1NZTUJPTChydHdfY29yZV9kZWluaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIyNTg6aW50IHJ0d19yZWdpc3Rlcl9odyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyNTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzNTE9RVhQT1JUX1NZTUJPTChydHdfcmVnaXN0ZXJfaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjM1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzNTM6dm9pZCBydHdfdW5yZWdpc3Rlcl9odyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzNTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzNjE9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMzYyOnZvaWQgcnR3X3N3YXBfcmVnX25ieXRlcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCBzdHJ1Y3QgcnR3X2h3X3JlZyAqcmVnMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzNjMtXHRcdFx0IGNvbnN0IHN0cnVjdCBydHdfaHdfcmVnICpyZWcyLCB1OCBuYnl0ZXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjM3Nj1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzNzc6dm9pZCBydHdfc3dhcF9yZWdfbWFzayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCBzdHJ1Y3QgcnR3X2h3X3JlZyAqcmVnMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzNzgtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnR3X2h3X3JlZyAqcmVnMilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMzg4PXN0cnVjdCBydHdfaXRlcl9wb3J0X3N3aXRjaF9kYXRhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzODk6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjM5MC1cdHN0cnVjdCBydHdfdmlmICpydHd2aWZfYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjM5Mz1zdGF0aWMgdm9pZCBydHdfcG9ydF9zd2l0Y2hfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzOTUtXHRzdHJ1Y3QgcnR3X2l0ZXJfcG9ydF9zd2l0Y2hfZGF0YSAqaXRlcl9kYXRhID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzOTY6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gaXRlcl9kYXRhLVx1MDAzZXJ0d2RldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzOTctXHRzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmX3RhcmdldCA9IChzdHJ1Y3QgcnR3X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjQzMjp2b2lkIHJ0d19jb3JlX3BvcnRfc3dpdGNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDMzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yNDQ1PXN0YXRpYyB2b2lkIHJ0d19jaGVja19zdGFfYWN0aXZlX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjQ2MDpib29sIHJ0d19jb3JlX2NoZWNrX3N0YV9hY3RpdmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0NjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyNDY5OnZvaWQgcnR3X2NvcmVfZW5hYmxlX2JlYWNvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyNDgzOnZvaWQgcnR3X3NldF9hbXBkdV9mYWN0b3Ioc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0ODQtXHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5OTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUMgQWRkcmVzcyBJbml0aWFsaXphdGlvbiBpbiBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKCkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2UuIEluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgLCBpdCYjMzk7cyBjbGVhciB0aGUgcHJpbWFyeSBnb2FsIGlzIHRvIGVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgTUFDIGFkZHJlc3MuIFRoZSBjb3JlIGxvZ2ljIGhpbmdlcyBvbiBgZWZ1c2UtJmd0O2FkZHJgLiAgUHJldmlvdXNseSwgaWYgYGVmdXNlLSZndDthZGRyYCB3YXMgZGVlbWVkIGludmFsaWQgYmFzZWQgb24gYGlzX3ZhbGlkX2V0aGVyX2FkZHIoKWAsIGEgcmFuZG9tIE1BQyBhZGRyZXNzIHdhcyBpbW1lZGlhdGVseSBnZW5lcmF0ZWQgYW5kIGFzc2lnbmVkLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk5vdywgaG93ZXZlciwgYmVmb3JlIHJlc29ydGluZyB0byBhIHJhbmRvbSBNQUMsIGl0JiMzOTtzIGNoZWNraW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi0mZ3Q7ZGV2LCBlZnVzZS0mZ3Q7YWRkcilgLiAgRXNzZW50aWFsbHksIHRoZSBjb2RlIGlzIHNheWluZywgJiMzNDtMZXQmIzM5O3MgKnRyeSogdG8gZ2V0IGEgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIGl0c2VsZiBiZWZvcmUgcmFuZG9tbHkgZ2VuZXJhdGluZyBvbmUuJiMzNDsgIElmIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIHN1Y2NlZWRzIChyZXR1cm5zIDApLCB0aGUgYXNzdW1wdGlvbiBpcyBpdCBwb3B1bGF0ZXMgYGVmdXNlLSZndDthZGRyYCB3aXRoIGEgdmFsaWQgTUFDLiBJZiBpdCBmYWlscyAocmV0dXJucyBub24temVybyksICp0aGVuKiB0aGUgcmFuZG9tIE1BQyBnZW5lcmF0aW9uIGlzIHRyaWdnZXJlZCB2aWEgYGV0aF9yYW5kb21fYWRkcigpYC4gVGhpcyBpcyBnb29kLCBpdCBhbGxvd3MgdGhlIGRldmljZSB0byBoYXZlIHByZWZlcmVuY2UgaW4gcHJvdmlkaW5nIGEgdmFsaWQgTUFDLCBhcyBpdCBzaG91bGQuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0byBzZWUgd2hhdCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgYWN0dWFsbHkgZG9lcy4gIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgaWYgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgICphbHdheXMqIHdyaXRlcyBhIE1BQyB0byBgZWZ1c2UtJmd0O2FkZHJgIG9uIHN1Y2Nlc3MsIG9yIGlmIGl0IGNhbiBwb3RlbnRpYWxseSBsZWF2ZSBpdCB1bmluaXRpYWxpemVkIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gTXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBmd25vZGVfZ2V0X21hY19hZGRyZXNzYCBhbmQgYG52bWVtX2dldF9tYWNfYWRkcmVzc2AsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBNQUMgYWRkcmVzcyByZWFkaW5nIHByb2Nlc3MuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIHZhbGlkYXRpb24gb2YgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z3bm9kZV9nZXRfbWFjX2FkZHJlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aGVybmV0L2V0aC5jPTU1OT1zdGF0aWMgaW50IGZ3bm9kZV9nZXRfbWFjX2FkZHIoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi0tXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTczLS8qKlxubmV0L2V0aGVybmV0L2V0aC5jOjU3NDogKiBmd25vZGVfZ2V0X21hY19hZGRyZXNzIC0gR2V0IHRoZSBNQUMgZnJvbSB0aGUgZmlybXdhcmUgbm9kZVxubmV0L2V0aGVybmV0L2V0aC5jLTU3NS0gKiBAZndub2RlOlx0UG9pbnRlciB0byB0aGUgZmlybXdhcmUgbm9kZVxuLS1cbm5ldC9ldGhlcm5ldC9ldGguYy01OTQtICovXG5uZXQvZXRoZXJuZXQvZXRoLmM6NTk1OmludCBmd25vZGVfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsIGNoYXIgKmFkZHIpXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTk2LXtcbi0tXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjAzLX1cbm5ldC9ldGhlcm5ldC9ldGguYzo2MDQ6RVhQT1JUX1NZTUJPTChmd25vZGVfZ2V0X21hY19hZGRyZXNzKTtcbm5ldC9ldGhlcm5ldC9ldGguYy02MDUtXG4tLVxubmV0L2V0aGVybmV0L2V0aC5jPTYxMT1pbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjEyLXtcbm5ldC9ldGhlcm5ldC9ldGguYzo2MTM6XHRpZiAoIWZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MoZGV2X2Z3bm9kZShkZXYpLCBhZGRyKSlcbm5ldC9ldGhlcm5ldC9ldGguYy02MTQtXHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHNwZWNpZmljIHNlY3Rpb24gb2YgdGhlIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGxpbmVzIDU1OSB0aHJvdWdoIDYwNCBpbiBgbmV0L2V0aGVybmV0L2V0aC5jYC4gTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoaXMgYmxvY2sgbGlrZWx5IGRlYWxzIHdpdGggYSBjcml0aWNhbCBhc3BlY3Qgb2YgRXRoZXJuZXQgb3BlcmF0aW9uLiBJJiMzOTttIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlIHJlbGF0ZWQgdG8gZnJhbWUgdHJhbnNtaXNzaW9uLCByZWNlcHRpb24gaGFuZGxpbmcsIG9yIHBlcmhhcHMgc29tZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIEtub3dpbmcgdGhlIG51YW5jZXMgb2YgRXRoZXJuZXQgaXMgc2Vjb25kIG5hdHVyZSBhdCB0aGlzIHBvaW50LCBzbyBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHNlZ21lbnQgdG8gYmUgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgdG8gcGFyc2UsIGV2ZW4gd2l0aG91dCBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gdW5lYXJ0aCBhbmQgd2hhdCBzcGVjaWZpYyBvcGVyYXRpb24gb2YgdGhlIEV0aGVybmV0IGNhcmQgaXQgaXMgcmVsYXRlZCB0by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU1OTpcdHN0YXRpYyBpbnQgZndub2RlX2dldF9tYWNfYWRkcihzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxuIDU2MDpcdFx0XHRcdCAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjaGFyICphZGRyKVxuIDU2MTpcdHtcbiA1NjI6XHRcdGludCByZXQ7XG4gNTYzOlx0XG4gNTY0Olx0XHRyZXQgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91OF9hcnJheShmd25vZGUsIG5hbWUsIGFkZHIsIEVUSF9BTEVOKTtcbiA1NjU6XHRcdGlmIChyZXQpXG4gNTY2Olx0XHRcdHJldHVybiByZXQ7XG4gNTY3Olx0XG4gNTY4Olx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoYWRkcikpXG4gNTY5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU3MDpcdFx0cmV0dXJuIDA7XG4gNTcxOlx0fVxuIDU3MjpcdFxuIDU3MzpcdC8qKlxuIDU3NDpcdCAqIGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MgLSBHZXQgdGhlIE1BQyBmcm9tIHRoZSBmaXJtd2FyZSBub2RlXG4gNTc1Olx0ICogQGZ3bm9kZTpcdFBvaW50ZXIgdG8gdGhlIGZpcm13YXJlIG5vZGVcbiA1NzY6XHQgKiBAYWRkcjpcdEFkZHJlc3Mgb2YgYnVmZmVyIHRvIHN0b3JlIHRoZSBNQUMgaW5cbiA1Nzc6XHQgKlxuIDU3ODpcdCAqIFNlYXJjaCB0aGUgZmlybXdhcmUgbm9kZSBmb3IgdGhlIGJlc3QgTUFDIGFkZHJlc3MgdG8gdXNlLiAgJiMzOTttYWMtYWRkcmVzcyYjMzk7IGlzXG4gNTc5Olx0ICogY2hlY2tlZCBmaXJzdCwgYmVjYXVzZSB0aGF0IGlzIHN1cHBvc2VkIHRvIGNvbnRhaW4gdG8gXCYjMzQ7bW9zdCByZWNlbnRcJiMzNDsgTUFDXG4gNTgwOlx0ICogYWRkcmVzcy4gSWYgdGhhdCBpc24mIzM5O3Qgc2V0LCB0aGVuICYjMzk7bG9jYWwtbWFjLWFkZHJlc3MmIzM5OyBpcyBjaGVja2VkIG5leHQsXG4gNTgxOlx0ICogYmVjYXVzZSB0aGF0IGlzIHRoZSBkZWZhdWx0IGFkZHJlc3MuICBJZiB0aGF0IGlzbiYjMzk7dCBzZXQsIHRoZW4gdGhlIG9ic29sZXRlXG4gNTgyOlx0ICogJiMzOTthZGRyZXNzJiMzOTsgaXMgY2hlY2tlZCwganVzdCBpbiBjYXNlIHdlJiMzOTtyZSB1c2luZyBhbiBvbGQgZGV2aWNlIHRyZWUuXG4gNTgzOlx0ICpcbiA1ODQ6XHQgKiBOb3RlIHRoYXQgdGhlICYjMzk7YWRkcmVzcyYjMzk7IHByb3BlcnR5IGlzIHN1cHBvc2VkIHRvIGNvbnRhaW4gYSB2aXJ0dWFsIGFkZHJlc3Mgb2ZcbiA1ODU6XHQgKiB0aGUgcmVnaXN0ZXIgc2V0LCBidXQgc29tZSBEVFMgZmlsZXMgaGF2ZSByZWRlZmluZWQgdGhhdCBwcm9wZXJ0eSB0byBiZSB0aGVcbiA1ODY6XHQgKiBNQUMgYWRkcmVzcy5cbiA1ODc6XHQgKlxuIDU4ODpcdCAqIEFsbC16ZXJvIE1BQyBhZGRyZXNzZXMgYXJlIHJlamVjdGVkLCBiZWNhdXNlIHRob3NlIGNvdWxkIGJlIHByb3BlcnRpZXMgdGhhdFxuIDU4OTpcdCAqIGV4aXN0IGluIHRoZSBmaXJtd2FyZSB0YWJsZXMsIGJ1dCB3ZXJlIG5vdCB1cGRhdGVkIGJ5IHRoZSBmaXJtd2FyZS4gIEZvclxuIDU5MDpcdCAqIGV4YW1wbGUsIHRoZSBEVFMgY291bGQgZGVmaW5lICYjMzk7bWFjLWFkZHJlc3MmIzM5OyBhbmQgJiMzOTtsb2NhbC1tYWMtYWRkcmVzcyYjMzk7LCB3aXRoXG4gNTkxOlx0ICogemVybyBNQUMgYWRkcmVzc2VzLiAgU29tZSBvbGRlciBVLUJvb3RzIG9ubHkgaW5pdGlhbGl6ZWQgJiMzOTtsb2NhbC1tYWMtYWRkcmVzcyYjMzk7LlxuIDU5MjpcdCAqIEluIHRoaXMgY2FzZSwgdGhlIHJlYWwgTUFDIGlzIGluICYjMzk7bG9jYWwtbWFjLWFkZHJlc3MmIzM5OywgYW5kICYjMzk7bWFjLWFkZHJlc3MmIzM5O1xuIDU5MzpcdCAqIGV4aXN0cyBidXQgaXMgYWxsIHplcm9zLlxuIDU5NDpcdCAqL1xuIDU5NTpcdGludCBmd25vZGVfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsIGNoYXIgKmFkZHIpXG4gNTk2Olx0e1xuIDU5NzpcdFx0aWYgKCFmd25vZGVfZ2V0X21hY19hZGRyKGZ3bm9kZSwgXCYjMzQ7bWFjLWFkZHJlc3NcJiMzNDssIGFkZHIpIHx8XG4gNTk4Olx0XHQgICAgIWZ3bm9kZV9nZXRfbWFjX2FkZHIoZndub2RlLCBcJiMzNDtsb2NhbC1tYWMtYWRkcmVzc1wmIzM0OywgYWRkcikgfHxcbiA1OTk6XHRcdCAgICAhZndub2RlX2dldF9tYWNfYWRkcihmd25vZGUsIFwmIzM0O2FkZHJlc3NcJiMzNDssIGFkZHIpKVxuIDYwMDpcdFx0XHRyZXR1cm4gMDtcbiA2MDE6XHRcbiA2MDI6XHRcdHJldHVybiAtRU5PRU5UO1xuIDYwMzpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxOTkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnk6CgoqKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIE1BQyBBZGRyZXNzIFJldHJpZXZhbCoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoZSBNQUMgYWRkcmVzcyByZXRyaWV2YWwgcHJvY2VzcywgYW5kIEkgdGhpbmsgd2UgbWlnaHQgaGF2ZSBtaXNzZWQgYSBzcG90LiBNeSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB3ZSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgbnZtZW1fZ2V0X21hY19hZGRyZXNzYCBmdW5jdGlvbiBhcyB3ZWxsLiBXZSBrbm93IHRoZSBnZW5lcmFsIGZsb3csIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHdlIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IGRldGFpbHMgc3BlY2lmaWMgdG8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uJiMzOTtzIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBwb3NzaWJsZSB0aGVyZSBhcmUgc3VidGxlIGRpZmZlcmVuY2VzIG9yIGVkZ2UgY2FzZXMgcmVsYXRlZCB0byBub24tdm9sYXRpbGUgbWVtb3J5IHRoYXQgd2UgbmVlZCB0byBhY2NvdW50IGZvci4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IHBhcnQgb2YgdGhlIHByb2Nlc3MgaXMgc29saWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBudm1lbV9nZXRfbWFjX2FkZHJlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oPTMzPXVuc2lnbmVkIGNoYXIgKmFyY2hfZ2V0X3BsYXRmb3JtX21hY19hZGRyZXNzKHZvaWQpO1xuaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oOjM0OmludCBudm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICphZGRyYnVmKTtcbmluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaC0zNS1pbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpO1xuLS1cbm5ldC9ldGhlcm5ldC9ldGguYz01MjE9RVhQT1JUX1NZTUJPTChwbGF0Zm9ybV9nZXRfZXRoZGV2X2FkZHJlc3MpO1xuLS1cbm5ldC9ldGhlcm5ldC9ldGguYy01MzEtICovXG5uZXQvZXRoZXJuZXQvZXRoLmM6NTMyOmludCBudm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICphZGRyYnVmKVxubmV0L2V0aGVybmV0L2V0aC5jLTUzMy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTc2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTUFDIEFkZHJlc3MgUmV0cmlldmFsKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYG52bWVtX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24gYWN0dWFsbHkgd29ya3MuIFRpbWUgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCYjMzk7cyBzZWUgaG93IGl0JiMzOTtzIHdyaXR0ZW4gYW5kIHdoYXQmIzM5O3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoaW5ncyBsaWtlIGVycm9yIGhhbmRsaW5nLCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgcXVpcmtzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBub24tdm9sYXRpbGUgbWVtb3J5IGl0c2VsZi4gQXJlIHRoZXkgdXNpbmcgYSBzdGFuZGFyZCBOVk1FTSBpbnRlcmZhY2UsIG9yIHNvbWV0aGluZyBjdXN0b20/IFdoYXQgYWJvdXQgYXRvbWljaXR5IOKAkyBpcyB0aGUgcmVhZCBvcGVyYXRpb24gdGhyZWFkLXNhZmUsIG9yIGFyZSB0aGV5IHJlbHlpbmcgb24gc29tZSBoaWdoZXItbGV2ZWwgc3luY2hyb25pemF0aW9uPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGFyZWFzIHdoZXJlIGEgcG93ZXIgZmFpbHVyZSBjb3VsZCBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQgc3RhdGUuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkLi4uIGJ1dCBJJiMzOTttIHByZXBhcmVkIGZvciBhbnl0aGluZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUzMDpcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXG4gNTMxOlx0ICovXG4gNTMyOlx0aW50IG52bWVtX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHJidWYpXG4gNTMzOlx0e1xuIDUzNDpcdFx0c3RydWN0IG52bWVtX2NlbGwgKmNlbGw7XG4gNTM1Olx0XHRjb25zdCB2b2lkICptYWM7XG4gNTM2Olx0XHRzaXplX3QgbGVuO1xuIDUzNzpcdFxuIDUzODpcdFx0Y2VsbCA9IG52bWVtX2NlbGxfZ2V0KGRldiwgXCYjMzQ7bWFjLWFkZHJlc3NcJiMzNDspO1xuIDUzOTpcdFx0aWYgKElTX0VSUihjZWxsKSlcbiA1NDA6XHRcdFx0cmV0dXJuIFBUUl9FUlIoY2VsbCk7XG4gNTQxOlx0XG4gNTQyOlx0XHRtYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgXHUwMDI2bGVuKTtcbiA1NDM6XHRcdG52bWVtX2NlbGxfcHV0KGNlbGwpO1xuIDU0NDpcdFxuIDU0NTpcdFx0aWYgKElTX0VSUihtYWMpKVxuIDU0NjpcdFx0XHRyZXR1cm4gUFRSX0VSUihtYWMpO1xuIDU0NzpcdFxuIDU0ODpcdFx0aWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7XG4gNTQ5Olx0XHRcdGtmcmVlKG1hYyk7XG4gNTUwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU1MTpcdFx0fVxuIDU1MjpcdFxuIDU1MzpcdFx0ZXRoZXJfYWRkcl9jb3B5KGFkZHJidWYsIG1hYyk7XG4gNTU0Olx0XHRrZnJlZShtYWMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE3NgoJCQkJCQkJb3V0cHV0OiAxOTkKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUMgQWRkcmVzcyBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGlzIGV4cGVjdGVkIHRvIHBvcHVsYXRlIGFsbCBzaXggYnl0ZXMgb2YgdGhlIE1BQyBhZGRyZXNzIChgRVRIX0FMRU5gKSBpZiBpdCBzdWNjZWVkcywgcmV0dXJuaW5nIDAuIElmIGl0IGZhaWxzLCB0aGUgcGF0Y2ggZmFsbHMgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyKGVmdXNlLSZndDthZGRyKTtgIOKAkyB3aGljaCwgYWdhaW4sIGZ1bGx5IGluaXRpYWxpemVzIGBlZnVzZS0mZ3Q7YWRkcmAuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcnVuIHRocm91Z2ggb3VyIGNoZWNrbGlzdC4gVGhpcyBpcyByb3V0aW5lLCBidXQgdGhvcm91Z2huZXNzIGlzIGtleSBoZXJlOgoKMS4gIERvZXMgaXQgZXhwb3NlIGFueSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8uIFRoZSBlbnRpcmUgYWRkcmVzcyBzcGFjZSBpcyBpbml0aWFsaXplZCBieSBlaXRoZXIgY2FsbC4KMi4gIEFueSByaXNrIG9mIGluZm9ybWF0aW9uIGxlYWtzIHZpYSBgY29weV90b191c2VyYCBvciBuZXRsaW5rIGNhbGxzPyBBYnNvbHV0ZWx5IG5vdC4gTm90aGluZyBoZXJlIGV2ZW4gcmVtb3RlbHkgdG91Y2hlcyB0aG9zZSBhcmVhcy4KMy4gIEFyZSB0aGVyZSBhbnkgc3RydWN0dXJlIGZpZWxkcyBsZWZ0IHVuaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhpcyBvcGVyYXRpb24/IE5vcGUsIGJvdGggcGF0aHMgZW5zdXJlIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBNQUMgYWRkcmVzcyBmaWVsZC4KNC4gIEFuZCwgY3JpdGljYWxseSwgaXMgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGJyYW5jaGluZyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGE/IE5vIHdheS4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCB0byAqZW5zdXJlKiB0aGUgZGF0YSBpcyBpbml0aWFsaXplZCAqYmVmb3JlKiBpdCYjMzk7cyB1c2VkLgoKR2l2ZW4gdGhpcyBhbmFseXNpcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBLTVNBTiBpc24mIzM5O3QgbmVjZXNzYXJ5IGhlcmU7IGBOZWVkc0tNU0FOPWZhbHNlYC4gVGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgbGlrZSBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIGFkZXF1YXRlIGZvciB0aGlzLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbiBhbmQgY29uc3RydWN0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AgbW9kaWZpZXMgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgc28gdGhhdCB3aGVuIGFuIGludmFsaWQgTUFDIGFkZHJlc3MgaXMgcmVhZCBmcm9tIHRoZSBlZnVzZSwgdGhlIGRyaXZlciBhdHRlbXB0cyB0byBmZXRjaCBhIHZhbGlkIE1BQyBhZGRyZXNzIGZyb20gdGhlIGRldmljZSB0cmVlIC8gZmlybXdhcmUgbm9kZSBvciBOVk1FTSB1c2luZyBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGBldGhfcmFuZG9tX2FkZHIoKWAuIEJvdGggYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgKG9uIHN1Y2Nlc3MpIGFuZCBgZXRoX3JhbmRvbV9hZGRyKClgIChvbiBmYWxsYmFjaykgY29tcGxldGVseSBvdmVyd3JpdGUgYW5kIGluaXRpYWxpemUgYWxsIGBFVEhfQUxFTmAgYnl0ZXMgb2YgYGVmdXNlLVx1MDAzZWFkZHJgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBicmFuY2ggY29uZGl0aW9ucyBhcmUgaW50cm9kdWNlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBtb2RpZmllcyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCBzbyB0aGF0IHdoZW4gYW4gaW52YWxpZCBNQUMgYWRkcmVzcyBpcyByZWFkIGZyb20gdGhlIGVmdXNlLCB0aGUgZHJpdmVyIGF0dGVtcHRzIHRvIGZldGNoIGEgdmFsaWQgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHRyZWUgLyBmaXJtd2FyZSBub2RlIG9yIE5WTUVNIHVzaW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYGV0aF9yYW5kb21fYWRkcigpYC4gQm90aCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCAob24gc3VjY2VzcykgYW5kIGBldGhfcmFuZG9tX2FkZHIoKWAgKG9uIGZhbGxiYWNrKSBjb21wbGV0ZWx5IG92ZXJ3cml0ZSBhbmQgaW5pdGlhbGl6ZSBhbGwgYEVUSF9BTEVOYCBieXRlcyBvZiBgZWZ1c2UtXHUwMDNlYWRkcmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaCBjb25kaXRpb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE1OjM3LjgyNDQxODM2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MzQwMDU1OTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OFwiLFxuICAgIFwiUlRXODhfQ09SRVwiLFxuICAgIFwiUlRXODhfVVNCXCIsXG4gICAgXCJSVFc4OF84ODIyQlVcIixcbiAgICBcIlJUVzg4Xzg4MjJDVVwiLFxuICAgIFwiUlRXODhfODcyM0RVXCIsXG4gICAgXCJSVFc4OF84ODIxQ1VcIixcbiAgICBcIlJUVzg4Xzg4MjFBVVwiLFxuICAgIFwiUlRXODhfODgxMkFVXCIsXG4gICAgXCJSVFc4OF84ODE0QVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHdfY2hpcF9pbmZvX3NldHVwXCIsXG4gICAgXCJydHdfdXNiX3Byb2JlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgIG1vZGlmaWVzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIHNvIHRoYXQgd2hlbiBhbiBpbnZhbGlkIE1BQyBhZGRyZXNzIGlzIHJlYWQgZnJvbSB0aGUgZWZ1c2UsIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdG8gZmV0Y2ggYSB2YWxpZCBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSAvIGZpcm13YXJlIG5vZGUgb3IgTlZNRU0gdXNpbmcgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyKClgLiBCb3RoIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIChvbiBzdWNjZXNzKSBhbmQgYGV0aF9yYW5kb21fYWRkcigpYCAob24gZmFsbGJhY2spIGNvbXBsZXRlbHkgb3ZlcndyaXRlIGFuZCBpbml0aWFsaXplIGFsbCBgRVRIX0FMRU5gIGJ5dGVzIG9mIGBlZnVzZS1cXHUwMDNlYWRkcmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaCBjb25kaXRpb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1BQyBhZGRyZXNzIHNldHVwIGxvZ2ljIGluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIChjYWxsZWQgZHVyaW5nIGNoaXAgaW5mbyBzZXR1cCkgdG8gYXR0ZW1wdCBmZXRjaGluZyBhIE1BQyBhZGRyZXNzIHZpYSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGdlbmVyYXRpbmcgYSByYW5kb20gTUFDIGFkZHJlc3MuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgZm9yIFVTQi1iYXNlZCBydHc4OCBXaUZpIGRldmljZXMgdGhhdCBjYW4gYmUgZW11bGF0ZWQgYW5kIGZ1enplZCB2aWEgVVNCIGdhZGdldC9SYXcgR2FkZ2V0IGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE1OjM3LjgyNDQyMzU4NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY4NjY1NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDE0OjE1OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcXG5pbmRleCBjZDkyNTQzNzBmY2M3Li4wZjIzNDk4YjVjOTZlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcXG5AQCAtMjA2MCw4ICsyMDYwLDExIEBAIHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbiBcXHRlZnVzZS1cXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVxcdTAwM2VsbmFfdHlwZV81ZyBcXHUwMDI2IEJJVCgzKSA/IDEgOiAwO1xcbiBcXG4gXFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKGVmdXNlLVxcdTAwM2VhZGRyKSkge1xcbi1cXHRcXHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpO1xcbi1cXHRcXHRkZXZfd2FybihydHdkZXYtXFx1MDAzZWRldiwgXFxcImVmdXNlIE1BQyBpbnZhbGlkLCB1c2luZyByYW5kb21cXFxcblxcXCIpO1xcbitcXHRcXHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXFx1MDAzZWRldiwgZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuK1xcdFxcdFxcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cXHUwMDNlYWRkcik7XFxuK1xcdFxcdFxcdGRldl93YXJuKHJ0d2Rldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcXFxuXFxcIik7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gb3V0X2Rpc2FibGU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE1OjM4LjM5Mzc1ODk2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzI5NTMwNDExMDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF9DT1JFXCIsXG4gICAgXCJSVFc4OF9VU0JcIixcbiAgICBcIlJUVzg4Xzg4MjJCVVwiLFxuICAgIFwiUlRXODhfODgyMkNVXCIsXG4gICAgXCJSVFc4OF84NzIzRFVcIixcbiAgICBcIlJUVzg4Xzg4MjFDVVwiLFxuICAgIFwiUlRXODhfODgyMUFVXCIsXG4gICAgXCJSVFc4OF84ODEyQVVcIixcbiAgICBcIlJUVzg4Xzg4MTRBVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0d19jaGlwX2luZm9fc2V0dXBcIixcbiAgICBcInJ0d191c2JfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUFDIGFkZHJlc3Mgc2V0dXAgbG9naWMgaW4gYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgKGNhbGxlZCBkdXJpbmcgY2hpcCBpbmZvIHNldHVwKSB0byBhdHRlbXB0IGZldGNoaW5nIGEgTUFDIGFkZHJlc3MgdmlhIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gZ2VuZXJhdGluZyBhIHJhbmRvbSBNQUMgYWRkcmVzcy4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGluY2x1ZGluZyBmb3IgVVNCLWJhc2VkIHJ0dzg4IFdpRmkgZGV2aWNlcyB0aGF0IGNhbiBiZSBlbXVsYXRlZCBhbmQgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0L1JhdyBHYWRnZXQgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTQ6MTU6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG5pbmRleCBjZDkyNTQzNzBmY2M3Li4wZjIzNDk4YjVjOTZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG5AQCAtMjA2MCw4ICsyMDYwLDExIEBAIHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuIFx0ZWZ1c2UtXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVx1MDAzZWxuYV90eXBlXzVnIFx1MDAyNiBCSVQoMykgPyAxIDogMDtcbiBcbiBcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cdTAwM2VhZGRyKSkge1xuLVx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4tXHRcdGRldl93YXJuKHJ0d2Rldi1cdTAwM2VkZXYsIFwiZWZ1c2UgTUFDIGludmFsaWQsIHVzaW5nIHJhbmRvbVxcblwiKTtcbitcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbitcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4rXHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdCBcImZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcblwiKTtcbitcdFx0fVxuIFx0fVxuIFxuIG91dF9kaXNhYmxlOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTU6MzguMzkzNzYwNzE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIwOTMyMzI0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gVGhlIGRpZmYgcG9pbnRzIHRvIGEgY2hhbmdlIGluIHRoZSBgcnR3ODgvbWFpbi5jYCBmaWxlIHdpdGhpbiB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIuIExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgY29uY2VybnMgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0aGUgRXRoZXJuZXQgTUFDIGFkZHJlc3Mgc3RvcmVkIGluIHRoZSBlRnVzZS4gVGhlIG9yaWdpbmFsIGNvZGUgZ2VuZXJhdGVkIGEgcmFuZG9tIE1BQyBhZGRyZXNzIGlmIHRoZSBlRnVzZSBjb250YWluZWQgYW4gaW52YWxpZCBvbmUsIGJ1dCBub3cgaXQgYXR0ZW1wdHMgdG8gZ2V0IHRoZSBNQUMgYWRkcmVzcyB0aHJvdWdoIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBiZWZvcmUgcmVzb3J0aW5nIHRvIHJhbmRvbSBnZW5lcmF0aW9uLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgYSB3YXJuaW5nIG1lc3NhZ2UgaXMgYWRkZWQgaWYgZ2V0dGluZyBhIHZhbGlkIE1BQyBmYWlscywgd2hpY2ggcHJvdmlkZXMgbW9yZSBjb250ZXh0LlxuXG5Ob3csIGxldCdzIHpvb20gb3V0IGEgYml0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBydHc4OGAgZHJpdmVyIGJldHRlci4gSXMgdGhpcyBmb3IgYSBzcGVjaWZpYyB0eXBlIG9mIGRldmljZT8gSXMgdGhpcyBzb21ldGhpbmcgSSBjYW4gZW11bGF0ZSBvciBmdXp6PyBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyB3b3JrIHdpdGggVVNCLCBQQ0ksIG9yIFNESU8gZGV2aWNlcz8gSSBrbm93IFJlYWx0ZWsgaGFzIGEgaGlzdG9yeSB3aXRoIGFsbCB0aHJlZSwgYnV0IEkgbmVlZCB0byBjb25maXJtLiBJIGtub3cgdGhhdCBVU0IgZGV2aWNlcyAqY2FuKiBiZSBmdXp6ZWQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9zeXprYWxsZXIsIHVzaW5nIHRlY2huaXF1ZXMgbGlrZSBSYXcgR2FkZ2V0LCBkdW1teV9oY2QsIG9yIFVTQiBlbXVsYXRpb24uIFNvLCBpcyB0aGVyZSBhIGBydHc4OF91c2JgIGNvbXBvbmVudCB0byBiZSBjb25zaWRlcmVkPyBMZXQncyBjaGVjayB3aXRoIGdyZXBwZXIgb3IgYnkgcmVhZGluZyB0aGUgZmlsZS4gSSBuZWVkIHRvIGtub3cgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSB0byBkZXRlcm1pbmUgaXRzIHN1aXRhYmlsaXR5IGZvciBmdXp6aW5nIGFuZCBpZiBJIGNhbiB1c2UgbXkgbm9ybWFsIFFFTVUgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxNjoxMC40ODY5OTU3OTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1Mzc2NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19SVFc4OFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX1JUVzg4X0NPUkUpXFx0Kz0gcnR3ODhfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00LXJ0dzg4X2NvcmUteSArPSBtYWluLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT0yMT1ydHc4OF9jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToyMzpydHc4OF9jb3JlLSQoQ09ORklHX1JUVzg4X0xFRFMpICs9IGxlZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19SVFc4OF84ODIyQilcXHQrPSBydHc4OF84ODIyYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0yNi1ydHc4OF84ODIyYi1vYmpzXFx0XFx0Oj0gcnR3ODgyMmIubyBydHc4ODIyYl90YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19SVFc4OF84ODIyQkUpXFx0Kz0gcnR3ODhfODgyMmJlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTI5LXJ0dzg4Xzg4MjJiZS1vYmpzXFx0XFx0Oj0gcnR3ODgyMmJlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJCUylcXHQrPSBydHc4OF84ODIyYnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzItcnR3ODhfODgyMmJzLW9ianNcXHRcXHQ6PSBydHc4ODIyYnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfUlRXODhfODgyMkJVKVxcdCs9IHJ0dzg4Xzg4MjJidS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zNS1ydHc4OF84ODIyYnUtb2Jqc1xcdFxcdDo9IHJ0dzg4MjJidS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19SVFc4OF84ODIyQylcXHQrPSBydHc4OF84ODIyYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOC1ydHc4OF84ODIyYy1vYmpzXFx0XFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19SVFc4OF84ODIyQ0UpXFx0Kz0gcnR3ODhfODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQxLXJ0dzg4Xzg4MjJjZS1vYmpzXFx0XFx0Oj0gcnR3ODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDUylcXHQrPSBydHc4OF84ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNDQtcnR3ODhfODgyMmNzLW9ianNcXHRcXHQ6PSBydHc4ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfUlRXODhfODgyMkNVKVxcdCs9IHJ0dzg4Xzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00Ny1ydHc4OF84ODIyY3Utb2Jqc1xcdFxcdDo9IHJ0dzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19SVFc4OF84NzIzWClcXHQrPSBydHc4OF84NzIzeC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01MC1ydHc4OF84NzIzeC1vYmpzXFx0XFx0Oj0gcnR3ODcyM3gub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfUlRXODhfODcwM0IpXFx0Kz0gcnR3ODhfODcwM2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTMtcnR3ODhfODcwM2Itb2Jqc1xcdFxcdDo9IHJ0dzg3MDNiLm8gcnR3ODcwM2JfdGFibGVzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX1JUVzg4Xzg3MjNDUylcXHQrPSBydHc4OF84NzIzY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTYtcnR3ODhfODcyM2NzLW9ianNcXHRcXHQ6PSBydHc4NzIzY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfUlRXODhfODcyM0QpXFx0Kz0gcnR3ODhfODcyM2Qub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTktcnR3ODhfODcyM2Qtb2Jqc1xcdFxcdDo9IHJ0dzg3MjNkLm8gcnR3ODcyM2RfdGFibGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfUlRXODhfODcyM0RFKVxcdCs9IHJ0dzg4Xzg3MjNkZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS02Mi1ydHc4OF84NzIzZGUtb2Jqc1xcdFxcdDo9IHJ0dzg3MjNkZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19SVFc4OF84NzIzRFMpXFx0Kz0gcnR3ODhfODcyM2RzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTY1LXJ0dzg4Xzg3MjNkcy1vYmpzXFx0XFx0Oj0gcnR3ODcyM2RzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6Njc6b2JqLSQoQ09ORklHX1JUVzg4Xzg3MjNEVSlcXHQrPSBydHc4OF84NzIzZHUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjgtcnR3ODhfODcyM2R1LW9ianNcXHRcXHQ6PSBydHc4NzIzZHUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfUlRXODhfODgyMUMpXFx0Kz0gcnR3ODhfODgyMWMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNzEtcnR3ODhfODgyMWMtb2Jqc1xcdFxcdDo9IHJ0dzg4MjFjLm8gcnR3ODgyMWNfdGFibGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3MzpvYmotJChDT05GSUdfUlRXODhfODgyMUNFKVxcdCs9IHJ0dzg4Xzg4MjFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS03NC1ydHc4OF84ODIxY2Utb2Jqc1xcdFxcdDo9IHJ0dzg4MjFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS03NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjc2Om9iai0kKENPTkZJR19SVFc4OF84ODIxQ1MpXFx0Kz0gcnR3ODhfODgyMWNzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc3LXJ0dzg4Xzg4MjFjcy1vYmpzXFx0XFx0Oj0gcnR3ODgyMWNzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjFDVSlcXHQrPSBydHc4OF84ODIxY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtODAtcnR3ODhfODgyMWN1LW9ianNcXHRcXHQ6PSBydHc4ODIxY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfUlRXODhfODhYWEEpXFx0Kz0gcnR3ODhfODh4eGEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtODMtcnR3ODhfODh4eGEtb2Jqc1xcdFxcdDo9IHJ0dzg4eHhhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6ODU6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjFBKVxcdCs9IHJ0dzg4Xzg4MjFhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg2LXJ0dzg4Xzg4MjFhLW9ianNcXHRcXHQ6PSBydHc4ODIxYS5vIHJ0dzg4MjFhX3RhYmxlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6ODg6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MTJBKVxcdCs9IHJ0dzg4Xzg4MTJhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg5LXJ0dzg4Xzg4MTJhLW9ianNcXHRcXHQ6PSBydHc4ODEyYS5vIHJ0dzg4MTJhX3RhYmxlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjFBVSlcXHQrPSBydHc4OF84ODIxYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtOTItcnR3ODhfODgyMWF1LW9ianNcXHRcXHQ6PSBydHc4ODIxYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo5NDpvYmotJChDT05GSUdfUlRXODhfODgxMkFVKVxcdCs9IHJ0dzg4Xzg4MTJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05NS1ydHc4OF84ODEyYXUtb2Jqc1xcdFxcdDo9IHJ0dzg4MTJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjk3Om9iai0kKENPTkZJR19SVFc4OF84ODE0QSlcXHQrPSBydHc4OF84ODE0YS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05OC1ydHc4OF84ODE0YS1vYmpzXFx0XFx0Oj0gcnR3ODgxNGEubyBydHc4ODE0YV90YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfUlRXODhfODgxNEFFKVxcdCs9IHJ0dzg4Xzg4MTRhZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMDEtcnR3ODhfODgxNGFlLW9ianNcXHRcXHQ6PSBydHc4ODE0YWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6MTAzOm9iai0kKENPTkZJR19SVFc4OF84ODE0QVUpXFx0Kz0gcnR3ODhfODgxNGF1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTEwNC1ydHc4OF84ODE0YXUtb2Jqc1xcdFxcdDo9IHJ0dzg4MTRhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMDY6b2JqLSQoQ09ORklHX1JUVzg4X1BDSSlcXHRcXHQrPSBydHc4OF9wY2kub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTA3LXJ0dzg4X3BjaS1vYmpzXFx0XFx0XFx0Oj0gcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTEwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwOTpvYmotJChDT05GSUdfUlRXODhfU0RJTylcXHQrPSBydHc4OF9zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMC1ydHc4OF9zZGlvLW9ianNcXHRcXHRcXHQ6PSBzZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjExMjpvYmotJChDT05GSUdfUlRXODhfVVNCKVxcdFxcdCs9IHJ0dzg4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMTMtcnR3ODhfdXNiLW9ianNcXHRcXHRcXHQ6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmM9MzU1Mz12b2lkIHJ0d19jb2V4X3dsX2Nja2xvY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYy0zNTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjM1NjQ6I2lmZGVmIENPTkZJR19SVFc4OF9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtMzU2NS0jZGVmaW5lIElORk9fU0laRVxcdDgwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYz0zOTM2PXZvaWQgcnR3X2NvZXhfZGlzcGxheV9jb2V4X2luZm8oc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IHNlcV9maWxlICptKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtNDIwNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmM6NDIwNTojZW5kaWYgLyogQ09ORklHX1JUVzg4X0RFQlVHRlMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTc6I2lmZGVmIENPTkZJR19SVFc4OF9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jPTEzNDk9dm9pZCBydHdfZGVidWdmc19kZWluaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xMzUyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTM1MzojZW5kaWYgLyogQ09ORklHX1JUVzg4X0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmMtMTM1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTM1NTojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jLTEzNTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM9MTM3Mz1FWFBPUlRfU1lNQk9MKHJ0d19kYmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xMzc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYzoxMzc1OiNlbmRpZiAvKiBDT05GSUdfUlRXODhfREVCVUcgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaD04PWVudW0gcnR3X2RlYnVnX21hc2sge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaDozNDojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmgtMzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg9NDM9c3RhdGljIGlubGluZSB2b2lkIHJ0d19kZWJ1Z2ZzX2RlaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KSB7fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaC00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg6NDU6I2VuZGlmIC8qIENPTkZJR19SVFc4OF9ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaDo0NzojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oPTY0PXN0YXRpYyBpbmxpbmUgYm9vbCBydHdfZGJnX2lzX2VuYWJsZWQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaC02OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg6NzA6I2VuZGlmIC8qIENPTkZJR19SVFc4OF9ERUJVRyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaC03MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbGVkLmgtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2xlZC5oOjg6I2lmZGVmIENPTkZJR19SVFc4OF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9sZWQuaC05LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jPTE4ODY9Y29uc3Qgc3RydWN0IHJ0d19jaGlwX2luZm8gcnR3ODcwM2JfaHdfc3BlYyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xOTk1LVxcdC8qIFRoZXNlIHJlZ2lzdGVycyBhcmUgdXNlZCB0byByZWFkIChhbmQgcHJpbnQpIGZyb20gaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTk5NjpcXHQgKiBDT05GSUdfUlRXODhfREVCVUdGUyBpcyBlbmFibGVkLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xOTk3LVxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxNjoxMC42NzIzODAwOThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTU3ODc4NDQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIncyBFRlVTRSBJbmZvcm1hdGlvbiBTZXR1cCoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgaXNzdWUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IGl0J3MgaGFuZGxpbmcgRUZVU0UgaW5mb3JtYXRpb24sIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYC4gVGhhdCBmdW5jdGlvbiBuYW1lIHN1Z2dlc3RzIGl0J3MgYSBrZXkgcGllY2UgaW4gdGhpcyBwdXp6bGUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQncyBkb2luZywgaG93IGl0J3Mgc2V0dGluZyB0aGluZ3MgdXAsIGFuZCB3aGF0IGRhdGEgaXQncyBkcmF3aW5nIGZyb20gdGhlIEVGVVNFLiBUaGVuIEknbGwgZXhwYW5kIHRoZSBpbnZlc3RpZ2F0aW9uIG91dHdhcmRzIHRvIGl0cyBjYWxsZXJzLiBVbmRlcnN0YW5kaW5nICp3aG8qIGlzIGNhbGxpbmcgaXQsICp3aGVuKiwgYW5kICp3aHkqIGlzIGNydWNpYWwgdG8gZXN0YWJsaXNoaW5nIHRoZSBiaWdnZXIgcGljdHVyZSBvZiBob3cgdGhpcyBpbmZvcm1hdGlvbiBmZWVkcyBpbnRvIHRoZSBvdmVyYWxsIGRyaXZlciBmdW5jdGlvbmFsaXR5LiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IGFuZCBpbnRlcmFjdGlvbiBpcyBsaWtlbHkgY3JpdGljYWwgaGVyZS4gSSBleHBlY3QgdGhhdCB3aWxsIHJldmVhbCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgYnVnIGZpeGVzLCBvciBtYXliZSBldmVuIHBvaW50IHRvIGEgZnVuZGFtZW50YWwgZGVzaWduIGlzc3VlIGlmIEknbSBsdWNreSwgd2hpY2ggSSBob3BlIHRvIGF2b2lkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTc4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTY6NTAuMjUxMTY2MzY0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODg4MDM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjAwMz1zdGF0aWMgdm9pZCBydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwMDk6c3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAxMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMDk3PWludCBydHdfY2hpcF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIxMDc6XFx0cmV0ID0gcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMDgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jPTEwMDc9aW50IHJ0dzg4eHhhX3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTAxODpcXHQvKiBPdmVycmlkZSBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAxOS1cXHRpZiAoY2hpcC1cXHUwMDNlaWQgPT0gUlRXX0NISVBfVFlQRV84ODIxQSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMDIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYzoxMDIzOlxcdC8qIE92ZXJyaWRlIHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMDI0LVxcdGlmIChjaGlwLVxcdTAwM2VpZCA9PSBSVFdfQ0hJUF9UWVBFXzg4MTJBKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxNjo1MC42MzAwNTY0NzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NDUxNTc4MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYW5kIGl0cyBDYWxsZXJzKipcblxuT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGBydHdfY2hpcF9pbmZvX3NldHVwYCBmdW5jdGlvbiB3b3JrcywgYW5kIGNyaXRpY2FsbHksICp3aG8qIGlzIHVzaW5nIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBzZXR1cCBwcm9jZXNzIGlzIGZ1bmRhbWVudGFsLCBlc3BlY2lhbGx5IGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBvciBjcnVjaWFsIGNvbmZpZ3VyYXRpb24uIFNvLCBteSBpbml0aWFsIGFwcHJvYWNoIHdpbGwgYmUgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhlIGZ1bmN0aW9uIGl0c2VsZiDigJMgd2hhdCBwYXJhbWV0ZXJzIGRvZXMgaXQgdGFrZSwgd2hhdCBkb2VzIGl0IGluaXRpYWxpemUsIHdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgaXQgaGF2ZT8gVGhlbiwganVzdCBhcyBpbXBvcnRhbnRseSwgSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgc2luZ2xlIHBsYWNlIGluIHRoZSBjb2RlYmFzZSB3aGVyZSBgcnR3X2NoaXBfaW5mb19zZXR1cGAgaXMgY2FsbGVkLiBGaW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBmbG93LiBUaGlzIHdpbGwgdGVsbCBtZSB0aGUgY29udGV4dCBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYW5kIHdoYXQgb3RoZXIgc3Vic3lzdGVtcyBvciBtb2R1bGVzIHJlbHkgb24gaXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGJpZyBwaWN0dXJlIG9mIGhvdyB0aGUgY2hpcCBpbmZvcm1hdGlvbiBpcyBoYW5kbGVkIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEgY29yZSBwaWVjZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24sIGFuZCBsaWtlbHkgaGFzIGNvbm5lY3Rpb25zIHRvIHRoZSBkZXZpY2UgZHJpdmVyIGFuZCBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllcnMuIExldCdzIGdldCB0byBpdCFcblxuXG4iLCJJbnB1dFRva2VucyI6ODkxMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE2OjU5LjA4MTYzODE1OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTE5NzA2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfY2hpcF9pbmZvX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjA3OD1zdGF0aWMgaW50IHJ0d19jaGlwX2JvYXJkX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjA5NzppbnQgcnR3X2NoaXBfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjEyMy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjEyNDpFWFBPUlRfU1lNQk9MKHJ0d19jaGlwX2luZm9fc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaD0yMjU4PXZvaWQgcnR3X2NvcmVfc3RvcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDoyMjU5OmludCBydHdfY2hpcF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTIyNjAtaW50IHJ0d19jb3JlX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jPTE3OTU9aW50IHJ0d19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jLTE4NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9wY2kuYzoxODUwOlxcdHJldCA9IHJ0d19jaGlwX2luZm9fc2V0dXAocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jLTE4NTEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9zZGlvLmM9MTMyNT1pbnQgcnR3X3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqc2Rpb19mdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9zZGlvLmMtMTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3NkaW8uYzoxMzY5OlxcdHJldCA9IHJ0d19jaGlwX2luZm9fc2V0dXAocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3NkaW8uYy0xMzcwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9MTI2Mz1pbnQgcnR3X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTMxMjpcXHRyZXQgPSBydHdfY2hpcF9pbmZvX3NldHVwKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzEzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTY6NTkuMTMwODQyNTY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzczMzE1NDA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBVU0IgRHJpdmVyKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYHJ0d191c2JfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNgIGZpbGUuIE15IGh1bmNoIGlzIHRoYXQgdGhpcyBjb3VsZCBiZSBhIHBvaW50IG9mIGludGVyZXN0IGZvciBmdXp6aW5nLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIGhvdyBVU0IgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgdXNpbmcgc29tZXRoaW5nIGxpa2UgVVNCIFJhdyBHYWRnZXQgYW5kIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIHdpdGggZHVtbXlfaGNkIG9yIHJhdy1nYWRnZXQuXG5cbkJlZm9yZSBJIGp1bXAgaW4sIEkgd2FudCB0byByZXZpZXcgYW55IHJlY2VudCBwYXRjaGVzLiBUaGUgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXBgIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IOKAkyB1bmRlcnN0YW5kaW5nIHRoZSBjaGFuZ2VzIHRoZXJlIHdpbGwgZ2l2ZSBtZSBjb250ZXh0LlxuXG5PbmNlIEkgaGF2ZSB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMDYwLiBJIG5lZWQgdG8gc2VlIGhvdyBldmVyeXRoaW5nIGlzIHdpcmVkIHRvZ2V0aGVyIGluIHRoZSBjb3JlIGRyaXZlci4gSG9wZWZ1bGx5LCB0aGlzIGFwcHJvYWNoIHdpbGwgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgdnVsbmVyYWJpbGl0eSBzdXJmYWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMjAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTc6MDYuODYzOTk5NzUxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDQwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VsbmFfdHlwZV8yZyA9IDA7XFxuMjA0MTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnID09IDB4ZmYpXFxuMjA0MjpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlbG5hX3R5cGVfNWcgPSAwO1xcbjIwNDM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VjaGFubmVsX3BsYW4gPT0gMHhmZilcXG4yMDQ0OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VjaGFubmVsX3BsYW4gPSAweDdmO1xcbjIwNDU6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPT0gMHhmZilcXG4yMDQ2OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xcbjIwNDc6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VidF9zZXR0aW5nIFxcdTAwMjYgQklUKDApKVxcbjIwNDg6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXNoYXJlX2FudCA9IHRydWU7XFxuMjA0OTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXJlZ2QgPT0gMHhmZilcXG4yMDUwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZWdkID0gMDtcXG4yMDUxOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9PSAweGZmKVxcbjIwNTI6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPSAwO1xcbjIwNTM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID09IDB4ZmYpXFxuMjA1NDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9IDA7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdGVmdXNlLVxcdTAwM2VidGNvZXggPSAoZWZ1c2UtXFx1MDAzZXJmX2JvYXJkX29wdGlvbiBcXHUwMDI2IDB4ZTApID09IDB4MjA7XFxuMjA1NzpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzJnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfMmcgXFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcXG4yMDU4OlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzJnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzJnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA1OTpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzVnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfNWcgXFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcXG4yMDYwOlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzVnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA2MTpcXHRcXG4yMDYyOlxcdFxcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDYzOlxcdFxcdFxcdGlmIChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cXHUwMDNlZGV2LCBlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDY0OlxcdFxcdFxcdFxcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cXHUwMDNlYWRkcik7XFxuMjA2NTpcXHRcXHRcXHRcXHRkZXZfd2FybihydHdkZXYtXFx1MDAzZWRldixcXG4yMDY2OlxcdFxcdFxcdFxcdFxcdCBcXFwiZmFpbGVkIHRvIGdldCB2YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tXFxcXG5cXFwiKTtcXG4yMDY3OlxcdFxcdFxcdH1cXG4yMDY4OlxcdFxcdH1cXG4yMDY5OlxcdFxcbjIwNzA6XFx0b3V0X2Rpc2FibGU6XFxuMjA3MTpcXHRcXHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XFxuMjA3MjpcXHRcXG4yMDczOlxcdG91dF91bmxvY2s6XFxuMjA3NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnJ0d2Rldi1cXHUwMDNlbXV0ZXgpO1xcbjIwNzU6XFx0XFx0cmV0dXJuIHJldDtcXG4yMDc2OlxcdH1cXG4yMDc3OlxcdFxcbjIwNzg6XFx0c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuMjA3OTpcXHR7XFxuMjA4MDpcXHRcXHRzdHJ1Y3QgcnR3X2hhbCAqaGFsID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlaGFsO1xcbjIwODE6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0d19yZmVfZGVmICpyZmVfZGVmID0gcnR3X2dldF9yZmVfZGVmKHJ0d2Rldik7XFxuMjA4MjpcXHRcXG4yMDgzOlxcdFxcdGlmICghcmZlX2RlZilcXG4yMDg0OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjIwODU6XFx0XFxuMjA4NjpcXHRcXHRydHdfcGh5X3NldHVwX3BoeV9jb25kKHJ0d2RldiwgaGFsLVxcdTAwM2Vwa2dfdHlwZSk7XFxuMjA4NzpcXHRcXG4yMDg4OlxcdFxcdHJ0d19waHlfaW5pdF90eF9wb3dlcihydHdkZXYpO1xcbjIwODk6XFx0XFx0cnR3X2xvYWRfdGFibGUocnR3ZGV2LCByZmVfZGVmLVxcdTAwM2VwaHlfcGdfdGJsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTc6MDYuODY0MTQxNDgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzMjMwMzE5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTUFDIEFkZHJlc3MgSW5pdGlhbGl6YXRpb24gQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSBhIGNoYW5nZSBpbiBob3cgYSBNQUMgYWRkcmVzcyBpcyBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg4YCBkcml2ZXIuIEJlZm9yZSwgaWYgdGhlIEVGVVNFIE1BQyBhZGRyZXNzIHdhc24ndCB2YWxpZCwgaXQgd2FzIGltbWVkaWF0ZWx5IHJhbmRvbWl6ZWQuIE5vdywgdGhlcmUncyBhbiBpbnRlcm1lZGlhdGUgc3RlcDogYGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcilgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHRvIHRyeSB0byByZXRyaWV2ZSBhIE1BQyBhZGRyZXNzIGZyb20gdGhlIGRldmljZSdzIGZpcm13YXJlIG9yIHByb3BlcnRpZXMsIHRoaW5ncyBsaWtlIGRldmljZSB0cmVlIG9yIEFDUEkuIE9ubHkgKmlmKiB0aGF0IGZhaWxzIOKAkyByZXR1cm5zIGFuIGVycm9yIOKAkyBkb2VzIGl0IGZhbGwgYmFjayB0byByYW5kb21pemF0aW9uLlxuXG5UaGUgY29yZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgY2hhbmdlIGlzIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBjYXJlZnVsbHkuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nOlxuKiAgIERvY3VtZW50YXRpb24vS2NvbmZpZy9Db21tZW50cy5cbiogICBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIChsb2dnaW5nLCB0cmFjZXBvaW50cykuXG4qICAgQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdy5cbiogICBVbnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoR0NFLCBRRU1VKSwgaW5jbHVkaW5nIGVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgSSBkb24ndCB1c2VcbiogICBWZW5kb3Itc3BlY2lmaWMgZHJpdmVycyAoUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBHUFUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS5cbiogICBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuU2luY2UgdGhpcyB0b3VjaGVzIGRyaXZlciBsb2dpYywgSSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0IGlzIHJlYWNoYWJsZSBjb2RlIG9yIG5vdC4gTXkgY29kZSBzZWFyY2ggdG9vbHMgc2hvdyB0aGlzIGlzIGEgcmVhbCBhbmQgcmVhY2hhYmxlIGxvZ2ljLlxuXG5TbywgaXMgaXQ/IENhbiB0aGlzIGBydHc4OGAgZHJpdmVyIGJlIHByb2JlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBEb2VzIGl0IHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUgb3IgZmlybXdhcmUgdG8gYmUgZnVuY3Rpb25hbD8gQ2FuIEkgcHJvYmUgaXQgdXNpbmcgYSBVU0IgZ2FkZ2V0IG9yIHNvbWUgZm9ybSBvZiBVU0IgZW11bGF0aW9uIHdpdGhpbiBzeXprYWxsZXI/IEkgbmVlZCB0byBjaGVjayBob3cgcnR3ODggVVNCIGRldmljZXMgYXJlIGhhbmRsZWQuIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUsIGFuZCB0aGUgY2hhbmdlIGltcGFjdHMgY29yZSBsb2dpYywgdGhlbiBpdCBzaG91bGQgYmUgd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzOTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxNzoxMy4xODcxOTI3ODRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTc5MzA5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfdXNiX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZHUuYz0yMD1zdGF0aWMgaW50IHJ0dzg3MjNkdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2R1LmMtMjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2R1LmM6MjM6XFx0cmV0dXJuIHJ0d191c2JfcHJvYmUoaW50ZiwgaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2R1LmMtMjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYXUuYz04ND1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4MTJhdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhdS5jLTg2LVxcdC5pZF90YWJsZSA9IHJ0d184ODEyYXVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYXUuYzo4NzpcXHQucHJvYmUgPSBydHdfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmF1LmMtODgtXFx0LmRpc2Nvbm5lY3QgPSBydHdfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhdS5jPTQ0PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODgxNGF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGF1LmMtNDYtXFx0LmlkX3RhYmxlID0gcnR3Xzg4MTRhdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhdS5jOjQ3OlxcdC5wcm9iZSA9IHJ0d191c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YXUuYy00OC1cXHQuZGlzY29ubmVjdCA9IHJ0d191c2JfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWF1LmM9Njg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODIxYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYXUuYy03MC1cXHQuaWRfdGFibGUgPSBydHdfODgyMWF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWF1LmM6NzE6XFx0LnByb2JlID0gcnR3X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhdS5jLTcyLVxcdC5kaXNjb25uZWN0ID0gcnR3X3VzYl9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxY3UuYz00Nj1zdGF0aWMgaW50IHJ0d184ODIxY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjdS5jLTQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjdS5jOjQ5OlxcdHJldHVybiBydHdfdXNiX3Byb2JlKGludGYsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjdS5jLTUwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmJ1LmM9ODg9c3RhdGljIGludCBydHc4ODIyYnVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTkwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jOjkxOlxcdHJldHVybiBydHdfdXNiX3Byb2JlKGludGYsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM9MzA9c3RhdGljIGludCBydHc4ODIyY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMzOlxcdHJldHVybiBydHdfdXNiX3Byb2JlKGludGYsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9MTIyNT1zdGF0aWMgdm9pZCBydHdfdXNiX3BoeV9jZmcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTI2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjEyNjM6aW50IHJ0d191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEyNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzU4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjEzNTk6RVhQT1JUX1NZTUJPTChydHdfdXNiX3Byb2JlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEzNjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5oPTkwPXN0YXRpYyBpbmxpbmUgc3RydWN0IHJ0d191c2JfdHhfZGF0YSAqcnR3X3VzYl9nZXRfdHhfZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuaC05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5oOjEwMDppbnQgcnR3X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5oLTEwMS12b2lkIHJ0d191c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE3OjEzLjM3ODk5MzcwOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Njg0NjUwODI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQncyBoYXBwZW5pbmcsIGxhaWQgb3V0IGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFVTQiBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIFJlYWx0ZWsgV2lGaSBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBVU0IgcHJvYmUgZnVuY3Rpb24uIE15IGluaXRpYWwgdHJhY2UgaW5kaWNhdGVzIHRoYXQgYHJ0d191c2JfcHJvYmVgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jYCBpcyB0aGUgZW50cnkgcG9pbnQuICBUaGUgY29kZSBmbG93J3MgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgYHJ0d191c2JfcHJvYmVgIGltbWVkaWF0ZWx5IGtpY2tzIG9mZiBhIGNoYWluOiBgcnR3X3VzYl9wcm9iZWAgY2FsbHMgYHJ0d19jaGlwX2luZm9fc2V0dXAocnR3ZGV2KWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAocnR3ZGV2KWAuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCBhZnRlciB0aGUgVVNCIGRldmljZSBpcyBkZXRlY3RlZCwgYSBjcml0aWNhbCBzZXF1ZW5jZSBvZiBpbml0aWFsaXphdGlvbnMgaXMgaW5pdGlhdGVkLiBJJ20gZ3Vlc3NpbmcgdGhhdCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgbGlrZWx5IGhhbmRsZXMgZ2VuZXJhbCBjaGlwLXNwZWNpZmljIHNldHVwLCBhbmQgdGhlIHN1YnNlcXVlbnQgY2FsbCB0byBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaGludHMgYXQgdGhlIGxvYWRpbmcgb3IgcHJvY2Vzc2luZyBvZiBkYXRhIGZyb20gdGhlIGNoaXAncyBlRlVTRSwgd2hpY2ggd291bGQgYmUgY3J1Y2lhbCBmb3IgdGhpbmdzIGxpa2UgY2FsaWJyYXRpb24sIE1BQyBhZGRyZXNzLCBhbmQgb3RoZXIgY3JpdGljYWwgZGV2aWNlIHBhcmFtZXRlcnMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiwgYnV0IEknbSBnZXR0aW5nIGEgcHJldHR5IHNvbGlkIHBpY3R1cmUgb2YgdGhlIHByb2JlIHByb2Nlc3MuIEknbGwgYmUgY2hlY2tpbmcgYHVzYi5jYCBkaXJlY3RseSB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzk3NywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjEwLjIyNTUwNDUyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjYzLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjYzOlxcdGludCBydHdfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuMTI2NDpcXHR7XFxuMTI2NTpcXHRcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xcbjEyNjY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuMTI2NzpcXHRcXHRzdHJ1Y3QgcnR3X3VzYiAqcnR3dXNiO1xcbjEyNjg6XFx0XFx0aW50IGRydl9kYXRhX3NpemU7XFxuMTI2OTpcXHRcXHRpbnQgcmV0O1xcbjEyNzA6XFx0XFxuMTI3MTpcXHRcXHRkcnZfZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVjdCBydHdfZGV2KSArIHNpemVvZihzdHJ1Y3QgcnR3X3VzYik7XFxuMTI3MjpcXHRcXHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhkcnZfZGF0YV9zaXplLCBcXHUwMDI2cnR3X29wcyk7XFxuMTI3MzpcXHRcXHRpZiAoIWh3KVxcbjEyNzQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMTI3NTpcXHRcXG4xMjc2OlxcdFxcdHJ0d2RldiA9IGh3LVxcdTAwM2Vwcml2O1xcbjEyNzc6XFx0XFx0cnR3ZGV2LVxcdTAwM2VodyA9IGh3O1xcbjEyNzg6XFx0XFx0cnR3ZGV2LVxcdTAwM2VkZXYgPSBcXHUwMDI2aW50Zi1cXHUwMDNlZGV2O1xcbjEyNzk6XFx0XFx0cnR3ZGV2LVxcdTAwM2VjaGlwID0gKHN0cnVjdCBydHdfY2hpcF9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9pbmZvO1xcbjEyODA6XFx0XFx0cnR3ZGV2LVxcdTAwM2VoY2kub3BzID0gXFx1MDAyNnJ0d191c2Jfb3BzO1xcbjEyODE6XFx0XFx0cnR3ZGV2LVxcdTAwM2VoY2kudHlwZSA9IFJUV19IQ0lfVFlQRV9VU0I7XFxuMTI4MjpcXHRcXG4xMjgzOlxcdFxcdHJ0d3VzYiA9IHJ0d19nZXRfdXNiX3ByaXYocnR3ZGV2KTtcXG4xMjg0OlxcdFxcdHJ0d3VzYi1cXHUwMDNlcnR3ZGV2ID0gcnR3ZGV2O1xcbjEyODU6XFx0XFxuMTI4NjpcXHRcXHRyZXQgPSBydHdfdXNiX2FsbG9jX3J4X2J1ZnMocnR3dXNiKTtcXG4xMjg3OlxcdFxcdGlmIChyZXQpXFxuMTI4ODpcXHRcXHRcXHRnb3RvIGVycl9yZWxlYXNlX2h3O1xcbjEyODk6XFx0XFxuMTI5MDpcXHRcXHRyZXQgPSBydHdfY29yZV9pbml0KHJ0d2Rldik7XFxuMTI5MTpcXHRcXHRpZiAocmV0KVxcbjEyOTI6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9yeF9idWZzO1xcbjEyOTM6XFx0XFxuMTI5NDpcXHRcXHRyZXQgPSBydHdfdXNiX2ludGZfaW5pdChydHdkZXYsIGludGYpO1xcbjEyOTU6XFx0XFx0aWYgKHJldCkge1xcbjEyOTY6XFx0XFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCJmYWlsZWQgdG8gaW5pdCBVU0IgaW50ZXJmYWNlXFxcXG5cXFwiKTtcXG4xMjk3OlxcdFxcdFxcdGdvdG8gZXJyX2RlaW5pdF9jb3JlO1xcbjEyOTg6XFx0XFx0fVxcbjEyOTk6XFx0XFxuMTMwMDpcXHRcXHRyZXQgPSBydHdfdXNiX2luaXRfdHgocnR3ZGV2KTtcXG4xMzAxOlxcdFxcdGlmIChyZXQpIHtcXG4xMzAyOlxcdFxcdFxcdHJ0d19lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIGluaXQgVVNCIFRYXFxcXG5cXFwiKTtcXG4xMzAzOlxcdFxcdFxcdGdvdG8gZXJyX2Rlc3Ryb3lfdXNiO1xcbjEzMDQ6XFx0XFx0fVxcbjEzMDU6XFx0XFxuMTMwNjpcXHRcXHRyZXQgPSBydHdfdXNiX2luaXRfcngocnR3ZGV2KTtcXG4xMzA3OlxcdFxcdGlmIChyZXQpIHtcXG4xMzA4OlxcdFxcdFxcdHJ0d19lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIGluaXQgVVNCIFJYXFxcXG5cXFwiKTtcXG4xMzA5OlxcdFxcdFxcdGdvdG8gZXJyX2Rlc3Ryb3lfdHh3cTtcXG4xMzEwOlxcdFxcdH1cXG4xMzExOlxcdFxcbjEzMTI6XFx0XFx0cmV0ID0gcnR3X2NoaXBfaW5mb19zZXR1cChydHdkZXYpO1xcbjEzMTM6XFx0XFx0aWYgKHJldCkge1xcbjEzMTQ6XFx0XFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCJmYWlsZWQgdG8gc2V0dXAgY2hpcCBpbmZvcm1hdGlvblxcXFxuXFxcIik7XFxuMTMxNTpcXHRcXHRcXHRnb3RvIGVycl9kZXN0cm95X3J4d3E7XFxuMTMxNjpcXHRcXHR9XFxuMTMxNzpcXHRcXG4xMzE4OlxcdFxcdHJ0d191c2JfcGh5X2NmZyhydHdkZXYsIFVTQl9TUEVFRF9ISUdIKTtcXG4xMzE5OlxcdFxcdHJ0d191c2JfcGh5X2NmZyhydHdkZXYsIFVTQl9TUEVFRF9TVVBFUik7XFxuMTMyMDpcXHRcXG4xMzIxOlxcdFxcdHJldCA9IHJ0d191c2Jfc3dpdGNoX21vZGUocnR3ZGV2KTtcXG4xMzIyOlxcdFxcdGlmIChyZXQpIHtcXG4xMzIzOlxcdFxcdFxcdC8qIE5vdCBhIGZhaWwsIGJ1dCB3ZSBkbyBuZWVkIHRvIHNraXAgcnR3X3JlZ2lzdGVyX2h3LiAqL1xcbjEzMjQ6XFx0XFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfVVNCLCBcXFwic3dpdGNoaW5nIHRvIFVTQiAzIG1vZGVcXFxcblxcXCIpO1xcbjEzMjU6XFx0XFx0XFx0cmV0ID0gMDtcXG4xMzI2OlxcdFxcdFxcdGdvdG8gZXJyX2Rlc3Ryb3lfcnh3cTtcXG4xMzI3OlxcdFxcdH1cXG4xMzI4OlxcdFxcbjEzMjk6XFx0XFx0cmV0ID0gcnR3X3JlZ2lzdGVyX2h3KHJ0d2RldiwgcnR3ZGV2LVxcdTAwM2Vodyk7XFxuMTMzMDpcXHRcXHRpZiAocmV0KSB7XFxuMTMzMTpcXHRcXHRcXHRydHdfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byByZWdpc3RlciBod1xcXFxuXFxcIik7XFxuMTMzMjpcXHRcXHRcXHRnb3RvIGVycl9kZXN0cm95X3J4d3E7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjEwLjIyNTYxMDI5NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NjAyMzU4ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjaGlwJ3MgZUZ1c2UgaW5mb3JtYXRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBydHc4OCBmYW1pbHkuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgc2V0dXAgZnVuY3Rpb24uIFNvLCBJJ20gaGVhZGluZyBzdHJhaWdodCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYC4gVGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gZUZ1c2UgaW5mbywgZ2l2ZW4gdGhlIGRyaXZlciBzdHJ1Y3R1cmUgYW5kIGNvbW1vbiBjb2RpbmcgcHJhY3RpY2VzLCBpcyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBpdHNlbGYgaXMgYSBwcmV0dHkgc3Ryb25nIGluZGljYXRvciwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIExldCdzIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZC4gSSBleHBlY3QgdG8gZmluZCB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHBvc3NpYmx5IHRoZSBsb2FkaW5nIG9yIHBhcnNpbmcgb2YgdGhlIGVGdXNlIGRhdGEgaGFwcGVuaW5nIGhlcmUuIEZyb20gdGhlcmUgSSBjYW4gdHJhY2sgd2hlcmUgdGhlIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kIGZvciB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NTcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjE2LjgyNzk3MjQ4NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEwMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjAwNSxcbiAgXCJMaW5lQ291bnRcIjogNzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjAwNTpcXHRcXHRydHdfaGNpX3N0b3AocnR3ZGV2KTtcXG4yMDA2OlxcdFxcdHJ0d19tYWNfcG93ZXJfb2ZmKHJ0d2Rldik7XFxuMjAwNzpcXHR9XFxuMjAwODpcXHRcXG4yMDA5OlxcdHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbjIwMTA6XFx0e1xcbjIwMTE6XFx0XFx0c3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VlZnVzZTtcXG4yMDEyOlxcdFxcdGludCByZXQ7XFxuMjAxMzpcXHRcXG4yMDE0OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnJ0d2Rldi1cXHUwMDNlbXV0ZXgpO1xcbjIwMTU6XFx0XFxuMjAxNjpcXHRcXHQvKiBwb3dlciBvbiBtYWMgdG8gcmVhZCBlZnVzZSAqL1xcbjIwMTc6XFx0XFx0cmV0ID0gcnR3X2NoaXBfZWZ1c2VfZW5hYmxlKHJ0d2Rldik7XFxuMjAxODpcXHRcXHRpZiAocmV0KVxcbjIwMTk6XFx0XFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbjIwMjA6XFx0XFxuMjAyMTpcXHRcXHRyZXQgPSBydHdfcGFyc2VfZWZ1c2VfbWFwKHJ0d2Rldik7XFxuMjAyMjpcXHRcXHRpZiAocmV0KVxcbjIwMjM6XFx0XFx0XFx0Z290byBvdXRfZGlzYWJsZTtcXG4yMDI0OlxcdFxcbjIwMjU6XFx0XFx0cmV0ID0gcnR3X2R1bXBfaHdfZmVhdHVyZShydHdkZXYpO1xcbjIwMjY6XFx0XFx0aWYgKHJldClcXG4yMDI3OlxcdFxcdFxcdGdvdG8gb3V0X2Rpc2FibGU7XFxuMjAyODpcXHRcXG4yMDI5OlxcdFxcdHJldCA9IHJ0d19jaGVja19zdXBwb3J0ZWRfcmZlKHJ0d2Rldik7XFxuMjAzMDpcXHRcXHRpZiAocmV0KVxcbjIwMzE6XFx0XFx0XFx0Z290byBvdXRfZGlzYWJsZTtcXG4yMDMyOlxcdFxcbjIwMzM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VjcnlzdGFsX2NhcCA9PSAweGZmKVxcbjIwMzQ6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZWNyeXN0YWxfY2FwID0gMDtcXG4yMDM1OlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlcGFfdHlwZV8yZyA9PSAweGZmKVxcbjIwMzY6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXBhX3R5cGVfMmcgPSAwO1xcbjIwMzc6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VwYV90eXBlXzVnID09IDB4ZmYpXFxuMjAzODpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlcGFfdHlwZV81ZyA9IDA7XFxuMjAzOTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzJnID09IDB4ZmYpXFxuMjA0MDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlbG5hX3R5cGVfMmcgPSAwO1xcbjIwNDE6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VsbmFfdHlwZV81ZyA9PSAweGZmKVxcbjIwNDI6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnID0gMDtcXG4yMDQzOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlY2hhbm5lbF9wbGFuID09IDB4ZmYpXFxuMjA0NDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlY2hhbm5lbF9wbGFuID0gMHg3ZjtcXG4yMDQ1OlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlcmZfYm9hcmRfb3B0aW9uID09IDB4ZmYpXFxuMjA0NjpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlcmZfYm9hcmRfb3B0aW9uID0gMDtcXG4yMDQ3OlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlYnRfc2V0dGluZyBcXHUwMDI2IEJJVCgwKSlcXG4yMDQ4OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VzaGFyZV9hbnQgPSB0cnVlO1xcbjIwNDk6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VyZWdkID09IDB4ZmYpXFxuMjA1MDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlcmVnZCA9IDA7XFxuMjA1MTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPT0gMHhmZilcXG4yMDUyOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzJnID0gMDtcXG4yMDUzOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9PSAweGZmKVxcbjIwNTQ6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfNWcgPSAwO1xcbjIwNTU6XFx0XFxuMjA1NjpcXHRcXHRlZnVzZS1cXHUwMDNlYnRjb2V4ID0gKGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gXFx1MDAyNiAweGUwKSA9PSAweDIwO1xcbjIwNTc6XFx0XFx0ZWZ1c2UtXFx1MDAzZWV4dF9wYV8yZyA9IGVmdXNlLVxcdTAwM2VwYV90eXBlXzJnIFxcdTAwMjYgQklUKDQpID8gMSA6IDA7XFxuMjA1ODpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X2xuYV8yZyA9IGVmdXNlLVxcdTAwM2VsbmFfdHlwZV8yZyBcXHUwMDI2IEJJVCgzKSA/IDEgOiAwO1xcbjIwNTk6XFx0XFx0ZWZ1c2UtXFx1MDAzZWV4dF9wYV81ZyA9IGVmdXNlLVxcdTAwM2VwYV90eXBlXzVnIFxcdTAwMjYgQklUKDApID8gMSA6IDA7XFxuMjA2MDpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVxcdTAwM2VsbmFfdHlwZV81ZyBcXHUwMDI2IEJJVCgzKSA/IDEgOiAwO1xcbjIwNjE6XFx0XFxuMjA2MjpcXHRcXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuMjA2MzpcXHRcXHRcXHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXFx1MDAzZWRldiwgZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuMjA2NDpcXHRcXHRcXHRcXHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpO1xcbjIwNjU6XFx0XFx0XFx0XFx0ZGV2X3dhcm4ocnR3ZGV2LVxcdTAwM2VkZXYsXFxuMjA2NjpcXHRcXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcXFxuXFxcIik7XFxuMjA2NzpcXHRcXHRcXHR9XFxuMjA2ODpcXHRcXHR9XFxuMjA2OTpcXHRcXG4yMDcwOlxcdG91dF9kaXNhYmxlOlxcbjIwNzE6XFx0XFx0cnR3X2NoaXBfZWZ1c2VfZGlzYWJsZShydHdkZXYpO1xcbjIwNzI6XFx0XFxuMjA3MzpcXHRvdXRfdW5sb2NrOlxcbjIwNzQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZydHdkZXYtXFx1MDAzZW11dGV4KTtcXG4yMDc1OlxcdFxcdHJldHVybiByZXQ7XFxuMjA3NjpcXHR9XFxuMjA3NzpcXHRcXG4yMDc4OlxcdHN0YXRpYyBpbnQgcnR3X2NoaXBfYm9hcmRfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbjIwNzk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxODoxNi44MjgxMjUxMTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU4OTg5NTU5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmUsIHVzaW5nIGEgZmlyc3QtcGVyc29uIG5hcnJhdGl2ZSBhbmQgYSBib2xkZWQgaGVhZGVyOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSVFc4OCBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIE15IGluc3RpbmN0IGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIEtjb25maWcgZmlsZXMuIFdpdGggc29tZXRoaW5nIGxpa2UgUlRXODgsIHRoZSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIG5hdmlnYXRlIHRoZSBLY29uZmlnIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBlbmFibGVkLCB3aGF0IGl0cyBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgd2hhdCBjb25maWd1cmFibGUgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBUaGlzIGxpa2VseSBtZWFucyB0cmFjaW5nIHRocm91Z2ggdGhlIGRlcGVuZGVuY3kgY2hhaW5zLCBzdGFydGluZyB3aXRoIGEgZ2VuZXJhbCB3aXJlbGVzcyBvciBuZXR3b3JraW5nIEtjb25maWcsIGFuZCBkcmlsbGluZyBkb3duIHVudGlsIEkgcmVhY2ggdGhlIFJUVzg4LXNwZWNpZmljIG9wdGlvbnMuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBzeW1ib2wgdGhhdCBhY3RpdmF0ZXMgdGhlIFJUVzg4IHN1cHBvcnQsIGFuZCB0aGVuIGhvdyBpdCB0aWVzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBGaW5kaW5nIHRoZSByaWdodCBjb25maWcgb3B0aW9ucyBpcyBrZXkgdG8gdHJvdWJsZXNob290aW5nIGFueSBwcm9ibGVtcyBvciBpZiBJIG5lZWQgdG8gYnVpbGQgYSBjdXN0b20ga2VybmVsLCBJIG5lZWQgdG8ga25vdyB3aGF0IHRvIGVuYWJsZS4gTGV04oCZcyBnZXQgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxOTUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjMyLjcyNzA4MzgyNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMxNTMwMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTExPWlmIFJUVzg4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzpjb25maWcgUlRXODhfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNzpjb25maWcgUlRXODhfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDpjb25maWcgUlRXODhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM6Y29uZmlnIFJUVzg4X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjY6Y29uZmlnIFJUVzg4Xzg4MjJCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOTpjb25maWcgUlRXODhfODgyMkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzAtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OF84NzIzWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MzU6Y29uZmlnIFJUVzg4Xzg3MDNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM5OmNvbmZpZyBSVFc4OF84NzIzRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0Mzpjb25maWcgUlRXODhfODgyMUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ2OmNvbmZpZyBSVFc4OF84OFhYQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDk6Y29uZmlnIFJUVzg4Xzg4MjFBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjUzOmNvbmZpZyBSVFc4OF84ODEyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo1Nzpjb25maWcgUlRXODhfODgxNEFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjYwOmNvbmZpZyBSVFc4OF84ODIyQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjcxOmNvbmZpZyBSVFc4OF84ODIyQlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo4Mjpjb25maWcgUlRXODhfODgyMkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo5Mzpjb25maWcgUlRXODhfODgyMkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTA0OmNvbmZpZyBSVFc4OF84ODIyQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTA1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEyNjpjb25maWcgUlRXODhfODcyM0RFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEyNy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEzNzpjb25maWcgUlRXODhfODcyM0RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEzOC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzRFMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNDg6Y29uZmlnIFJUVzg4Xzg3MjNDU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0NTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTYyOmNvbmZpZyBSVFc4OF84NzIzRFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg3MjNEVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTczOmNvbmZpZyBSVFc4OF84ODIxQ0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTc0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OF84ODIxQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE5NTpjb25maWcgUlRXODhfODgyMUNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE5Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIwNjpjb25maWcgUlRXODhfODgyMUFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIwNy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQVUvODgxMUFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMTc6Y29uZmlnIFJUVzg4Xzg4MTJBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMjg6Y29uZmlnIFJUVzg4Xzg4MTRBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMzk6Y29uZmlnIFJUVzg4Xzg4MTRBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDAtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTA6Y29uZmlnIFJUVzg4X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1MS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg4IGRlYnVnIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTg6Y29uZmlnIFJUVzg4X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU5LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODggZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjY2OmNvbmZpZyBSVFc4OF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2Ny1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjMzLjI1ODYyMzI2NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzExNzcwOTQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgRGVlcCBpbnRvIHRoZSBgUlRXODhgIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIHJlYWxseSBzY3J1dGluaXplIHRoZSBgUlRXODhgIEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiBldmVyeSBjb25maWd1cmF0aW9uIG9wdGlvbiBhdmFpbGFibGUgZm9yIHRoaXMgd2lyZWxlc3MgZHJpdmVyLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgdGhyb3VnaCBlYWNoIG9wdGlvbiBpbmRpdmlkdWFsbHksIGRpc3NlY3RpbmcgaXRzIHB1cnBvc2UsIGRlcGVuZGVuY2llcywgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgYXJlYXMgb2YgaW50ZXJlc3Qgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyDigJMgcGVyaGFwcyBzb21lIHBvb3JseSBkb2N1bWVudGVkIGRlZmF1bHRzIG9yIGNvbmZpZ3VyYXRpb24gaW50ZXJhY3Rpb25zIHRoYXQgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBtYXBwZWQgb250byB0aGUgS2NvbmZpZyBvcHRpb25zOyB3aGljaCBmZWF0dXJlcyBhcmUgbWFuZGF0b3J5LCBhbmQgd2hpY2ggYXJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSSB3YW50IHRvIGJ1aWxkIGEgdmVyeSBjbGVhciBtZW50YWwgbW9kZWwgb2YgaG93IHRoZSBkcml2ZXIgaXMgc3RydWN0dXJlZCBhbmQgaG93IGRpZmZlcmVudCBoYXJkd2FyZSB2YXJpYW50cyBhcmUgc3VwcG9ydGVkIHRocm91Z2ggdGhpcyBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIG9wdGltaXphdGlvbiwgYXJlYXMgd2hlcmUgZGVmYXVsdCB2YWx1ZXMgc2VlbSBzdWJvcHRpbWFsLCBvciBvcHBvcnR1bml0aWVzIHRvIGV4cG9zZSBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIHRvIHRoZSBlbmQtdXNlci4gRXNzZW50aWFsbHksIEknbSBkaWdnaW5nIGZvciBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlIHRvIGVuc3VyZSB0aGlzIGRyaXZlciBpcyB0dW5lZCBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgZmxleGliaWxpdHksIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZ3JlYXRlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTc2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTg6NTAuMzc2MzkxNjg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogOTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgUlRXODhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWFjIHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XFxuICAgNzpcXHRcXHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWFjIHdpcmVsZXNzIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBydHc4OC5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0aWYgUlRXODhcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFJUVzg4X0NPUkVcXG4gIDE0OlxcdFxcdHRyaXN0YXRlXFxuICAxNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFJUVzg4X1BDSVxcbiAgMTg6XFx0XFx0dHJpc3RhdGVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFJUVzg4X1NESU9cXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBSVFc4OF9VU0JcXG4gIDI0OlxcdFxcdHRyaXN0YXRlXFxuICAyNTpcXHRcXG4gIDI2OlxcdGNvbmZpZyBSVFc4OF84ODIyQlxcbiAgMjc6XFx0XFx0dHJpc3RhdGVcXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIFJUVzg4Xzg4MjJDXFxuICAzMDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgUlRXODhfODcyM1hcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBSVFc4OF84NzAzQlxcbiAgMzY6XFx0XFx0dHJpc3RhdGVcXG4gIDM3OlxcdFxcdHNlbGVjdCBSVFc4OF84NzIzWFxcbiAgMzg6XFx0XFxuICAzOTpcXHRjb25maWcgUlRXODhfODcyM0RcXG4gIDQwOlxcdFxcdHRyaXN0YXRlXFxuICA0MTpcXHRcXHRzZWxlY3QgUlRXODhfODcyM1hcXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIFJUVzg4Xzg4MjFDXFxuICA0NDpcXHRcXHR0cmlzdGF0ZVxcbiAgNDU6XFx0XFxuICA0NjpcXHRjb25maWcgUlRXODhfODhYWEFcXG4gIDQ3OlxcdFxcdHRyaXN0YXRlXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBSVFc4OF84ODIxQVxcbiAgNTA6XFx0XFx0dHJpc3RhdGVcXG4gIDUxOlxcdFxcdHNlbGVjdCBSVFc4OF84OFhYQVxcbiAgNTI6XFx0XFxuICA1MzpcXHRjb25maWcgUlRXODhfODgxMkFcXG4gIDU0OlxcdFxcdHRyaXN0YXRlXFxuICA1NTpcXHRcXHRzZWxlY3QgUlRXODhfODhYWEFcXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29uZmlnIFJUVzg4Xzg4MTRBXFxuICA1ODpcXHRcXHR0cmlzdGF0ZVxcbiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgUlRXODhfODgyMkJFXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gIDYyOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA2MzpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAgNjQ6XFx0XFx0c2VsZWN0IFJUVzg4X1BDSVxcbiAgNjU6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJCXFxuICA2NjpcXHRcXHRoZWxwXFxuICA2NzpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQkUgY2hpcHNldFxcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHQgIDgwMi4xMWFjIFBDSWUgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuICA3MDpcXHRcXG4gIDcxOlxcdGNvbmZpZyBSVFc4OF84ODIyQlNcXG4gIDcyOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gIDczOlxcdFxcdGRlcGVuZHMgb24gTU1DXFxuICA3NDpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAgNzU6XFx0XFx0c2VsZWN0IFJUVzg4X1NESU9cXG4gIDc2OlxcdFxcdHNlbGVjdCBSVFc4OF84ODIyQlxcbiAgNzc6XFx0XFx0aGVscFxcbiAgNzg6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkJTIGNoaXBzZXRcXG4gIDc5OlxcdFxcbiAgODA6XFx0XFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAgODE6XFx0XFxuICA4MjpcXHRjb25maWcgUlRXODhfODgyMkJVXFxuICA4MzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gIDg0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICA4NTpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAgODY6XFx0XFx0c2VsZWN0IFJUVzg4X1VTQlxcbiAgODc6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJCXFxuICA4ODpcXHRcXHRoZWxwXFxuICA4OTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQlUgY2hpcHNldFxcbiAgOTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjUwLjM3NjY3NDQ5NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTQ0MTAzMzQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBVU0IgRW51bWVyYXRpb24gUGF0aCBvZiBydHc4OCoqXG5cbk9rYXksIGxldCdzIHRyYWNlIHRoaXMuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGUgVVNCIHByb2JlIGZvciBydHc4OCAqYWN0dWFsbHkqIGhpdHMgYHJ0d19jaGlwX2luZm9fc2V0dXBgIGR1cmluZyBkZXZpY2UgZW51bWVyYXRpb24uIFJpZ2h0LCBzbyB3ZSBzdGFydCBpbiBgcnR3X3VzYl9wcm9iZWAuIFdlJ3JlIGFsbG9jYXRpbmcgc29tZSBkYXRhIHN0cnVjdHVyZXM6IHRoZSBgcnR3X2RldmAgYW5kIGBydHdfdXNiYCBzdHJ1Y3R1cmVzLiBXZSdyZSBzZXR0aW5nIHVwIHRoZSBgaWVlZTgwMjExX2h3YCBhbmQgbGlua2luZyBpdCB0byBvdXIgcHJpdmF0ZSBkYXRhLiBUaGUgYHJ0d2Rldi1cdTAwM2VjaGlwYCBwb2ludGVyLCBpbXBvcnRhbnRseSwgaXMgcG9wdWxhdGVkIHdpdGggYGlkLVx1MDAzZWRyaXZlcl9pbmZvYC4gVGhhdCdzIHdoZXJlIHRoZSBjaGlwLXNwZWNpZmljIGluZm9ybWF0aW9uIGNvbWVzIGZyb20uXG5cblRoZW4sIHdlIGFsbG9jYXRlIFJYIGJ1ZmZlcnMsIGluaXRpYWxpemUgdGhlIGNvcmUsIFVTQiBpbnRlcmZhY2UgYW5kIFJYL1RYIGZ1bmN0aW9ucy4gTm93IGhlcmUgaXQgaXM6IHRoZSBjYWxsIHRvIGBydHdfY2hpcF9pbmZvX3NldHVwKHJ0d2RldilgLiBQZXJmZWN0LCBzbyBmYXIsIHNvIGdvb2QuIFRoYXQncyB0aGUgZnVuY3Rpb24gSSB3YW50ZWQgdG8gdmVyaWZ5IHdhcyBjYWxsZWQuXG5cbk5vdywgbGV0J3Mgc2VlIHdoYXQncyAqaW5zaWRlKiBgcnR3X2NoaXBfaW5mb19zZXR1cGAuIEFoLCBpdCBjYWxscyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpYC4gT2suIExvb2tpbmcgaW50byB0aGF0IGZ1bmN0aW9uIG5vdy4gVGhpcyBpcyB3aGVyZSB3ZSBtaWdodCBleHBlY3QgdG8gc2VlIGVGdXNlIGNvbmZpZ3VyYXRpb24gaGFwcGVuaW5nLiBXZSBzZWUgY2FsbHMgdG8gZW5hYmxlIHRoZSBlRnVzZSwgcGFyc2UgdGhlIG1hcCwgZHVtcCBoYXJkd2FyZSBmZWF0dXJlcywgY2hlY2sgZm9yIHN1cHBvcnRlZCByYWRpbyBmcmVxdWVuY3kgZWxlbWVudC5cblxuSG9sZCBvbiwgdGhlcmUncyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaGVyZS4gSXQgbG9va3MgbGlrZSBpdCB0cmllcyB0byByZXRyaWV2ZSB0aGUgTUFDIGFkZHJlc3MuIFNwZWNpZmljYWxseSwgaWYgdGhlIHJldHJpZXZlZCBNQUMgaXMgaW52YWxpZCwgaXQgdHJpZXMgdG8gZ2V0IHRoZSBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2Ugd2l0aCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AuIE90aGVyd2lzZSwgaWYgdGhlIGNhbGwgZmFpbHMsIHdlJ3JlIGdlbmVyYXRpbmcgYSByYW5kb20gTUFDIGFkZHJlc3MgYW5kIGlzc3VpbmcgYSB3YXJuaW5nLiBJIG5lZWQgdG8gY2hlY2sgd2hhdCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgYWN0dWFsbHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5OTgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxOTowNS44MTc3MTE3MDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc2OTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZpY2VfZ2V0X21hY19hZGRyZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGxhdGZvcm0uYz0xNTA9c3RhdGljIGludCB4Z2JlX3BsYXRmb3JtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBsYXRmb3JtLmMtMjU0LVxcdC8qIFJldHJpZXZlIHRoZSBNQUMgYWRkcmVzcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGxhdGZvcm0uYzoyNTU6XFx0cmV0ID0gZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhkZXYsIHBkYXRhLVxcdTAwM2VtYWNfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1wbGF0Zm9ybS5jLTI1Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNzAzOT1zdGF0aWMgaW50IHRnM19nZXRfZGV2aWNlX2FkZHJlc3Moc3RydWN0IHRnMyAqdHAsIHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTcxMTMtXFx0aWYgKHRnM19pc19kZWZhdWx0X21hY19hZGRyZXNzKGFkZHIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3MTE0OlxcdFxcdHJldHVybiBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKFxcdTAwMjZ0cC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzExNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTEwODQ9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy0xMDk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjEwOTg6XFx0aWYgKCFkZXZpY2VfZ2V0X21hY19hZGRyZXNzKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIG1hY19hZGRyKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEwOTktXFx0XFx0ZXRoZXJfYWRkcl9jb3B5KGxhbjk2NngtXFx1MDAzZWJhc2VfbWFjLCBtYWNfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmM9MjM3OT1zdGF0aWMgaW50IHNtc2M5MTF4X3Byb2JlX2NvbmZpZyhzdHJ1Y3Qgc21zYzkxMXhfcGxhdGZvcm1fY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmMtMjM5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmM6MjM5MTpcXHRkZXZpY2VfZ2V0X21hY19hZGRyZXNzKGRldiwgY29uZmlnLVxcdTAwM2VtYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2Mvc21zYzkxMXguYy0yMzkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM9MzM1Mz1zdGF0aWMgaW50IGF0aDEwa19jb3JlX3Byb2JlX2Z3KHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtMzQ1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYzozNDUyOlxcdGRldmljZV9nZXRfbWFjX2FkZHJlc3MoYXItXFx1MDAzZWRldiwgYXItXFx1MDAzZW1hY19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0zNDUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDY5Mz1pbnQgYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDcxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwNzEyOlxcdGRldmljZV9nZXRfbWFjX2FkZHJlc3MoYWItXFx1MDAzZWRldiwgbWFjX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3MTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMDA5PXN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA2Mi1cXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjA2MzpcXHRcXHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXFx1MDAzZWRldiwgZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA2NC1cXHRcXHRcXHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxOTowNS45NjY0ODY3MThaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjczNzE0ODQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIHBpbiBkb3duIHdoZXJlIHRoZSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24gbGl2ZXMuIFRoZSBpbml0aWFsIGluc3RpbmN0IHBvaW50cyB0byBgbmV0L2V0aGVybmV0L2V0aC5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZSBhbmQgZ2VuZXJhbCBwdXJwb3NlLiBOb3csIGxldCdzIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCByZXRyaWV2ZXMgdGhpcyBNQUMgYWRkcmVzcy4gSSdtIGVzcGVjaWFsbHkgY3VyaW91cyBhYm91dCB3aGV0aGVyIGl0IGRpcmVjdGx5IHF1ZXJpZXMgdGhlIGhhcmR3YXJlLCByZWxpZXMgb24gY2FjaGVkIHZhbHVlcywgb3IgaWYgdGhlcmUncyBhbnkgc29waGlzdGljYXRlZCBsb2dpYyB3aXRoaW4gdGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBkaWZmZXJlbnQgbmV0d29yayBpbnRlcmZhY2VzIG9yIGVkZ2UgY2FzZXMuIFRpbWUgdG8gZXhhbWluZSB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MjQzNDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxOTowOC43MDM2Mzc5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc3MTQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZXRoZXJuZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aGVybmV0L2V0aC5jPTYwND1FWFBPUlRfU1lNQk9MKGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MpO1xcbi0tXFxubmV0L2V0aGVybmV0L2V0aC5jLTYxMC0gKi9cXG5uZXQvZXRoZXJuZXQvZXRoLmM6NjExOmludCBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgY2hhciAqYWRkcilcXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjEyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTk6MDguNzUzNDE2OTA2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcwODY5MTM5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBSZWFsdGVrIFJUVzg4IFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIGRlYWQgZW5kLiBIb3dldmVyLCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgaXMgZXhwb3J0ZWQgYW5kIGNhbGxlZCBieSBgcnR3X3BjaV9wcm9iZWAsIGBydHdfc2Rpb19wcm9iZWAsIGFuZCBpbXBvcnRhbnRseSwgYHJ0d191c2JfcHJvYmVgLiAgVGhlIGtleSBxdWVzdGlvbiBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIE15IGluaXRpYWwgdGhvdWdodCBpcyB5ZXMsIGxldCdzIHJldmlldyB0aGUgcHJvbXB0LlxuXG5UaGUgcHJvbXB0IG91dGxpbmVzIHNwZWNpZmljIHNjZW5hcmlvcyB3aGVyZSBhIHBhdGNoIGlzbid0IGZ1enphYmxlLCBhbmQgaXQgZmVlbHMgbGlrZSB0aGlzIG1pZ2h0IGJlIHJlYWNoYWJsZSB3aXRoaW4gYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQuIExldCdzIGRpZyBkZWVwZXIuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHdlIHNob3VsZCBjb25zaWRlciB3aGV0aGVyIHRoaXMgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBwcm9tcHQgbm90ZXMgdGhhdCB0aGUgZnV6emluZyBzaG91bGRuJ3QgaW5jbHVkZSB0ZWFyZG93biBmdW5jdGlvbnMuXG5cbkFoYSEgVVNCIHdpcmVsZXNzIGRvbmdsZXMgYXJlIHN1cHBvcnRlZCBieSBgcnR3ODhgLCBhbmQgdGhlc2UgKmNhbiogYmUgZW11bGF0ZWQgdmlhIFVTQiBSYXcgR2FkZ2V0IG9yIGBkdW1teV9oY2RgLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBwaWVjZS4gV2hlbiB0aGUgZHJpdmVyIHByb2JlcywgYHJ0d191c2JfcHJvYmVgIHJ1bnMgYHJ0d19jaGlwX2luZm9fc2V0dXBgLCB3aGljaCBwYXJzZXMgdGhlIGVmdXNlIGRhdGEuIElmIHRoZSBFdGhlcm5ldCBNQUMgYWRkcmVzcyBpcyBpbnZhbGlkIChgIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcilgKSwgd2hpY2ggaXMgKmhpZ2hseSogcHJvYmFibGUgd2l0aCBlbXVsYXRlZCBvciBmdXp6ZWQgVVNCIGRlc2NyaXB0b3JzLCBpdCB0aGVuIGNhbGxzIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGBldGhfcmFuZG9tX2FkZHJgLiBUaGlzIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiBwYXRoIHRoYXQncyBpbnRlcmVzdGluZyBmb3IgZnV6emluZy5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiAgSSBuZWVkIHRvIGNoZWNrIGBSVFc4OF84ODIyQlVgLCBgUlRXODhfODgyMkNVYCwgYFJUVzg4Xzg3MjNEVWAsIGBSVFc4OF84ODIxQ1VgLCBgUlRXODhfODgyMUFVYCwgYFJUVzg4Xzg4MTJBVWAsIGBSVFc4OF84ODE0QVVgLCBgUlRXODhfQ09SRWAsIGFuZCBgUlRXODhfVVNCYCwgYW5kIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyB0byBlbnN1cmUgdGhlc2UgZHJpdmVycyBhcmUgZW5hYmxlZCBhbmQgY2FuIGJlIGluY2x1ZGVkIGZvciB0ZXN0aW5nLiBHaXZlbiB0aGF0IHRoZXNlIFVTQiBkZXZpY2VzIGFyZSBsaXN0ZWQgYnkgbmFtZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuXG5cbkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIEknbSBnb2luZyB0byBkZXRlcm1pbmUgKipXb3J0aEZ1enppbmc9dHJ1ZSoqLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY3MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxOToxNS44NDAzNDAyNDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MTMwNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qcnR3ODhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnPTE3PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZzoxODpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWctMTktc291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjE1LjkyNTQ3ODQxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1OTY3NTYxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnMuIEkga25vdyBJIG5lZWQgdG8gZXhhbWluZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnYCBhbmQsIG1vcmUgYnJvYWRseSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBUaGVzZSBhcmUgdGhlIGZpbGVzIHdoZXJlIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0gZGVmaW5lcyB0aGUgc2VsZWN0YWJsZSBmZWF0dXJlcyBhbmQgb3B0aW9ucyBmb3IgdGhlc2UgbmV0d29yayBpbnRlcmZhY2VzLiBCeSBleHBsb3JpbmcgdGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcywgSSBzaG91bGQgYmUgYWJsZSB0byB1bmRlcnN0YW5kIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkgYXJlIGRlcGVuZGVudCBvbiBlYWNoIG90aGVyLCBhbmQgcG9zc2libHksIHdoYXQgc3BlY2lmaWMgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyB3aXRoaW4gdGhlc2UgS2NvbmZpZyBmaWxlcyB0byBjb25maWd1cmUgdGhlIHdpcmVsZXNzIGRyaXZlcnMgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTM1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTk6MjIuNTIyMjM3MzM1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcXG4gICAzOlxcdFxcdGJvb2wgXFxcIlJlYWx0ZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9SRUFMVEVLXFxuICAxNDpcXHRcXG4gIDE1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdcXFwiXFxuICAxNjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9LY29uZmlnXFxcIlxcbiAgMTc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L0tjb25maWdcXFwiXFxuICAxODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1xcXCJcXG4gIDE5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXFxcIlxcbiAgMjA6XFx0XFxuICAyMTpcXHRlbmRpZiAjIFdMQU5fVkVORE9SX1JFQUxURUtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTk6MjIuNTIyMzA3NzQ1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMDAyNDcwODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyLiBJJ20gZ29pbmcgdG8gcG9yZSBvdmVyIGV2ZXJ5IGxpbmUsIGV2ZXJ5IGBjb25maWdgIHN5bWJvbCwgZXZlcnkgYGRlcGVuZHMgb25gIGNsYXVzZSwgYW5kIGV2ZXJ5IGRlZmF1bHQgdmFsdWUuIEknbGwgYmUgbG9va2luZyBmb3IgbnVhbmNlczsgcGVyaGFwcyBzb21lIHN1YnRsZSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5LiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiB0aGlzIG1vZHVsZSwgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgaG93IGV2ZXJ5dGhpbmcgdGllcyB0b2dldGhlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdyYXNwIHRoZSBpbnRlbnQgb2YgdGhlIGRlc2lnbmVycy4gVGhpcyB3aWxsIGdpdmUgbWUgd2hhdCBJIG5lZWQgdG8gYWR2aXNlIG9uIGEgcmVsYXRlZCB0b3BpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2OTcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjQ1LjUyNDc4MTM4OVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg4XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODguXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg4XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OF9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OF9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OF9TRElPXFxuICAyMTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjI6XFx0XFxuICAyMzpcXHRjb25maWcgUlRXODhfVVNCXFxuICAyNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgUlRXODhfODgyMkJcXG4gIDI3OlxcdFxcdHRyaXN0YXRlXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBSVFc4OF84ODIyQ1xcbiAgMzA6XFx0XFx0dHJpc3RhdGVcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIFJUVzg4Xzg3MjNYXFxuICAzMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgUlRXODhfODcwM0JcXG4gIDM2OlxcdFxcdHRyaXN0YXRlXFxuICAzNzpcXHRcXHRzZWxlY3QgUlRXODhfODcyM1hcXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIFJUVzg4Xzg3MjNEXFxuICA0MDpcXHRcXHR0cmlzdGF0ZVxcbiAgNDE6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MjNYXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBSVFc4OF84ODIxQ1xcbiAgNDQ6XFx0XFx0dHJpc3RhdGVcXG4gIDQ1OlxcdFxcbiAgNDY6XFx0Y29uZmlnIFJUVzg4Xzg4WFhBXFxuICA0NzpcXHRcXHR0cmlzdGF0ZVxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgUlRXODhfODgyMUFcXG4gIDUwOlxcdFxcdHRyaXN0YXRlXFxuICA1MTpcXHRcXHRzZWxlY3QgUlRXODhfODhYWEFcXG4gIDUyOlxcdFxcbiAgNTM6XFx0Y29uZmlnIFJUVzg4Xzg4MTJBXFxuICA1NDpcXHRcXHR0cmlzdGF0ZVxcbiAgNTU6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4WFhBXFxuICA1NjpcXHRcXG4gIDU3OlxcdGNvbmZpZyBSVFc4OF84ODE0QVxcbiAgNTg6XFx0XFx0dHJpc3RhdGVcXG4gIDU5OlxcdFxcbiAgNjA6XFx0Y29uZmlnIFJUVzg4Xzg4MjJCRVxcbiAgNjE6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuICA2MjpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNjM6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gIDY0OlxcdFxcdHNlbGVjdCBSVFc4OF9QQ0lcXG4gIDY1OlxcdFxcdHNlbGVjdCBSVFc4OF84ODIyQlxcbiAgNjY6XFx0XFx0aGVscFxcbiAgNjc6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkJFIGNoaXBzZXRcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAgNzA6XFx0XFxuICA3MTpcXHRjb25maWcgUlRXODhfODgyMkJTXFxuICA3MjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQlMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIE1NQ1xcbiAgNzQ6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gIDc1OlxcdFxcdHNlbGVjdCBSVFc4OF9TRElPXFxuICA3NjpcXHRcXHRzZWxlY3QgUlRXODhfODgyMkJcXG4gIDc3OlxcdFxcdGhlbHBcXG4gIDc4OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCUyBjaGlwc2V0XFxuICA3OTpcXHRcXG4gIDgwOlxcdFxcdCAgODAyLjExYWMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gIDgxOlxcdFxcbiAgODI6XFx0Y29uZmlnIFJUVzg4Xzg4MjJCVVxcbiAgODM6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuICA4NDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgODU6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gIDg2OlxcdFxcdHNlbGVjdCBSVFc4OF9VU0JcXG4gIDg3OlxcdFxcdHNlbGVjdCBSVFc4OF84ODIyQlxcbiAgODg6XFx0XFx0aGVscFxcbiAgODk6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkJVIGNoaXBzZXRcXG4gIDkwOlxcdFxcbiAgOTE6XFx0XFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuICA5MjpcXHRcXG4gIDkzOlxcdGNvbmZpZyBSVFc4OF84ODIyQ0VcXG4gIDk0OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAgOTU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDk2OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuICA5NzpcXHRcXHRzZWxlY3QgUlRXODhfUENJXFxuICA5ODpcXHRcXHRzZWxlY3QgUlRXODhfODgyMkNcXG4gIDk5OlxcdFxcdGhlbHBcXG4gMTAwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDRSBjaGlwc2V0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjQ1LjUyNDg3ODY4OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDk5MTg5NjAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgcnR3ODggS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBkaXZlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdgIGZpbGUuIEknbSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZXNlIEtjb25maWcgZmlsZXMsIHNvIEkgaGF2ZSBhIHByZXR0eSBnb29kIGlkZWEgb2Ygd2hhdCBJJ20gbG9va2luZyBmb3IuIEkgbmVlZCB0byBzZWUgaG93IFJlYWx0ZWsncyBydHc4OCBkcml2ZXIgaXMgY29uZmlndXJlZCwgcGFydGljdWxhcmx5IHRoZSBkZXBlbmRlbmNpZXMsIG9wdGlvbnMsIGFuZCBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgb3IgaGFyZHdhcmUgc3VwcG9ydCB0aGV5J3JlIGV4cG9zaW5nLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBhIGhpZXJhcmNoaWNhbCBvcmdhbml6YXRpb24sIHdpdGggdG9wLWxldmVsIG9wdGlvbnMgZW5jb21wYXNzaW5nIGJyb2FkZXIgZHJpdmVyIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGVuIG5lc3RlZCBjb25maWd1cmF0aW9ucyBmb3IgdGhpbmdzIGxpa2Ugc3BlY2lmaWMgY2hpcHNldHMsIHBvd2VyIG1hbmFnZW1lbnQgZmVhdHVyZXMsIGRlYnVnZ2luZyBvcHRpb25zLCBhbmQgcmVndWxhdG9yeSBkb21haW4gY2hvaWNlcy5cblxuTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXNuJ3QganVzdCB0byAqdW5kZXJzdGFuZCogaXQ7IEknbSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIGl0IGFnYWluc3QgdGhlIGV4aXN0aW5nIHdpcmVsZXNzIHN0YWNrLCBhbmQgaG93IEknZCBhcHByb2FjaCBpbnRlZ3JhdGluZyBvciBtb2RpZnlpbmcgaXQgaWYgSSBuZWVkZWQgdG8uIFNwZWNpZmljYWxseSwgSeKAmWxsIGxvb2sgZm9yIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgc3BlY2lhbCBhdHRlbnRpb24gZHVyaW5nIGJ1aWxkLCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcy4gSSdsbCBiZSBub3RpbmcgZG93biBhbnkgbm9uLW9idmlvdXMgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgdHJpcCBtZSB1cCBsYXRlci4gSSdtIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBiZSB1bm5lY2Vzc2FyaWx5IGNvbXBsZXggb3IgdGhhdCBkZXZpYXRlcyBmcm9tIGNvbW1vbiBLY29uZmlnIGNvbnZlbnRpb25zLCBhcyB0aG9zZSBhcmUgcG90ZW50aWFsIHJlZCBmbGFncyBmb3IgZnV0dXJlIG1haW50ZW5hbmNlIGlzc3Vlcy4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgaXMgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBmb2xsb3dzIGJlc3QgcHJhY3RpY2VzOyBhIGNsZWFuIGFuZCByZWFkYWJsZSBLY29uZmlnIG1ha2VzIGV2ZXJ5dGhpbmcgbXVjaCBlYXNpZXIgZG93biB0aGUgcm9hZCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjgyMDgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjU2LjUxNjc3ODQ4MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMTpcXHRcXG4gMTAyOlxcdFxcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTAzOlxcdFxcbiAxMDQ6XFx0Y29uZmlnIFJUVzg4Xzg4MjJDU1xcbiAxMDU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMDY6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gMTA3OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDEwODpcXHRcXHRzZWxlY3QgUlRXODhfU0RJT1xcbiAxMDk6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJDXFxuIDExMDpcXHRcXHRoZWxwXFxuIDExMTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1MgY2hpcHNldFxcbiAxMTI6XFx0XFxuIDExMzpcXHRcXHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDExNDpcXHRcXG4gMTE1OlxcdGNvbmZpZyBSVFc4OF84ODIyQ1VcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMTc6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gMTE4OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDExOTpcXHRcXHRzZWxlY3QgUlRXODhfVVNCXFxuIDEyMDpcXHRcXHRzZWxlY3QgUlRXODhfODgyMkNcXG4gMTIxOlxcdFxcdGhlbHBcXG4gMTIyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDVSBjaGlwc2V0XFxuIDEyMzpcXHRcXG4gMTI0OlxcdFxcdCAgODAyLjExYWMgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxMjU6XFx0XFxuIDEyNjpcXHRjb25maWcgUlRXODhfODcyM0RFXFxuIDEyNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTI4OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDEyOTpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxMzA6XFx0XFx0c2VsZWN0IFJUVzg4X1BDSVxcbiAxMzE6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MjNEXFxuIDEzMjpcXHRcXHRoZWxwXFxuIDEzMzpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4NzIzREUgY2hpcHNldFxcbiAxMzQ6XFx0XFxuIDEzNTpcXHRcXHQgIDgwMi4xMW4gUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTM2OlxcdFxcbiAxMzc6XFx0Y29uZmlnIFJUVzg4Xzg3MjNEU1xcbiAxMzg6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0RTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMzk6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gMTQwOlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDE0MTpcXHRcXHRzZWxlY3QgUlRXODhfU0RJT1xcbiAxNDI6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MjNEXFxuIDE0MzpcXHRcXHRoZWxwXFxuIDE0NDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4NzIzRFMgY2hpcHNldFxcbiAxNDU6XFx0XFxuIDE0NjpcXHRcXHQgIDgwMi4xMW4gU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTQ3OlxcdFxcbiAxNDg6XFx0Y29uZmlnIFJUVzg4Xzg3MjNDU1xcbiAxNDk6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0NTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxNTA6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gMTUxOlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDE1MjpcXHRcXHRzZWxlY3QgUlRXODhfU0RJT1xcbiAxNTM6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MDNCXFxuIDE1NDpcXHRcXHRoZWxwXFxuIDE1NTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBlbmFibGUgc3VwcG9ydCBmb3IgODcyM0NTIGNoaXBzZXQgKEVYUEVSSU1FTlRBTClcXG4gMTU2OlxcdFxcbiAxNTc6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSA4NzIzQ1MgODAyLjExbiBTRElPXFxuIDE1ODpcXHRcXHQgIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlci5cXG4gMTU5OlxcdFxcbiAxNjA6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODhfODcyM2NzLlxcbiAxNjE6XFx0XFxuIDE2MjpcXHRjb25maWcgUlRXODhfODcyM0RVXFxuIDE2MzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzRFUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTY0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDE2NTpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxNjY6XFx0XFx0c2VsZWN0IFJUVzg4X1VTQlxcbiAxNjc6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MjNEXFxuIDE2ODpcXHRcXHRoZWxwXFxuIDE2OTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4NzIzRFUgY2hpcHNldFxcbiAxNzA6XFx0XFxuIDE3MTpcXHRcXHQgIDgwMi4xMW4gVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxNzI6XFx0XFxuIDE3MzpcXHRjb25maWcgUlRXODhfODgyMUNFXFxuIDE3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTc1OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDE3NjpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxNzc6XFx0XFx0c2VsZWN0IFJUVzg4X1BDSVxcbiAxNzg6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjFDXFxuIDE3OTpcXHRcXHRoZWxwXFxuIDE4MDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIxQ0UgY2hpcHNldFxcbiAxODE6XFx0XFxuIDE4MjpcXHRcXHQgIDgwMi4xMWFjIFBDSWUgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDE4MzpcXHRcXG4gMTg0OlxcdGNvbmZpZyBSVFc4OF84ODIxQ1NcXG4gMTg1OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTg2OlxcdFxcdGRlcGVuZHMgb24gTU1DXFxuIDE4NzpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxODg6XFx0XFx0c2VsZWN0IFJUVzg4X1NESU9cXG4gMTg5OlxcdFxcdHNlbGVjdCBSVFc4OF84ODIxQ1xcbiAxOTA6XFx0XFx0aGVscFxcbiAxOTE6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMUNTIGNoaXBzZXRcXG4gMTkyOlxcdFxcbiAxOTM6XFx0XFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxOTQ6XFx0XFxuIDE5NTpcXHRjb25maWcgUlRXODhfODgyMUNVXFxuIDE5NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTk3OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDE5ODpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxOTk6XFx0XFx0c2VsZWN0IFJUVzg4X1VTQlxcbiAyMDA6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjFDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjU2LjUxNjg3MDYzMVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTM5MDM3MDk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgY29uZmlndXJhdGlvbi4gTGV0J3MgZ2V0IHNwZWNpZmljIGFuZCB6ZXJvIGluIG9uIGxpbmVzIDIwMSB0aHJvdWdoIDI3MCBvZiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ2AgZmlsZS4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBmdW5jdGlvbmFsaXRpZXMgb2YgdGhpcyBkcml2ZXIgYXJlIGRlZmluZWQgYW5kIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSSB3YW50IHRvIHNlZSB3aGljaCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCB0aGUgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZSBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cywgYW5kIGhvdyB0aGUgZGV2ZWxvcGVycyBoYXZlIHN0cnVjdHVyZWQgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgZGVzaWduIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIGN1c3RvbWl6YXRpb24gb3IgZGVidWdnaW5nLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBtaXggb2YgZ2VuZXJhbCBvcHRpb25zIHJlbGF0ZWQgdG8gUEhZIHBhcmFtZXRlcnMsIHBvd2VyIG1hbmFnZW1lbnQsIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLCBhbmQgcG9zc2libHkgc29tZSBzcGVjaWZpYyBoYXJkd2FyZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRpbmcgb24gdGhlIFJlYWx0ZWsgY2hpcHNldHMgc3VwcG9ydGVkIHdpdGhpbiB0aGlzIEtjb25maWcgc2VjdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGtleSBoZXJl4oCUd2hpY2ggb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgZm9yIGEgZ2l2ZW4gUmVhbHRlay1zcGVjaWZpYyBvcHRpb24gdG8gd29yaz8gSSdtIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgY2VydGFpbiBvcHRpb25zIHdpbGwgYmUgZ3VhcmRlZCBieSBzcGVjaWZpYyBgaWZkZWZgIHN0YXRlbWVudHMgb3IgYHNlbGVjdGAgZGlyZWN0aXZlcywgdG8gc3VwcG9ydCBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHdpbGwgaG9wZWZ1bGx5IHNoZWQgc29tZSBsaWdodCBvbiB0aGUgZGVzaWduIGNob2ljZXMgbWFkZSB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IGFjcm9zcyB2YXJpb3VzIFJlYWx0ZWsgd2lyZWxlc3MgZGV2aWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMTQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIwOjE3LjkwNzI0NTEzN1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAxLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAxOlxcdFxcdGhlbHBcXG4gMjAyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjFDVSBjaGlwc2V0XFxuIDIwMzpcXHRcXG4gMjA0OlxcdFxcdCAgODAyLjExYWMgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAyMDU6XFx0XFxuIDIwNjpcXHRjb25maWcgUlRXODhfODgyMUFVXFxuIDIwNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQVUvODgxMUFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuIDIwODpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAyMDk6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gMjEwOlxcdFxcdHNlbGVjdCBSVFc4OF9VU0JcXG4gMjExOlxcdFxcdHNlbGVjdCBSVFc4OF84ODIxQVxcbiAyMTI6XFx0XFx0aGVscFxcbiAyMTM6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMUFVIGFuZCA4ODExQVUgY2hpcHNldFxcbiAyMTQ6XFx0XFxuIDIxNTpcXHRcXHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMjE2OlxcdFxcbiAyMTc6XFx0Y29uZmlnIFJUVzg4Xzg4MTJBVVxcbiAyMTg6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuIDIxOTpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAyMjA6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gMjIxOlxcdFxcdHNlbGVjdCBSVFc4OF9VU0JcXG4gMjIyOlxcdFxcdHNlbGVjdCBSVFc4OF84ODEyQVxcbiAyMjM6XFx0XFx0aGVscFxcbiAyMjQ6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgxMkFVIGNoaXBzZXRcXG4gMjI1OlxcdFxcbiAyMjY6XFx0XFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDIyNzpcXHRcXG4gMjI4OlxcdGNvbmZpZyBSVFc4OF84ODE0QUVcXG4gMjI5OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MTRBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAyMzA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gMjMxOlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDIzMjpcXHRcXHRzZWxlY3QgUlRXODhfUENJXFxuIDIzMzpcXHRcXHRzZWxlY3QgUlRXODhfODgxNEFcXG4gMjM0OlxcdFxcdGhlbHBcXG4gMjM1OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MTRBRSBjaGlwc2V0XFxuIDIzNjpcXHRcXG4gMjM3OlxcdFxcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMjM4OlxcdFxcbiAyMzk6XFx0Y29uZmlnIFJUVzg4Xzg4MTRBVVxcbiAyNDA6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuIDI0MTpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAyNDI6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gMjQzOlxcdFxcdHNlbGVjdCBSVFc4OF9VU0JcXG4gMjQ0OlxcdFxcdHNlbGVjdCBSVFc4OF84ODE0QVxcbiAyNDU6XFx0XFx0aGVscFxcbiAyNDY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgxNEFVIGNoaXBzZXRcXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDI0OTpcXHRcXG4gMjUwOlxcdGNvbmZpZyBSVFc4OF9ERUJVR1xcbiAyNTE6XFx0XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OCBkZWJ1ZyBzdXBwb3J0XFxcIlxcbiAyNTI6XFx0XFx0ZGVwZW5kcyBvbiBSVFc4OF9DT1JFXFxuIDI1MzpcXHRcXHRoZWxwXFxuIDI1NDpcXHRcXHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0XFxuIDI1NTpcXHRcXG4gMjU2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBzaW1wbGlmeSBkZWJ1ZyBwcm9ibGVtc1xcbiAyNTc6XFx0XFxuIDI1ODpcXHRjb25maWcgUlRXODhfREVCVUdGU1xcbiAyNTk6XFx0XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OCBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuIDI2MDpcXHRcXHRkZXBlbmRzIG9uIFJUVzg4X0NPUkVcXG4gMjYxOlxcdFxcdGhlbHBcXG4gMjYyOlxcdFxcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnRcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIHNpbXBsaWZ5IGRlYnVnIHByb2JsZW1zXFxuIDI2NTpcXHRcXG4gMjY2OlxcdGNvbmZpZyBSVFc4OF9MRURTXFxuIDI2NzpcXHRcXHRib29sXFxuIDI2ODpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuIDI2OTpcXHRcXHRkZWZhdWx0IHlcXG4gMjcwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMDoxNy45MDczMzUwMjdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk5MzY1MTIxMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZvY3VzU3ltYm9scywgRW5hYmxlQ29uZmlncywgYW5kIFdvcnRoRnV6emluZyBmb3IgUlRXODggRHJpdmVyIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBrZXkgcG9pbnRzIGZvciBmdXp6aW5nIHRoZSBSVFc4OCBkcml2ZXIuXG5cbkZpcnN0LCB0aGUgKkZvY3VzU3ltYm9scyouIEkgc2VlIGBydHdfY2hpcF9pbmZvX3NldHVwYCBpcyBhIGNyaXRpY2FsIGV4cG9ydGVkIHN5bWJvbC4gSXQncyB0aGUgb25lIHRoYXQgY2FsbHMgdGhlIHN0YXRpYyBmdW5jdGlvbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAuIE5vdywgYHJ0d191c2JfcHJvYmVgIGNhbGxzIGBydHdfY2hpcF9pbmZvX3NldHVwYCwgYnV0IHRoZXJlIGFyZSBvdGhlciBwcm9iZXMgdG8gY29uc2lkZXIgc3VjaCBhcyBgcnR3X3BjaV9wcm9iZWAsIGFuZCBgcnR3X3NkaW9fcHJvYmVgLiBIb3dldmVyLCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYXBwZWFycyB0byBiZSB0aGUgY2VudHJhbCBlbnRyeSBwb2ludC4gVGhlIGZhY3QgdGhhdCBpdCdzIGBFWFBPUlRfU1lNQk9MYCBtZWFucyBpdCdzICpub3QqIGlubGluZWQsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0LiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaXMgc3RhdGljLCBjYWxsZWQgb25seSBvbmNlIHdpdGhpbiBgcnR3X2NoaXBfaW5mb19zZXR1cGAsIHdoaWNoIGlzIGV4cGVjdGVkLiBTbywgZm9jdXNpbmcgb24gYHJ0d19jaGlwX2luZm9fc2V0dXBgIGFuZCBieSBleHRlbnNpb24sIGBydHdfdXNiX3Byb2JlYCBzZWVtcyBsaWtlIGEgZ29vZCBhcHByb2FjaC5cblxuTmV4dCwgdGhlICpFbmFibGVDb25maWdzKi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQuIFRoZSBsaXN0IHNob3dzIGBSVFc4OGAsIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBzcGVjaWZpYyBjaGlwc2V0cyBsaWtlIGBSVFc4OF84ODIyQlVgLCBgUlRXODhfODgyMkNVYCwgZXRjLiBBbHNvLCBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgZXNzZW50aWFsIGZvciB0aGlzIHRvIHdvcmsuXG5cbkZpbmFsbHksIGlzIHRoaXMgY29kZSAqV29ydGhGdXp6aW5nKj8gTGV0J3MgZ28gdGhyb3VnaCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuXG5cbjEuICBJcyBpdCBqdXN0IGRvY3VtZW50YXRpb24gb3IgS2NvbmZpZyBjaGFuZ2VzPyBObywgaXQncyBtb2RpZnlpbmcgdGhlIGNvcmUgZHJpdmVyIGZpbGU6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AuIFRoaXMgaXMgZ29vZC5cbjIuICBBcmUgdGhlc2UganVzdCBsb2dnaW5nIGNoYW5nZXM/IE5vLCBpdCdzIGFkZGluZyBhIGNhbGwgdG8gYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLCBhbmQgdGhlIGNvZGUgKmludGVyYWN0cyB3aXRoIGZpcm13YXJlIGFuZCBkZXZpY2UgcHJvcGVydGllcyogYW5kLCBpbXBvcnRhbnRseSwgYWx0ZXJzIHRoZSBNQUMgYWRkcmVzcyByZXNvbHV0aW9uIGlmIHRoZSBlZnVzZSBNQUMgaXMgYmFkLlxuMy4gIEFyZSB0aGVzZSBzaW1wbGUgY29uc3RhbnQgY2hhbmdlcz8gTm9wZS5cbjQuICBDYW4gdGhpcyBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBZZXMsIHZpYSBVU0IgZW11bGF0aW9uIHVzaW5nIGR1bW15XFxfaGNkIG9yIFJhdyBHYWRnZXQuXG41LiAgSXMgdGhpcyBzb21lIGVzb3RlcmljIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcj8gTm8sIGl0IHN1cHBvcnRzIFVTQiBkZXZpY2VzLlxuNi4gIEFyZSB0aGVzZSB0ZWFyZG93biBjYWxsYmFja3M/IE5vLlxuXG5UaGVyZWZvcmUsICpXb3J0aEZ1enppbmcqIGlzIGluZGVlZCB0cnVlLCBhbmQgdGhpcyBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGJ1aWxkcyBjbGVhbmx5IGFuZCB0aGVuIEknbGwgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTQ2NCwiT3V0cHV0VG9rZW5zIjoyNzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMTowNy44NDM4NTAwNzVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDMxNTM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODhcIixcbiAgICBcIlJUVzg4X0NPUkVcIixcbiAgICBcIlJUVzg4X1VTQlwiLFxuICAgIFwiUlRXODhfODgyMkJVXCIsXG4gICAgXCJSVFc4OF84ODIyQ1VcIixcbiAgICBcIlJUVzg4Xzg3MjNEVVwiLFxuICAgIFwiUlRXODhfODgyMUNVXCIsXG4gICAgXCJSVFc4OF84ODIxQVVcIixcbiAgICBcIlJUVzg4Xzg4MTJBVVwiLFxuICAgIFwiUlRXODhfODgxNEFVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3X2NoaXBfaW5mb19zZXR1cFwiLFxuICAgIFwicnR3X3VzYl9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQUMgYWRkcmVzcyBzZXR1cCBsb2dpYyBpbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCAoY2FsbGVkIGR1cmluZyBjaGlwIGluZm8gc2V0dXApIHRvIGF0dGVtcHQgZmV0Y2hpbmcgYSBNQUMgYWRkcmVzcyB2aWEgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBnZW5lcmF0aW5nIGEgcmFuZG9tIE1BQyBhZGRyZXNzLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgaW5jbHVkaW5nIGZvciBVU0ItYmFzZWQgcnR3ODggV2lGaSBkZXZpY2VzIHRoYXQgY2FuIGJlIGVtdWxhdGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQvUmF3IEdhZGdldCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF9DT1JFXCIsXG4gICAgXCJSVFc4OF9VU0JcIixcbiAgICBcIlJUVzg4Xzg4MjJCVVwiLFxuICAgIFwiUlRXODhfODgyMkNVXCIsXG4gICAgXCJSVFc4OF84NzIzRFVcIixcbiAgICBcIlJUVzg4Xzg4MjFDVVwiLFxuICAgIFwiUlRXODhfODgyMUFVXCIsXG4gICAgXCJSVFc4OF84ODEyQVVcIixcbiAgICBcIlJUVzg4Xzg4MTRBVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0d19jaGlwX2luZm9fc2V0dXBcIixcbiAgICBcInJ0d191c2JfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUFDIGFkZHJlc3Mgc2V0dXAgbG9naWMgaW4gYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgKGNhbGxlZCBkdXJpbmcgY2hpcCBpbmZvIHNldHVwKSB0byBhdHRlbXB0IGZldGNoaW5nIGEgTUFDIGFkZHJlc3MgdmlhIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gZ2VuZXJhdGluZyBhIHJhbmRvbSBNQUMgYWRkcmVzcy4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGluY2x1ZGluZyBmb3IgVVNCLWJhc2VkIHJ0dzg4IFdpRmkgZGV2aWNlcyB0aGF0IGNhbiBiZSBlbXVsYXRlZCBhbmQgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0L1JhdyBHYWRnZXQgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjE6MDcuOTI0MTc0MzdaIiwiU2VxIjozNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMzMwMDc4Njc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIxOjA3LjkyNDczNzE0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzEzMzAwMjE5ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgIG1vZGlmaWVzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIHNvIHRoYXQgd2hlbiBhbiBpbnZhbGlkIE1BQyBhZGRyZXNzIGlzIHJlYWQgZnJvbSB0aGUgZWZ1c2UsIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdG8gZmV0Y2ggYSB2YWxpZCBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSAvIGZpcm13YXJlIG5vZGUgb3IgTlZNRU0gdXNpbmcgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyKClgLiBCb3RoIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIChvbiBzdWNjZXNzKSBhbmQgYGV0aF9yYW5kb21fYWRkcigpYCAob24gZmFsbGJhY2spIGNvbXBsZXRlbHkgb3ZlcndyaXRlIGFuZCBpbml0aWFsaXplIGFsbCBgRVRIX0FMRU5gIGJ5dGVzIG9mIGBlZnVzZS1cXHUwMDNlYWRkcmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaCBjb25kaXRpb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTQ6MTU6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG5pbmRleCBjZDkyNTQzNzBmY2M3Li4wZjIzNDk4YjVjOTZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG5AQCAtMjA2MCw4ICsyMDYwLDExIEBAIHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuIFx0ZWZ1c2UtXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVx1MDAzZWxuYV90eXBlXzVnIFx1MDAyNiBCSVQoMykgPyAxIDogMDtcbiBcbiBcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cdTAwM2VhZGRyKSkge1xuLVx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4tXHRcdGRldl93YXJuKHJ0d2Rldi1cdTAwM2VkZXYsIFwiZWZ1c2UgTUFDIGludmFsaWQsIHVzaW5nIHJhbmRvbVxcblwiKTtcbitcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbitcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4rXHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdCBcImZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcblwiKTtcbitcdFx0fVxuIFx0fVxuIFxuIG91dF9kaXNhYmxlOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjE6MDcuOTI0NzM4MDFaIiwiU2VxIjozOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQzNTkzMDQ5NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXQgYXBwZWFycyB3ZSdyZSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW52YWxpZCBNQUMgYWRkcmVzc2VzIHJlYWQgZnJvbSB0aGUgZUZ1c2UuIEJlZm9yZSwgaXQgd291bGQgc2ltcGx5IGdlbmVyYXRlIGEgcmFuZG9tIE1BQy4gTm93LCBpdCdzIGF0dGVtcHRpbmcgdG8gb2J0YWluIGEgdmFsaWQgTUFDIGFkZHJlc3MgdXNpbmcgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGJlZm9yZSByZXNvcnRpbmcgdG8gYSByYW5kb20gZ2VuZXJhdGlvbi5cblxuTXkgZmlyc3QgaW1wdWxzZSBpcyB0byBjb25maXJtIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2hhbmdlIGluIHRoZSBmaWxlLiBJIHdhbnQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcuIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIHNlY3Rpb24gb2YgY29kZSBhcm91bmQgbGluZSAyMDYwIGluIHRoYXQgZmlsZS4gSSB0aGluayBJJ2xsIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gcXVpY2tseSBnZXQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCBjbGFyaWZ5IGFueSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgZmFjdG9ycyBhdCBwbGF5IHdpdGggdGhpcyBwYXRjaC4gVGhpcyBhcHByb2FjaCB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgY2hhbmdlJ3MgaW50ZW50IGFuZCBwb3RlbnRpYWwgaW1wYWN0IG1vcmUgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMjowMi4yODQwNDk4NjFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwNDUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIwNDU6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPT0gMHhmZilcXG4yMDQ2OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xcbjIwNDc6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VidF9zZXR0aW5nIFxcdTAwMjYgQklUKDApKVxcbjIwNDg6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXNoYXJlX2FudCA9IHRydWU7XFxuMjA0OTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXJlZ2QgPT0gMHhmZilcXG4yMDUwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZWdkID0gMDtcXG4yMDUxOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9PSAweGZmKVxcbjIwNTI6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPSAwO1xcbjIwNTM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID09IDB4ZmYpXFxuMjA1NDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9IDA7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdGVmdXNlLVxcdTAwM2VidGNvZXggPSAoZWZ1c2UtXFx1MDAzZXJmX2JvYXJkX29wdGlvbiBcXHUwMDI2IDB4ZTApID09IDB4MjA7XFxuMjA1NzpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzJnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfMmcgXFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcXG4yMDU4OlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzJnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzJnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA1OTpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzVnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfNWcgXFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcXG4yMDYwOlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzVnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA2MTpcXHRcXG4yMDYyOlxcdFxcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDYzOlxcdFxcdFxcdGlmIChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cXHUwMDNlZGV2LCBlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDY0OlxcdFxcdFxcdFxcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cXHUwMDNlYWRkcik7XFxuMjA2NTpcXHRcXHRcXHRcXHRkZXZfd2FybihydHdkZXYtXFx1MDAzZWRldixcXG4yMDY2OlxcdFxcdFxcdFxcdFxcdCBcXFwiZmFpbGVkIHRvIGdldCB2YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tXFxcXG5cXFwiKTtcXG4yMDY3OlxcdFxcdFxcdH1cXG4yMDY4OlxcdFxcdH1cXG4yMDY5OlxcdFxcbjIwNzA6XFx0b3V0X2Rpc2FibGU6XFxuMjA3MTpcXHRcXHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XFxuMjA3MjpcXHRcXG4yMDczOlxcdG91dF91bmxvY2s6XFxuMjA3NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnJ0d2Rldi1cXHUwMDNlbXV0ZXgpO1xcbjIwNzU6XFx0XFx0cmV0dXJuIHJldDtcXG4yMDc2OlxcdH1cXG4yMDc3OlxcdFxcbjIwNzg6XFx0c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuMjA3OTpcXHR7XFxuMjA4MDpcXHRcXHRzdHJ1Y3QgcnR3X2hhbCAqaGFsID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlaGFsO1xcbjIwODE6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0d19yZmVfZGVmICpyZmVfZGVmID0gcnR3X2dldF9yZmVfZGVmKHJ0d2Rldik7XFxuMjA4MjpcXHRcXG4yMDgzOlxcdFxcdGlmICghcmZlX2RlZilcXG4yMDg0OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMjowMi4yODQyMjkxNTJaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzcwNDM0NDgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHdpdGggdGhpcyBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24uIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQncyBpbXBsZW1lbnRlZCBhbmQgd2hlcmUgaXQncyB1c2VkLiBTaW5jZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGlzIGNvZGViYXNlLCB0aGUgcXVpY2tlc3Qgd2F5IHRvIGZpbmQgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIGEgZnVuY3Rpb24gbGlrZSB0aGlzIGlzIHRvIHNpbXBseSB1c2UgZ3JlcCB0byBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgb2YgaXQuIFRoYXQncyB1c3VhbGx5IHRoZSBmYXN0ZXN0IHdheSB0byBnZXQgYW4gaW5pdGlhbCBvdmVydmlldyBvZiBpdHMgY29udGV4dC4gQSBzaW1wbGUgZ3JlcCB3aWxsIHRlbGwgbWUgd2hlcmUgaXQncyBkZWZpbmVkLCB3aGVyZSBpdCdzIGNhbGxlZCwgYW5kIHdoYXQga2luZCBvZiBkYXRhIGl0J3Mgb3BlcmF0aW5nIG9uLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgc29tZXRoaW5nIG5ldyB0aGF0IEkgYW0gbG9va2luZyBpbnRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMjowOS45ODg1NzcwNDlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTY5NDk5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oPTM0PWludCBudm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICphZGRyYnVmKTtcXG5pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmg6MzU6aW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICphZGRyKTtcXG5pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgtMzYtaW50IGRldmljZV9nZXRfZXRoZGV2X2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbm5ldC9ldGhlcm5ldC9ldGguYz02MDQ9RVhQT1JUX1NZTUJPTChmd25vZGVfZ2V0X21hY19hZGRyZXNzKTtcXG4tLVxcbm5ldC9ldGhlcm5ldC9ldGguYy02MTAtICovXFxubmV0L2V0aGVybmV0L2V0aC5jOjYxMTppbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpXFxubmV0L2V0aGVybmV0L2V0aC5jLTYxMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIyOjEyLjA0NTUzNzg4NloiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzA1MTcyNTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDIEFkZHJlc3MgUmV0cmlldmFsKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlJ3JlIHB1bGxpbmcgdGhlIE1BQyBhZGRyZXNzIGZyb20gYSBkZXZpY2UsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgcHJvYmFibHkgaGFuZGxlZCBzb21ld2hlcmUgaW4gdGhlIEV0aGVybmV0IGRyaXZlciBjb2RlLCBzbyBteSBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBvdmVyIHRvIGBuZXQvZXRoZXJuZXQvZXRoLmNgLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gdGhlcmUuIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXRzZWxmLCBhbmQgdGhlbiBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSBoYXJkd2FyZS4gSSB3YW50IHRvIHNlZSBob3cgd2UncmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgTklDLCB3aGV0aGVyIHdlJ3JlIHVzaW5nIHJlZ2lzdGVycywgb3IgRE1BLCBhbmQgd2hhdCBhYnN0cmFjdGlvbiBsYXllciBpcyBiZWluZyB1c2VkIHRvIG1ha2UgdGhpcyBoYXBwZW4uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgaW4gaG93IHdlJ3JlIGZldGNoaW5nIHRoZSBhZGRyZXNzLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMjoyNS4wOTcyNjc4NTZaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGhlcm5ldC9ldGguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDU6XFx0XFxuIDYwNjpcXHQvKipcXG4gNjA3OlxcdCAqIGRldmljZV9nZXRfbWFjX2FkZHJlc3MgLSBHZXQgdGhlIE1BQyBmb3IgYSBnaXZlbiBkZXZpY2VcXG4gNjA4OlxcdCAqIEBkZXY6XFx0UG9pbnRlciB0byB0aGUgZGV2aWNlXFxuIDYwOTpcXHQgKiBAYWRkcjpcXHRBZGRyZXNzIG9mIGJ1ZmZlciB0byBzdG9yZSB0aGUgTUFDIGluXFxuIDYxMDpcXHQgKi9cXG4gNjExOlxcdGludCBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgY2hhciAqYWRkcilcXG4gNjEyOlxcdHtcXG4gNjEzOlxcdFxcdGlmICghZndub2RlX2dldF9tYWNfYWRkcmVzcyhkZXZfZndub2RlKGRldiksIGFkZHIpKVxcbiA2MTQ6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDYxNTpcXHRcXG4gNjE2OlxcdFxcdHJldHVybiBudm1lbV9nZXRfbWFjX2FkZHJlc3MoZGV2LCBhZGRyKTtcXG4gNjE3OlxcdH1cXG4gNjE4OlxcdEVYUE9SVF9TWU1CT0woZGV2aWNlX2dldF9tYWNfYWRkcmVzcyk7XFxuIDYxOTpcXHRcXG4gNjIwOlxcdC8qKlxcbiA2MjE6XFx0ICogZGV2aWNlX2dldF9ldGhkZXZfYWRkcmVzcyAtIFNldCBuZXRkZXYncyBNQUMgYWRkcmVzcyBmcm9tIGEgZ2l2ZW4gZGV2aWNlXFxuIDYyMjpcXHQgKiBAZGV2OlxcdFBvaW50ZXIgdG8gdGhlIGRldmljZVxcbiA2MjM6XFx0ICogQG5ldGRldjpcXHRQb2ludGVyIHRvIG5ldGRldiB0byB3cml0ZSB0aGUgYWRkcmVzcyB0b1xcbiA2MjQ6XFx0ICpcXG4gNjI1OlxcdCAqIFdyYXBwZXIgYXJvdW5kIGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKSB3aGljaCB3cml0ZXMgdGhlIGFkZHJlc3NcXG4gNjI2OlxcdCAqIGRpcmVjdGx5IHRvIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIuXFxuIDYyNzpcXHQgKi9cXG4gNjI4OlxcdGludCBkZXZpY2VfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4gNjI5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjI6MjUuMDk3Mzg2OTQ2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNjc5MjgwOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1BQyBBZGRyZXNzIFJldHJpZXZhbCoqXG5cbk9rYXksIHNvIHRoZSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24uLi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGxvZ2ljLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uIHRoZSBzdXJmYWNlLCBidXQgdGhlcmUgYXJlIGFsd2F5cyBudWFuY2VzLiBNeSBwcmltYXJ5IHRob3VnaHQgaXMgdGhhdCBpdCdzIGRlc2lnbmVkIHRvIGZldGNoIHRoZSBNQUMgYWRkcmVzcywgYW5kIGl0J3MgZG9pbmcgc28gd2l0aCBhIHdlbGwtZGVmaW5lZCBmYWxsYmFjayBtZWNoYW5pc20uIEZpcnN0IGl0J3MgdHJ5aW5nIHRoZSBGVyBub2RlIG9yIE5WbWVtIGFuZCwgc2hvdWxkIHRob3NlIGZhaWwsIGl0J3MgYXR0ZW1wdGluZyB0byBvYnRhaW4gYSByYW5kb20gYWRkcmVzcy5cblxuVGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgaXMgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIGBlZnVzZS1cdTAwM2VhZGRyYCBvbiBzdWNjZXNzLCBpbmRpY2F0aW5nIHRoZSByZXRyaWV2ZWQgTUFDIGFkZHJlc3MgaXMgKnBsYWNlZCogaW4gdGhpcyBzdHJ1Y3QgdmFyaWFibGUuIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgemVybyB2YWx1ZSBvbiBzdWNjZXNzLCB3aGljaCB3b3VsZCBjb25maXJtIHRoaXMgd3JpdGUgb3BlcmF0aW9uLiBHaXZlbiB0aGF0LCB0aGUgYGVmdXNlLVx1MDAzZWFkZHJgIGlzIHdoZXJlIHRoZSByZXN1bHQgaXMgZm91bmQsIGFzc3VtaW5nIHRoZSBvcGVyYXRpb24gY29tcGxldGVzIHdpdGhvdXQgYSBuZWdhdGl2ZSB2YWx1ZSByZXR1cm5lZCwgc28gaXQncyBwb3B1bGF0ZWQgd2l0aCBFVEhfQUxFTiBieXRlcy5cblxuTm93LCBJIG5lZWQgdG8gbG9vayBjbG9zZXIgYXQgdGhlIGBzdHJ1Y3QgcnR3X2VmdXNlYC4gSSBzaG91bGQgdW5kZXJzdGFuZCB3aGF0IGBlZnVzZWAgaXMsIGluIHRoaXMgY29udGV4dCwgYW5kIGVuc3VyZSB0aGF0IHRoZSBtZW1vcnkgbGF5b3V0IGlzIHN1aXRhYmxlIGZvciB0aGlzIHR5cGUgb2Ygb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjM6MTguNzc2NjczMDI2WiIsIlNlcSI6NDYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODY5NjczNTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBydHdfZWZ1c2UgXFxcXHtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmg9MTcxMT1zdHJ1Y3QgcnR3X2RtX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmgtMTc5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDoxNzkyOnN0cnVjdCBydHdfZWZ1c2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTE3OTMtXFx0dTMyIHNpemU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIzOjIxLjY0NjM1OTAwMloiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MDM1NTYzMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBydHc4OCBEcml2ZXIncyBNYWluIEhlYWRlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaGAgZmlsZS4gSSdtIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgMTc5Mi4gSSBrbm93IHRoaXMgY29kZSBiYXNlLCBJIGNhbiBwcm9iYWJseSBndWVzcyB3aGF0IGtpbmQgb2YgZGF0YSBzdHJ1Y3R1cmUgb3IgbWFjcm8gZGVmaW5pdGlvbiBJIHNob3VsZCBmaW5kIGF0IHRoYXQgbG9jYXRpb24gYW5kIHdoYXQgaXMgdGhlIGNvbnRleHQuIExldCdzIHNlZSB3aGF0IHJldmVhbHMgaXRzZWxmIGF0IHRoYXQgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEzMSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIzOjI4LjY4MTkyNjE3WiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxNzkwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzkwOlxcdH07XFxuMTc5MTpcXHRcXG4xNzkyOlxcdHN0cnVjdCBydHdfZWZ1c2Uge1xcbjE3OTM6XFx0XFx0dTMyIHNpemU7XFxuMTc5NDpcXHRcXHR1MzIgcGh5c2ljYWxfc2l6ZTtcXG4xNzk1OlxcdFxcdHUzMiBsb2dpY2FsX3NpemU7XFxuMTc5NjpcXHRcXHR1MzIgcHJvdGVjdF9zaXplO1xcbjE3OTc6XFx0XFxuMTc5ODpcXHRcXHR1OCBhZGRyW0VUSF9BTEVOXTtcXG4xNzk5OlxcdFxcdHU4IGNoYW5uZWxfcGxhbjtcXG4xODAwOlxcdFxcdHU4IGNvdW50cnlfY29kZVsyXTtcXG4xODAxOlxcdFxcdHU4IHJmX2JvYXJkX29wdGlvbjtcXG4xODAyOlxcdFxcdHU4IHJmZV9vcHRpb247XFxuMTgwMzpcXHRcXHR1OCBwb3dlcl90cmFja190eXBlO1xcbjE4MDQ6XFx0XFx0dTggdGhlcm1hbF9tZXRlcltSVFdfUkZfUEFUSF9NQVhdO1xcbjE4MDU6XFx0XFx0dTggdGhlcm1hbF9tZXRlcl9rO1xcbjE4MDY6XFx0XFx0dTggY3J5c3RhbF9jYXA7XFxuMTgwNzpcXHRcXHR1OCBhbnRfZGl2X2NmZztcXG4xODA4OlxcdFxcdHU4IGFudF9kaXZfdHlwZTtcXG4xODA5OlxcdFxcdHU4IHJlZ2Q7XFxuMTgxMDpcXHRcXHR1OCBhZmU7XFxuMTgxMTpcXHRcXG4xODEyOlxcdFxcdHU4IGxuYV90eXBlXzJnO1xcbjE4MTM6XFx0XFx0dTggbG5hX3R5cGVfNWc7XFxuMTgxNDpcXHRcXHR1OCBnbG5hX3R5cGU7XFxuMTgxNTpcXHRcXHR1OCBhbG5hX3R5cGU7XFxuMTgxNjpcXHRcXHRib29sIGV4dF9sbmFfMmc7XFxuMTgxNzpcXHRcXHRib29sIGV4dF9sbmFfNWc7XFxuMTgxODpcXHRcXHR1OCBwYV90eXBlXzJnO1xcbjE4MTk6XFx0XFx0dTggcGFfdHlwZV81ZztcXG4xODIwOlxcdFxcdHU4IGdwYV90eXBlO1xcbjE4MjE6XFx0XFx0dTggYXBhX3R5cGU7XFxuMTgyMjpcXHRcXHRib29sIGV4dF9wYV8yZztcXG4xODIzOlxcdFxcdGJvb2wgZXh0X3BhXzVnO1xcbjE4MjQ6XFx0XFx0dTggdHhfYmJfc3dpbmdfc2V0dGluZ18yZztcXG4xODI1OlxcdFxcdHU4IHR4X2JiX3N3aW5nX3NldHRpbmdfNWc7XFxuMTgyNjpcXHRcXG4xODI3OlxcdFxcdGJvb2wgYnRjb2V4O1xcbjE4Mjg6XFx0XFx0LyogYnQgc2hhcmUgYW50ZW5uYSB3aXRoIHdpZmkgKi9cXG4xODI5OlxcdFxcdGJvb2wgc2hhcmVfYW50O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMzoyOC42ODIwNjU3M1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTg3OTMxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBlZnVzZSBJbml0aWFsaXphdGlvbiBpbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBlZnVzZWAgZGF0YSBzdHJ1Y3R1cmUgaXMgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBgZWZ1c2VgIGRhdGEgaXMgYWN0dWFsbHkgKmFsbG9jYXRlZCogYW5kICppbml0aWFsaXplZCouIEFyZSB3ZSBzZWVpbmcgYSBzdGF0aWNhbGx5IGRlZmluZWQgYGVmdXNlYCBzb21ld2hlcmUsIG9yIGlzIGl0IGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8gQXJlIHRoZXJlIGFueSBjb25zdHJ1Y3RvcnMgb3IgaW5pdCBmdW5jdGlvbnMgaW52b2x2ZWQ/IFdoZXJlJ3MgdGhlIHByaW1hcnkgc2V0dXAgaGFwcGVuaW5nLCBhbmQgd2hhdCdzIHRoZSB0eXBpY2FsIHdvcmtmbG93PyBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZmxhc2ggaW50ZXJmYWNlIGlzIHN1cHBvc2VkIHRvIGJlIHdvcmtpbmcsIGFuZCBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgcG9pbnRzIG9mIGZhaWx1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MDQsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIzOjMyLjI2OTk5OTk5M1oiLCJTZXEiOjUwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MjY0NTQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIwMDM9c3RhdGljIHZvaWQgcnR3X2NoaXBfZWZ1c2VfZGlzYWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDA5OnN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjA5Nz1pbnQgcnR3X2NoaXBfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMTA3OlxcdHJldCA9IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTA4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYz0xMDA3PWludCBydHc4OHh4YV9wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jOjEwMTg6XFx0LyogT3ZlcnJpZGUgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMTktXFx0aWYgKGNoaXAtXFx1MDAzZWlkID09IFJUV19DSElQX1RZUEVfODgyMUEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTAyMzpcXHQvKiBPdmVycmlkZSBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAyNC1cXHRpZiAoY2hpcC1cXHUwMDNlaWQgPT0gUlRXX0NISVBfVFlQRV84ODEyQSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjM6MzMuOTQyNjUyOTc5WiIsIlNlcSI6NTEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk2NTk3NjA2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgZnVuY3Rpb24sIGZvY3VzaW5nIG9uIHRoZSBjb250ZXh0IGFuZCBsaWtlbHkgZGVzaWduIGNvbnNpZGVyYXRpb25zLCBhcyBpZiBpdCdzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXBgKipcblxuT2theSwgbGV0J3MgZGlzc2VjdCBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaW4gdGhlIFJlYWx0ZWsgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGF0IGl0IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgLiBUaGUgZmFjdCB0aGF0IGl0J3MgZGVhbGluZyB3aXRoIHRoZSBcImVmdXNlXCIgc3VnZ2VzdHMgaXQncyBhIGNyaXRpY2FsIGVhcmx5LXN0YWdlIGZ1bmN0aW9uLCBsaWtlbHkgaW52b2x2ZWQgaW4gcmV0cmlldmluZyBhbmQgc2V0dGluZyB1cCBpbml0aWFsIGNoaXAgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20gbm9uLXZvbGF0aWxlIG1lbW9yeS4gVGhhdCdzIGEga2V5IHByb2Nlc3MuXG5cbkknZCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZSByZXNwb25zaWJsZSBmb3IgcmVhZGluZyB2aXRhbCBpbmZvcm1hdGlvbiBzdG9yZWQgb24gdGhlIGNoaXAncyBpbnRlcm5hbCBlbGVjdHJvbmljIGZ1c2UsIG9mdGVuIHVzZWQgZm9yIGZhY3RvcnkgY2FsaWJyYXRpb24gZGF0YSwgY2hpcCByZXZpc2lvbiBpbmZvcm1hdGlvbiwgTUFDIGFkZHJlc3NlcywgcmVndWxhdG9yeSBkb21haW4gc2V0dGluZ3MsIGFuZCBwb3NzaWJseSBldmVuIHNvbWUgYmFzaWMgZmlybXdhcmUgY29uZmlndXJhdGlvbiBkZWZhdWx0cy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gYmVnaW5zLlxuXG5JJ20gdGhpbmtpbmcgaXTigJlzIHByb2JhYmx5IHN0cnVjdHVyZWQgdG8gaGFuZGxlIHBvdGVudGlhbCByZWFkIGVycm9ycyBmcm9tIHRoZSBlRnVzZSwgd2l0aCBzb21lIGtpbmQgb2YgZmFsbGJhY2sgb3IgZXJyb3IgaGFuZGxpbmcgaW4gcGxhY2UuIEkgd291bGQgZXhwZWN0IGl0IHRvIGRldGVybWluZSB0aGUgY2hpcCdzIGhhcmR3YXJlIHJldmlzaW9uIGJhc2VkIG9uIHRoZSBlRnVzZSBkYXRhLCBhcyB0aGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yIGZlYXR1cmUgZW5hYmxpbmcgb3IgZGlzYWJsaW5nLiBJdCB3b3VsZCBhbHNvIG5lZWQgdG8gYWRkcmVzcyBwb3NzaWJsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGRpZmZlcmVudCBjaGlwIHJldmlzaW9ucy5cblxuVGhpcyBmdW5jdGlvbiB3b3VsZCBhbG1vc3QgY2VydGFpbmx5IGludGVyYWN0IGNsb3NlbHkgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBEYXRhIHJldHJpZXZlZCBoZXJlIHdpbGwgZGljdGF0ZSB3aGF0IGdldHMgbG9hZGVkIGxhdGVyLCBob3cgdGhlIHBvd2VyIG1hbmFnZW1lbnQgaXMgc3RydWN0dXJlZCwgYW5kIHdoaWNoIHJlZ3VsYXRvcnkgY29uc3RyYWludHMgYXJlIGFwcGxpZWQuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgaXMgdml0YWwgYmVjYXVzZSBhIGNvcnJ1cHRlZCBvciBpbmNvcnJlY3RseSBjb25maWd1cmVkIGVGdXNlIGNhbiBsZWFkIHRvIGNvbXBsZXRlIGZhaWx1cmUgb3Igc2V2ZXJlIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIG9mIHRoZSB3aXJlbGVzcyBpbnRlcmZhY2UuIEknbSBpbWFnaW5pbmcgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGxvd2VyIGxldmVsIGhhcmR3YXJlIGFic3RyYWN0aW9uIHRvIHJlYWQgYml0cyBmcm9tIHRoZSBlRnVzZSBhbmQgdGhlbiB0cmFuc2xhdGVzIHRoZSBkYXRhIHRvIG1vcmUgdXNhYmxlIHZhcmlhYmxlcyB0aGF0IGxhdGVyIGZ1bmN0aW9ucyBtYXkgdXRpbGl6ZS5cblxuTXkgY29uY2VybiBpcyB0aGF0LCB3aGlsZSBlRnVzZSBpcyByZWxpYWJsZSwgZXJyb3JzIGluIHRoZSByZWFkaW5nIHByb2Nlc3MgY2FuIHN0aWxsIGhhcHBlbiwgdGhlcmVmb3JlIEkgd2lsbCBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgZXJyb3IgaGFuZGxpbmcgdG8gYXNzdXJlIHRoZSBjaGlwIHJ1bnMgYXMgaXQgc2hvdWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzU4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjM6NDMuNjAyNDE2MjUxWiIsIlNlcSI6NTIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDA4LFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDA4OlxcdFxcbjIwMDk6XFx0c3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuMjAxMDpcXHR7XFxuMjAxMTpcXHRcXHRzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWVmdXNlO1xcbjIwMTI6XFx0XFx0aW50IHJldDtcXG4yMDEzOlxcdFxcbjIwMTQ6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cnR3ZGV2LVxcdTAwM2VtdXRleCk7XFxuMjAxNTpcXHRcXG4yMDE2OlxcdFxcdC8qIHBvd2VyIG9uIG1hYyB0byByZWFkIGVmdXNlICovXFxuMjAxNzpcXHRcXHRyZXQgPSBydHdfY2hpcF9lZnVzZV9lbmFibGUocnR3ZGV2KTtcXG4yMDE4OlxcdFxcdGlmIChyZXQpXFxuMjAxOTpcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuMjAyMDpcXHRcXG4yMDIxOlxcdFxcdHJldCA9IHJ0d19wYXJzZV9lZnVzZV9tYXAocnR3ZGV2KTtcXG4yMDIyOlxcdFxcdGlmIChyZXQpXFxuMjAyMzpcXHRcXHRcXHRnb3RvIG91dF9kaXNhYmxlO1xcbjIwMjQ6XFx0XFxuMjAyNTpcXHRcXHRyZXQgPSBydHdfZHVtcF9od19mZWF0dXJlKHJ0d2Rldik7XFxuMjAyNjpcXHRcXHRpZiAocmV0KVxcbjIwMjc6XFx0XFx0XFx0Z290byBvdXRfZGlzYWJsZTtcXG4yMDI4OlxcdFxcbjIwMjk6XFx0XFx0cmV0ID0gcnR3X2NoZWNrX3N1cHBvcnRlZF9yZmUocnR3ZGV2KTtcXG4yMDMwOlxcdFxcdGlmIChyZXQpXFxuMjAzMTpcXHRcXHRcXHRnb3RvIG91dF9kaXNhYmxlO1xcbjIwMzI6XFx0XFxuMjAzMzpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZWNyeXN0YWxfY2FwID09IDB4ZmYpXFxuMjAzNDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlY3J5c3RhbF9jYXAgPSAwO1xcbjIwMzU6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VwYV90eXBlXzJnID09IDB4ZmYpXFxuMjAzNjpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlcGFfdHlwZV8yZyA9IDA7XFxuMjAzNzpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXBhX3R5cGVfNWcgPT0gMHhmZilcXG4yMDM4OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VwYV90eXBlXzVnID0gMDtcXG4yMDM5OlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlbG5hX3R5cGVfMmcgPT0gMHhmZilcXG4yMDQwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VsbmFfdHlwZV8yZyA9IDA7XFxuMjA0MTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnID09IDB4ZmYpXFxuMjA0MjpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlbG5hX3R5cGVfNWcgPSAwO1xcbjIwNDM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VjaGFubmVsX3BsYW4gPT0gMHhmZilcXG4yMDQ0OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VjaGFubmVsX3BsYW4gPSAweDdmO1xcbjIwNDU6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPT0gMHhmZilcXG4yMDQ2OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xcbjIwNDc6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VidF9zZXR0aW5nIFxcdTAwMjYgQklUKDApKVxcbjIwNDg6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXNoYXJlX2FudCA9IHRydWU7XFxuMjA0OTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXJlZ2QgPT0gMHhmZilcXG4yMDUwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZWdkID0gMDtcXG4yMDUxOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9PSAweGZmKVxcbjIwNTI6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPSAwO1xcbjIwNTM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID09IDB4ZmYpXFxuMjA1NDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9IDA7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdGVmdXNlLVxcdTAwM2VidGNvZXggPSAoZWZ1c2UtXFx1MDAzZXJmX2JvYXJkX29wdGlvbiBcXHUwMDI2IDB4ZTApID09IDB4MjA7XFxuMjA1NzpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzJnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfMmcgXFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcXG4yMDU4OlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzJnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzJnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA1OTpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzVnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfNWcgXFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcXG4yMDYwOlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzVnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA2MTpcXHRcXG4yMDYyOlxcdFxcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDYzOlxcdFxcdFxcdGlmIChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cXHUwMDNlZGV2LCBlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDY0OlxcdFxcdFxcdFxcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cXHUwMDNlYWRkcik7XFxuMjA2NTpcXHRcXHRcXHRcXHRkZXZfd2FybihydHdkZXYtXFx1MDAzZWRldixcXG4yMDY2OlxcdFxcdFxcdFxcdFxcdCBcXFwiZmFpbGVkIHRvIGdldCB2YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tXFxcXG5cXFwiKTtcXG4yMDY3OlxcdFxcdFxcdH1cXG4yMDY4OlxcdFxcdH1cXG4yMDY5OlxcdFxcbjIwNzA6XFx0b3V0X2Rpc2FibGU6XFxuMjA3MTpcXHRcXHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XFxuMjA3MjpcXHRcXG4yMDczOlxcdG91dF91bmxvY2s6XFxuMjA3NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnJ0d2Rldi1cXHUwMDNlbXV0ZXgpO1xcbjIwNzU6XFx0XFx0cmV0dXJuIHJldDtcXG4yMDc2OlxcdH1cXG4yMDc3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMzo0My42MDI1Njg5MjFaIiwiU2VxIjo1MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI4NTU2NzE2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgU3RydWN0dXJlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBgZWZ1c2UtXHUwMDNlYWRkcmAgYmFjayB0byBpdHMgb3JpZ2luLiBGcm9tIHdoYXQgSSByZWNhbGwsIGBlZnVzZS1cdTAwM2VhZGRyYCBpcyBuZXN0bGVkIHdpdGhpbiBgcnR3ZGV2LVx1MDAzZWVmdXNlYC4gQW5kLCBpZiBteSBtZW1vcnkgaXMgc2VydmluZyBtZSByaWdodCwgYHJ0d2RldmAgaXRzZWxmIGlzIGFuIGludGVncmFsIHBhcnQgb2YgdGhlIGxhcmdlciBgcnR3ZGV2YCBzdHJ1Y3R1cmUuIEkgYmVsaWV2ZSB0aGF0IHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQsIHR5cGljYWxseSB0aHJvdWdoIGBremFsbG9jYCwgYGFsbG9jX2V0aGVyZGV2YCwgb3IgcGVyaGFwcyBldmVuIHNvbWV0aGluZyBsaWtlIGBpZWVlODAyMTFfYWxsb2NfaHdgIGRlcGVuZGluZyBvbiB0aGUgZXhhY3QgY29udGV4dC5cblxuU28sIHRoZSBjcnVjaWFsIG5leHQgc3RlcCBpcyBwaW5wb2ludGluZyBwcmVjaXNlbHkgKndoZXJlKiB0aGUgYHN0cnVjdCBydHdfZGV2YCBpcyBhbGxvY2F0ZWQgd2l0aGluIHRoaXMgY29kZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbGlmZWN5Y2xlIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvZiBgZWZ1c2UtXHUwMDNlYWRkcmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MzcsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjA2LjQ1ODI0NDEzNFoiLCJTZXEiOjU0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzOTU2NjA3MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3X2NvcmVfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyNDowOC4wOTc4MTkxODdaIiwiU2VxIjo1NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Nzc5MzAxMTk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIHlvdXIgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKlRyYWNpbmcgdGhlIENvcmUgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGBydHdfY29yZWAgc3R1ZmYgaXMgaW5pdGlhbGl6ZWQuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGxvY2F0ZSBlaXRoZXIgdGhlIGBydHdfY29yZV9pbml0YCBmdW5jdGlvbiBpdHNlbGYsIG9yIGZhaWxpbmcgdGhhdCwgSSdsbCB0cnkgdG8gZmluZCB3aGVyZSB0aGUgYHJ0d19kZXZgIHZhcmlhYmxlIGlzIGJlaW5nIGFsbG9jYXRlZC4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIOKAkyB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMgY3J1Y2lhbCBmb3IgZGVlcGVyIGFuYWx5c2lzLiBJJ2xsIHN0YXJ0IHdpdGggdGhvc2UgdHdvIGVudHJ5IHBvaW50cyBhbmQgc2VlIHdoZXJlIHRoZSB0cmFpbCBsZWFkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgyNCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjE1Ljg5MDgzNDMwOFoiLCJTZXEiOjU2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4OTk5MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3X2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNjY9c3RydWN0IHJ0d193YXRjaF9kb2dfaXRlcl9kYXRhIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjc6XFx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjgtXFx0c3RydWN0IHJ0d192aWYgKnJ0d3ZpZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzE6c3RhdGljIHZvaWQgcnR3X2R5bmFtaWNfY3NpX3JhdGUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0d192aWYgKnJ0d3ZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTg5PXN0YXRpYyB2b2lkIHJ0d192aWZfd2F0Y2hfZG9nX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDY6c3RhdGljIHZvaWQgcnR3X3N3X2JlYWNvbl9sb3NzX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0d192aWYgKnJ0d3ZpZiwgaW50IHJlY2VpdmVkX2JlYWNvbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMjQ9c3RhdGljIHZvaWQgcnR3X3dhdGNoX2RvZ193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMjUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIyNjpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHdfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyNy1cXHRcXHRcXHRcXHRcXHQgICAgICB3YXRjaF9kb2dfd29yay53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTMxMj1zdGF0aWMgdm9pZCBydHdfYzJoX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMxMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzE0OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsIGMyaF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zMTUtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKnRtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTMyND1zdGF0aWMgdm9pZCBydHdfaXBzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMyNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzI2OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsIGlwc193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zMjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0zMzQ9c3RhdGljIHZvaWQgcnR3X3N0YV9yY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMzNy1cXHRcXHRcXHRcXHRcXHQgICAgICAgcmNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzM4OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBzaS1cXHUwMDNlcnR3ZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTM0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzozNDU6aW50IHJ0d19zdGFfYWRkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMzQ2LVxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzgwOnZvaWQgcnR3X3N0YV9yZW1vdmUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zODEtXFx0XFx0ICAgIGJvb2wgZndfZXhpc3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz00MDQ9c3RydWN0IHJ0d19md2NkX2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NDExOnN0YXRpYyBpbnQgcnR3X2Z3Y2RfcHJlcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQxMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NDM2OnN0YXRpYyB1OCAqcnR3X2Z3Y2RfbmV4dChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgaXRlbSwgdTMyIHNpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNDM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo0NjM6c3RhdGljIHZvaWQgcnR3X2Z3Y2RfZHVtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NDc3OnN0YXRpYyB2b2lkIHJ0d19md2NkX2ZyZWUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBmcmVlX3NlbGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNDc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo0OTA6c3RhdGljIGludCBydHdfZndfZHVtcF9jcmFzaF9sb2coc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00OTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjUyMDppbnQgcnR3X2R1bXBfZncoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3QgdTMyIG9jcF9zcmMsIHUzMiBzaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTUyMS1cXHRcXHR1MzIgZndjZF9pdGVtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NTU5PUVYUE9SVF9TWU1CT0wocnR3X2R1bXBfZncpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTU2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo1NjE6aW50IHJ0d19kdW1wX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCB1MzIgYWRkciwgY29uc3QgdTMyIHNpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTU5OT1zdGF0aWMgdm9pZCBydHdfcmVzZXRfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjYwNTpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MDYtXFx0c3RydWN0IHJ0d19zZWNfZGVzYyAqc2VjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlc2VjO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NjExPXN0YXRpYyB2b2lkIHJ0d19yZXNldF9zdGFfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYxMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NjEzOlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSAoc3RydWN0IHJ0d19kZXYgKilkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTYyMj1zdGF0aWMgdm9pZCBydHdfcmVzZXRfdmlmX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjYyNDpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MjUtXFx0c3RydWN0IHJ0d192aWYgKnJ0d3ZpZiA9IChzdHJ1Y3QgcnR3X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NjM0OnZvaWQgcnR3X2Z3X3JlY292ZXJ5KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTYzOT1FWFBPUlRfU1lNQk9MKHJ0d19md19yZWNvdmVyeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjY0MTpzdGF0aWMgdm9pZCBfX2Z3X3JlY292ZXJ5X3dvcmsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9Njc0PXN0YXRpYyB2b2lkIHJ0d19md19yZWNvdmVyeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjY3NjpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHdfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTY3Ny1cXHRcXHRcXHRcXHRcXHQgICAgICBmd19yZWNvdmVyeV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTcxMj1zdGF0aWMgdm9pZCBydHdfdHhxX2JhX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTcxMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NzE0OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsIGJhX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTcxNS1cXHRzdHJ1Y3QgcnR3X3R4cV9iYV9pdGVyX2RhdGEgZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTczMT1FWFBPUlRfU1lNQk9MKHJ0d19zZXRfcnhfZnJlcV9iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NzMzOnZvaWQgcnR3X3NldF9kdGltX3BlcmlvZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBkdGltX3BlcmlvZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNzM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjczOTp2b2lkIHJ0d191cGRhdGVfY2hhbm5lbChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBjZW50ZXJfY2hhbm5lbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03NDAtXFx0XFx0XFx0dTggcHJpbWFyeV9jaGFubmVsLCBlbnVtIHJ0d19zdXBwb3J0ZWRfYmFuZCBiYW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9ODIyPXZvaWQgcnR3X2dldF9jaGFubmVsX3BhcmFtcyhzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy04NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6ODcxOnZvaWQgcnR3X3NldF9jaGFubmVsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtODcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MTU6dm9pZCBydHdfY2hpcF9wcmVwYXJlX3R4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MjU6c3RhdGljIHZvaWQgcnR3X3ZpZl93cml0ZV9hZGRyKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBzdGFydCwgdTggKmFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MzM6dm9pZCBydHdfdmlmX3BvcnRfY29uZmlnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTM0LVxcdFxcdFxcdCBzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9OTY0PXN0YXRpYyB1OCBod19id19jYXBfdG9fYml0YW1wKHU4IGJ3X2NhcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTk4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5ODQ6c3RhdGljIHZvaWQgcnR3X2h3X2NvbmZpZ19yZl9hbnRfbnVtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IGh3X2FudF9udW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTExNTk9c3RhdGljIHU2NCBydHdfcmF0ZV9tYXNrX3JlY292ZXIodTY0IHJhX21hc2ssIHU2NCByYV9tYXNrX2JhaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTExNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTE3MDpzdGF0aWMgdTY0IHJ0d19yYXRlX21hc2tfY2ZnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBydHdfc3RhX2luZm8gKnNpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTExNzEtXFx0XFx0XFx0ICAgICB1NjQgcmFfbWFzaywgYm9vbCBpc192aHRfZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTIxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxMjEyOnZvaWQgcnR3X3VwZGF0ZV9zdGFfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3X3N0YV9pbmZvICpzaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMjEzLVxcdFxcdFxcdCBib29sIHJlc2V0X3JhX21hc2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzMzI6aW50IHJ0d193YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTEzNTI9RVhQT1JUX1NZTUJPTChydHdfd2FpdF9maXJtd2FyZV9jb21wbGV0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzNTQ6c3RhdGljIGVudW0gcnR3X2xwc19kZWVwX21vZGUgcnR3X3VwZGF0ZV9scHNfZGVlcF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM1NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHJ0d19md19zdGF0ZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzNzQ6aW50IHJ0d19wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTEzNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTQ0Mz1FWFBPUlRfU1lNQk9MKHJ0d19wb3dlcl9vbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQ0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNDQ1OnZvaWQgcnR3X2NvcmVfZndfc2Nhbl9ub3RpZnkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBzdGFydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTQ2MTp2b2lkIHJ0d19jb3JlX3NjYW5fc3RhcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0d192aWYgKnJ0d3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDYyLVxcdFxcdFxcdCBjb25zdCB1OCAqbWFjX2FkZHIsIGJvb2wgaHdfc2NhbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTQ5MDp2b2lkIHJ0d19jb3JlX3NjYW5fY29tcGxldGUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDkxLVxcdFxcdFxcdCAgICBib29sIGh3X3NjYW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE1MTU6aW50IHJ0d19jb3JlX3N0YXJ0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTUxNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE1Mzk6dm9pZCBydHdfcG93ZXJfb2ZmKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNTQ1PUVYUE9SVF9TWU1CT0wocnR3X3Bvd2VyX29mZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNTQ3OnZvaWQgcnR3X2NvcmVfc3RvcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE1NDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNTczOnN0YXRpYyB2b2lkIHJ0d19pbml0X2h0X2NhcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE1NzQtXFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhX2h0X2NhcCAqaHRfY2FwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTYwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjA1OnN0YXRpYyB2b2lkIHJ0d19pbml0X3ZodF9jYXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjA2LVxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE2NDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTY0OTpzdGF0aWMgdTE2IHJ0d19nZXRfbWF4X3NjYW5faWVfbGVuKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTY1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNjY0PXN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjY1OnJ0d19zYmFuZF9kdXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjY2LVxcdCAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTY5MT1zdGF0aWMgdm9pZCBydHdfc2V0X3N1cHBvcnRlZF9iYW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTY5NC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjk1OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjk2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTcyMz1zdGF0aWMgdm9pZCBydHdfdmlmX3NtcHNfaXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTcyNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTcyNjpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzI3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTczNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzM3OnZvaWQgcnR3X3NldF90eHJ4XzFzcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIHR4cnhfMXNzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzU0OnN0YXRpYyB2b2lkIF9fdXBkYXRlX2Zpcm13YXJlX2ZlYXR1cmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzU1LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzY5OnN0YXRpYyB2b2lkIF9fdXBkYXRlX2Zpcm13YXJlX2luZm8oc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzcwLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzgzOnN0YXRpYyB2b2lkIF9fdXBkYXRlX2Zpcm13YXJlX2luZm9fbGVnYWN5KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc4NC1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzk1OnN0YXRpYyB2b2lkIHVwZGF0ZV9maXJtd2FyZV9pbmZvKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc5Ni1cXHRcXHRcXHRcXHQgc3RydWN0IHJ0d19md19zdGF0ZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xODA0PXN0YXRpYyB2b2lkIHJ0d19sb2FkX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODA2LVxcdHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3ID0gY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxODA3OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBmdy1cXHUwMDNlcnR3ZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE4MDgtXFx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IHJ0d2Rldi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTgyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxODMwOnN0YXRpYyBpbnQgcnR3X2xvYWRfZmlybXdhcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgZW51bSBydHdfZndfdHlwZSB0eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE4MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTg2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxODY2OnN0YXRpYyBpbnQgcnR3X2NoaXBfcGFyYW1ldGVyX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTg2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE5MTk6c3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9lbmFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE5NTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTk2MDpzdGF0aWMgaW50IHJ0d19kdW1wX2h3X2ZlYXR1cmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjAwMzpzdGF0aWMgdm9pZCBydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwMDk6c3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAxMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwNzg6c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwOTc6aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIxMjQ9RVhQT1JUX1NZTUJPTChydHdfY2hpcF9pbmZvX3NldHVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIxMjY6c3RhdGljIHZvaWQgcnR3X3N0YXRzX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjE0MTppbnQgcnR3X2NvcmVfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjIyMj1FWFBPUlRfU1lNQk9MKHJ0d19jb3JlX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjIyNDp2b2lkIHJ0d19jb3JlX2RlaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjI1Nj1FWFBPUlRfU1lNQk9MKHJ0d19jb3JlX2RlaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMjU4OmludCBydHdfcmVnaXN0ZXJfaHcoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjI1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMzUxPUVYUE9SVF9TWU1CT0wocnR3X3JlZ2lzdGVyX2h3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMzUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzNTM6dm9pZCBydHdfdW5yZWdpc3Rlcl9odyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMzU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzNjE9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjM2Mjp2b2lkIHJ0d19zd2FwX3JlZ19uYnl0ZXMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3Qgc3RydWN0IHJ0d19od19yZWcgKnJlZzEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjM2My1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHJ0d19od19yZWcgKnJlZzIsIHU4IG5ieXRlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzNzY9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjM3Nzp2b2lkIHJ0d19zd2FwX3JlZ19tYXNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGNvbnN0IHN0cnVjdCBydHdfaHdfcmVnICpyZWcxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzNzgtXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydHdfaHdfcmVnICpyZWcyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjM4OD1zdHJ1Y3QgcnR3X2l0ZXJfcG9ydF9zd2l0Y2hfZGF0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjM4OTpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzOTAtXFx0c3RydWN0IHJ0d192aWYgKnJ0d3ZpZl9hcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzOTM9c3RhdGljIHZvaWQgcnR3X3BvcnRfc3dpdGNoX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzOTUtXFx0c3RydWN0IHJ0d19pdGVyX3BvcnRfc3dpdGNoX2RhdGEgKml0ZXJfZGF0YSA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjM5NjpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gaXRlcl9kYXRhLVxcdTAwM2VydHdkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjM5Ny1cXHRzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmX3RhcmdldCA9IChzdHJ1Y3QgcnR3X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjI0MzI6dm9pZCBydHdfY29yZV9wb3J0X3N3aXRjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjQ0NT1zdGF0aWMgdm9pZCBydHdfY2hlY2tfc3RhX2FjdGl2ZV9pdGVyKHZvaWQgKmRhdGEsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjI0NjA6Ym9vbCBydHdfY29yZV9jaGVja19zdGFfYWN0aXZlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjQ2MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjI0Njk6dm9pZCBydHdfY29yZV9lbmFibGVfYmVhY29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjQ4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyNDgzOnZvaWQgcnR3X3NldF9hbXBkdV9mYWN0b3Ioc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDg0LVxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjE1LjkzODc0MDIxNFoiLCJTZXEiOjU3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODAyOTk5ODQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQyBBZGRyZXNzIEluaXRpYWxpemF0aW9uIGluIHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2UuIEluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgLCBpdCdzIGNsZWFyIHRoZSBwcmltYXJ5IGdvYWwgaXMgdG8gZW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBNQUMgYWRkcmVzcy4gVGhlIGNvcmUgbG9naWMgaGluZ2VzIG9uIGBlZnVzZS1cdTAwM2VhZGRyYC4gIFByZXZpb3VzbHksIGlmIGBlZnVzZS1cdTAwM2VhZGRyYCB3YXMgZGVlbWVkIGludmFsaWQgYmFzZWQgb24gYGlzX3ZhbGlkX2V0aGVyX2FkZHIoKWAsIGEgcmFuZG9tIE1BQyBhZGRyZXNzIHdhcyBpbW1lZGlhdGVseSBnZW5lcmF0ZWQgYW5kIGFzc2lnbmVkLiBUaGF0J3MgdGhlIGJhc2VsaW5lLlxuXG5Ob3csIGhvd2V2ZXIsIGJlZm9yZSByZXNvcnRpbmcgdG8gYSByYW5kb20gTUFDLCBpdCdzIGNoZWNraW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cdTAwM2VkZXYsIGVmdXNlLVx1MDAzZWFkZHIpYC4gIEVzc2VudGlhbGx5LCB0aGUgY29kZSBpcyBzYXlpbmcsIFwiTGV0J3MgKnRyeSogdG8gZ2V0IGEgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIGl0c2VsZiBiZWZvcmUgcmFuZG9tbHkgZ2VuZXJhdGluZyBvbmUuXCIgIElmIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIHN1Y2NlZWRzIChyZXR1cm5zIDApLCB0aGUgYXNzdW1wdGlvbiBpcyBpdCBwb3B1bGF0ZXMgYGVmdXNlLVx1MDAzZWFkZHJgIHdpdGggYSB2YWxpZCBNQUMuIElmIGl0IGZhaWxzIChyZXR1cm5zIG5vbi16ZXJvKSwgKnRoZW4qIHRoZSByYW5kb20gTUFDIGdlbmVyYXRpb24gaXMgdHJpZ2dlcmVkIHZpYSBgZXRoX3JhbmRvbV9hZGRyKClgLiBUaGlzIGlzIGdvb2QsIGl0IGFsbG93cyB0aGUgZGV2aWNlIHRvIGhhdmUgcHJlZmVyZW5jZSBpbiBwcm92aWRpbmcgYSB2YWxpZCBNQUMsIGFzIGl0IHNob3VsZC5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIHdoYXQgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGFjdHVhbGx5IGRvZXMuICBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IGlmIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCAqYWx3YXlzKiB3cml0ZXMgYSBNQUMgdG8gYGVmdXNlLVx1MDAzZWFkZHJgIG9uIHN1Y2Nlc3MsIG9yIGlmIGl0IGNhbiBwb3RlbnRpYWxseSBsZWF2ZSBpdCB1bmluaXRpYWxpemVkIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gTXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBmd25vZGVfZ2V0X21hY19hZGRyZXNzYCBhbmQgYG52bWVtX2dldF9tYWNfYWRkcmVzc2AsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBNQUMgYWRkcmVzcyByZWFkaW5nIHByb2Nlc3MuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIHZhbGlkYXRpb24gb2YgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTk2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjQzLjk2ODc0MzAwM1oiLCJTZXEiOjU4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxODE5MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZndub2RlX2dldF9tYWNfYWRkcmVzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZXRoZXJuZXQvZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aGVybmV0L2V0aC5jPTU1OT1zdGF0aWMgaW50IGZ3bm9kZV9nZXRfbWFjX2FkZHIoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4tLVxcbm5ldC9ldGhlcm5ldC9ldGguYy01NzMtLyoqXFxubmV0L2V0aGVybmV0L2V0aC5jOjU3NDogKiBmd25vZGVfZ2V0X21hY19hZGRyZXNzIC0gR2V0IHRoZSBNQUMgZnJvbSB0aGUgZmlybXdhcmUgbm9kZVxcbm5ldC9ldGhlcm5ldC9ldGguYy01NzUtICogQGZ3bm9kZTpcXHRQb2ludGVyIHRvIHRoZSBmaXJtd2FyZSBub2RlXFxuLS1cXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTk0LSAqL1xcbm5ldC9ldGhlcm5ldC9ldGguYzo1OTU6aW50IGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwgY2hhciAqYWRkcilcXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTk2LXtcXG4tLVxcbm5ldC9ldGhlcm5ldC9ldGguYy02MDMtfVxcbm5ldC9ldGhlcm5ldC9ldGguYzo2MDQ6RVhQT1JUX1NZTUJPTChmd25vZGVfZ2V0X21hY19hZGRyZXNzKTtcXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjA1LVxcbi0tXFxubmV0L2V0aGVybmV0L2V0aC5jPTYxMT1pbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpXFxubmV0L2V0aGVybmV0L2V0aC5jLTYxMi17XFxubmV0L2V0aGVybmV0L2V0aC5jOjYxMzpcXHRpZiAoIWZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MoZGV2X2Z3bm9kZShkZXYpLCBhZGRyKSlcXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjE0LVxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyNDo0NC4wMTY5MzIwNloiLCJTZXEiOjU5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNzY3Nzc1MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHNwZWNpZmljIHNlY3Rpb24gb2YgdGhlIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGxpbmVzIDU1OSB0aHJvdWdoIDYwNCBpbiBgbmV0L2V0aGVybmV0L2V0aC5jYC4gTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoaXMgYmxvY2sgbGlrZWx5IGRlYWxzIHdpdGggYSBjcml0aWNhbCBhc3BlY3Qgb2YgRXRoZXJuZXQgb3BlcmF0aW9uLiBJJ20gZ3Vlc3NpbmcgaXQgbWlnaHQgYmUgcmVsYXRlZCB0byBmcmFtZSB0cmFuc21pc3Npb24sIHJlY2VwdGlvbiBoYW5kbGluZywgb3IgcGVyaGFwcyBzb21lIGxvdy1sZXZlbCBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gS25vd2luZyB0aGUgbnVhbmNlcyBvZiBFdGhlcm5ldCBpcyBzZWNvbmQgbmF0dXJlIGF0IHRoaXMgcG9pbnQsIHNvIEknbSBleHBlY3RpbmcgdGhpcyBzZWdtZW50IHRvIGJlIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHRvIHBhcnNlLCBldmVuIHdpdGhvdXQgY29udGV4dC4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gdW5lYXJ0aCBhbmQgd2hhdCBzcGVjaWZpYyBvcGVyYXRpb24gb2YgdGhlIEV0aGVybmV0IGNhcmQgaXQgaXMgcmVsYXRlZCB0by5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNjMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyNDo0Ny43ODQ3MTE1OFoiLCJTZXEiOjYwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvZXRoZXJuZXQvZXRoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTU5LFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTU5OlxcdHN0YXRpYyBpbnQgZndub2RlX2dldF9tYWNfYWRkcihzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbiA1NjA6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKmFkZHIpXFxuIDU2MTpcXHR7XFxuIDU2MjpcXHRcXHRpbnQgcmV0O1xcbiA1NjM6XFx0XFxuIDU2NDpcXHRcXHRyZXQgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91OF9hcnJheShmd25vZGUsIG5hbWUsIGFkZHIsIEVUSF9BTEVOKTtcXG4gNTY1OlxcdFxcdGlmIChyZXQpXFxuIDU2NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1Njc6XFx0XFxuIDU2ODpcXHRcXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoYWRkcikpXFxuIDU2OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTcwOlxcdFxcdHJldHVybiAwO1xcbiA1NzE6XFx0fVxcbiA1NzI6XFx0XFxuIDU3MzpcXHQvKipcXG4gNTc0OlxcdCAqIGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MgLSBHZXQgdGhlIE1BQyBmcm9tIHRoZSBmaXJtd2FyZSBub2RlXFxuIDU3NTpcXHQgKiBAZndub2RlOlxcdFBvaW50ZXIgdG8gdGhlIGZpcm13YXJlIG5vZGVcXG4gNTc2OlxcdCAqIEBhZGRyOlxcdEFkZHJlc3Mgb2YgYnVmZmVyIHRvIHN0b3JlIHRoZSBNQUMgaW5cXG4gNTc3OlxcdCAqXFxuIDU3ODpcXHQgKiBTZWFyY2ggdGhlIGZpcm13YXJlIG5vZGUgZm9yIHRoZSBiZXN0IE1BQyBhZGRyZXNzIHRvIHVzZS4gICdtYWMtYWRkcmVzcycgaXNcXG4gNTc5OlxcdCAqIGNoZWNrZWQgZmlyc3QsIGJlY2F1c2UgdGhhdCBpcyBzdXBwb3NlZCB0byBjb250YWluIHRvIFxcXCJtb3N0IHJlY2VudFxcXCIgTUFDXFxuIDU4MDpcXHQgKiBhZGRyZXNzLiBJZiB0aGF0IGlzbid0IHNldCwgdGhlbiAnbG9jYWwtbWFjLWFkZHJlc3MnIGlzIGNoZWNrZWQgbmV4dCxcXG4gNTgxOlxcdCAqIGJlY2F1c2UgdGhhdCBpcyB0aGUgZGVmYXVsdCBhZGRyZXNzLiAgSWYgdGhhdCBpc24ndCBzZXQsIHRoZW4gdGhlIG9ic29sZXRlXFxuIDU4MjpcXHQgKiAnYWRkcmVzcycgaXMgY2hlY2tlZCwganVzdCBpbiBjYXNlIHdlJ3JlIHVzaW5nIGFuIG9sZCBkZXZpY2UgdHJlZS5cXG4gNTgzOlxcdCAqXFxuIDU4NDpcXHQgKiBOb3RlIHRoYXQgdGhlICdhZGRyZXNzJyBwcm9wZXJ0eSBpcyBzdXBwb3NlZCB0byBjb250YWluIGEgdmlydHVhbCBhZGRyZXNzIG9mXFxuIDU4NTpcXHQgKiB0aGUgcmVnaXN0ZXIgc2V0LCBidXQgc29tZSBEVFMgZmlsZXMgaGF2ZSByZWRlZmluZWQgdGhhdCBwcm9wZXJ0eSB0byBiZSB0aGVcXG4gNTg2OlxcdCAqIE1BQyBhZGRyZXNzLlxcbiA1ODc6XFx0ICpcXG4gNTg4OlxcdCAqIEFsbC16ZXJvIE1BQyBhZGRyZXNzZXMgYXJlIHJlamVjdGVkLCBiZWNhdXNlIHRob3NlIGNvdWxkIGJlIHByb3BlcnRpZXMgdGhhdFxcbiA1ODk6XFx0ICogZXhpc3QgaW4gdGhlIGZpcm13YXJlIHRhYmxlcywgYnV0IHdlcmUgbm90IHVwZGF0ZWQgYnkgdGhlIGZpcm13YXJlLiAgRm9yXFxuIDU5MDpcXHQgKiBleGFtcGxlLCB0aGUgRFRTIGNvdWxkIGRlZmluZSAnbWFjLWFkZHJlc3MnIGFuZCAnbG9jYWwtbWFjLWFkZHJlc3MnLCB3aXRoXFxuIDU5MTpcXHQgKiB6ZXJvIE1BQyBhZGRyZXNzZXMuICBTb21lIG9sZGVyIFUtQm9vdHMgb25seSBpbml0aWFsaXplZCAnbG9jYWwtbWFjLWFkZHJlc3MnLlxcbiA1OTI6XFx0ICogSW4gdGhpcyBjYXNlLCB0aGUgcmVhbCBNQUMgaXMgaW4gJ2xvY2FsLW1hYy1hZGRyZXNzJywgYW5kICdtYWMtYWRkcmVzcydcXG4gNTkzOlxcdCAqIGV4aXN0cyBidXQgaXMgYWxsIHplcm9zLlxcbiA1OTQ6XFx0ICovXFxuIDU5NTpcXHRpbnQgZndub2RlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLCBjaGFyICphZGRyKVxcbiA1OTY6XFx0e1xcbiA1OTc6XFx0XFx0aWYgKCFmd25vZGVfZ2V0X21hY19hZGRyKGZ3bm9kZSwgXFxcIm1hYy1hZGRyZXNzXFxcIiwgYWRkcikgfHxcXG4gNTk4OlxcdFxcdCAgICAhZndub2RlX2dldF9tYWNfYWRkcihmd25vZGUsIFxcXCJsb2NhbC1tYWMtYWRkcmVzc1xcXCIsIGFkZHIpIHx8XFxuIDU5OTpcXHRcXHQgICAgIWZ3bm9kZV9nZXRfbWFjX2FkZHIoZndub2RlLCBcXFwiYWRkcmVzc1xcXCIsIGFkZHIpKVxcbiA2MDA6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDYwMTpcXHRcXG4gNjAyOlxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiA2MDM6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyNDo0Ny43ODQ4MDUwMVoiLCJTZXEiOjYxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzg0OTgyNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIE1BQyBBZGRyZXNzIFJldHJpZXZhbCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGUgTUFDIGFkZHJlc3MgcmV0cmlldmFsIHByb2Nlc3MsIGFuZCBJIHRoaW5rIHdlIG1pZ2h0IGhhdmUgbWlzc2VkIGEgc3BvdC4gTXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgd2Ugc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYG52bWVtX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24gYXMgd2VsbC4gV2Uga25vdyB0aGUgZ2VuZXJhbCBmbG93LCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHdlIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgZGV0YWlscyBzcGVjaWZpYyB0byB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlvbi4gSXQncyBwb3NzaWJsZSB0aGVyZSBhcmUgc3VidGxlIGRpZmZlcmVuY2VzIG9yIGVkZ2UgY2FzZXMgcmVsYXRlZCB0byBub24tdm9sYXRpbGUgbWVtb3J5IHRoYXQgd2UgbmVlZCB0byBhY2NvdW50IGZvci4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgcGFydCBvZiB0aGUgcHJvY2VzcyBpcyBzb2xpZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxOTksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjUxLjE2OTc5MDM2N1oiLCJTZXEiOjYyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5MTA2MTYxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgbnZtZW1fZ2V0X21hY19hZGRyZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaD0zMz11bnNpZ25lZCBjaGFyICphcmNoX2dldF9wbGF0Zm9ybV9tYWNfYWRkcmVzcyh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmg6MzQ6aW50IG52bWVtX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHJidWYpO1xcbmluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaC0zNS1pbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpO1xcbi0tXFxubmV0L2V0aGVybmV0L2V0aC5jPTUyMT1FWFBPUlRfU1lNQk9MKHBsYXRmb3JtX2dldF9ldGhkZXZfYWRkcmVzcyk7XFxuLS1cXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTMxLSAqL1xcbm5ldC9ldGhlcm5ldC9ldGguYzo1MzI6aW50IG52bWVtX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHJidWYpXFxubmV0L2V0aGVybmV0L2V0aC5jLTUzMy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjUzLjA2MDg3MDQ4MVoiLCJTZXEiOjYzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTAzOTU0MDgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDIEFkZHJlc3MgUmV0cmlldmFsKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgbnZtZW1fZ2V0X21hY19hZGRyZXNzYCBmdW5jdGlvbiBhY3R1YWxseSB3b3Jrcy4gVGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0J3Mgc2VlIGhvdyBpdCdzIHdyaXR0ZW4gYW5kIHdoYXQncyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGluZ3MgbGlrZSBlcnJvciBoYW5kbGluZywgYW55IHBsYXRmb3JtLXNwZWNpZmljIHF1aXJrcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgbm9uLXZvbGF0aWxlIG1lbW9yeSBpdHNlbGYuIEFyZSB0aGV5IHVzaW5nIGEgc3RhbmRhcmQgTlZNRU0gaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgY3VzdG9tPyBXaGF0IGFib3V0IGF0b21pY2l0eSDigJMgaXMgdGhlIHJlYWQgb3BlcmF0aW9uIHRocmVhZC1zYWZlLCBvciBhcmUgdGhleSByZWx5aW5nIG9uIHNvbWUgaGlnaGVyLWxldmVsIHN5bmNocm9uaXphdGlvbj8gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGFyZWFzIHdoZXJlIGEgcG93ZXIgZmFpbHVyZSBjb3VsZCBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQgc3RhdGUuIEhvcGVmdWxseSwgaXQncyB3ZWxsLWRvY3VtZW50ZWQuLi4gYnV0IEknbSBwcmVwYXJlZCBmb3IgYW55dGhpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTc2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjU6MjQuMTAwNDE1MzU1WiIsIlNlcSI6NjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGhlcm5ldC9ldGguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MzAsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MzA6XFx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cXG4gNTMxOlxcdCAqL1xcbiA1MzI6XFx0aW50IG52bWVtX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHJidWYpXFxuIDUzMzpcXHR7XFxuIDUzNDpcXHRcXHRzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDtcXG4gNTM1OlxcdFxcdGNvbnN0IHZvaWQgKm1hYztcXG4gNTM2OlxcdFxcdHNpemVfdCBsZW47XFxuIDUzNzpcXHRcXG4gNTM4OlxcdFxcdGNlbGwgPSBudm1lbV9jZWxsX2dldChkZXYsIFxcXCJtYWMtYWRkcmVzc1xcXCIpO1xcbiA1Mzk6XFx0XFx0aWYgKElTX0VSUihjZWxsKSlcXG4gNTQwOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGNlbGwpO1xcbiA1NDE6XFx0XFxuIDU0MjpcXHRcXHRtYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgXFx1MDAyNmxlbik7XFxuIDU0MzpcXHRcXHRudm1lbV9jZWxsX3B1dChjZWxsKTtcXG4gNTQ0OlxcdFxcbiA1NDU6XFx0XFx0aWYgKElTX0VSUihtYWMpKVxcbiA1NDY6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWFjKTtcXG4gNTQ3OlxcdFxcbiA1NDg6XFx0XFx0aWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7XFxuIDU0OTpcXHRcXHRcXHRrZnJlZShtYWMpO1xcbiA1NTA6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU1MTpcXHRcXHR9XFxuIDU1MjpcXHRcXG4gNTUzOlxcdFxcdGV0aGVyX2FkZHJfY29weShhZGRyYnVmLCBtYWMpO1xcbiA1NTQ6XFx0XFx0a2ZyZWUobWFjKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjU6MjQuMTAwNTAzMTA0WiIsIlNlcSI6NjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3MTI0NDE5ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDIEFkZHJlc3MgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgaXMgZXhwZWN0ZWQgdG8gcG9wdWxhdGUgYWxsIHNpeCBieXRlcyBvZiB0aGUgTUFDIGFkZHJlc3MgKGBFVEhfQUxFTmApIGlmIGl0IHN1Y2NlZWRzLCByZXR1cm5pbmcgMC4gSWYgaXQgZmFpbHMsIHRoZSBwYXRjaCBmYWxscyBiYWNrIHRvIGBldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7YCDigJMgd2hpY2gsIGFnYWluLCBmdWxseSBpbml0aWFsaXplcyBgZWZ1c2UtXHUwMDNlYWRkcmAuXG5cbkFscmlnaHQsIGxldCdzIHJ1biB0aHJvdWdoIG91ciBjaGVja2xpc3QuIFRoaXMgaXMgcm91dGluZSwgYnV0IHRob3JvdWdobmVzcyBpcyBrZXkgaGVyZTpcblxuMS4gIERvZXMgaXQgZXhwb3NlIGFueSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8uIFRoZSBlbnRpcmUgYWRkcmVzcyBzcGFjZSBpcyBpbml0aWFsaXplZCBieSBlaXRoZXIgY2FsbC5cbjIuICBBbnkgcmlzayBvZiBpbmZvcm1hdGlvbiBsZWFrcyB2aWEgYGNvcHlfdG9fdXNlcmAgb3IgbmV0bGluayBjYWxscz8gQWJzb2x1dGVseSBub3QuIE5vdGhpbmcgaGVyZSBldmVuIHJlbW90ZWx5IHRvdWNoZXMgdGhvc2UgYXJlYXMuXG4zLiAgQXJlIHRoZXJlIGFueSBzdHJ1Y3R1cmUgZmllbGRzIGxlZnQgdW5pbml0aWFsaXplZCBhZnRlciB0aGlzIG9wZXJhdGlvbj8gTm9wZSwgYm90aCBwYXRocyBlbnN1cmUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIE1BQyBhZGRyZXNzIGZpZWxkLlxuNC4gIEFuZCwgY3JpdGljYWxseSwgaXMgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGJyYW5jaGluZyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGE/IE5vIHdheS4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCB0byAqZW5zdXJlKiB0aGUgZGF0YSBpcyBpbml0aWFsaXplZCAqYmVmb3JlKiBpdCdzIHVzZWQuXG5cbkdpdmVuIHRoaXMgYW5hbHlzaXMsIEknbSBjb25maWRlbnQgdGhhdCBLTVNBTiBpc24ndCBuZWNlc3NhcnkgaGVyZTsgYE5lZWRzS01TQU49ZmFsc2VgLiBUaGUgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBsaWtlIEtBU0FOIHNob3VsZCBiZSBtb3JlIHRoYW4gYWRlcXVhdGUgZm9yIHRoaXMuXG5cbk5vdywgbGV0J3MgbW92ZSBvbiBhbmQgY29uc3RydWN0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTc2LCJPdXRwdXRUb2tlbnMiOjE5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI2OjIxLjIyNDkyNjI5NloiLCJTZXEiOjY2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBtb2RpZmllcyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCBzbyB0aGF0IHdoZW4gYW4gaW52YWxpZCBNQUMgYWRkcmVzcyBpcyByZWFkIGZyb20gdGhlIGVmdXNlLCB0aGUgZHJpdmVyIGF0dGVtcHRzIHRvIGZldGNoIGEgdmFsaWQgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHRyZWUgLyBmaXJtd2FyZSBub2RlIG9yIE5WTUVNIHVzaW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYGV0aF9yYW5kb21fYWRkcigpYC4gQm90aCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCAob24gc3VjY2VzcykgYW5kIGBldGhfcmFuZG9tX2FkZHIoKWAgKG9uIGZhbGxiYWNrKSBjb21wbGV0ZWx5IG92ZXJ3cml0ZSBhbmQgaW5pdGlhbGl6ZSBhbGwgYEVUSF9BTEVOYCBieXRlcyBvZiBgZWZ1c2UtXFx1MDAzZWFkZHJgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBicmFuY2ggY29uZGl0aW9ucyBhcmUgaW50cm9kdWNlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AgbW9kaWZpZXMgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgc28gdGhhdCB3aGVuIGFuIGludmFsaWQgTUFDIGFkZHJlc3MgaXMgcmVhZCBmcm9tIHRoZSBlZnVzZSwgdGhlIGRyaXZlciBhdHRlbXB0cyB0byBmZXRjaCBhIHZhbGlkIE1BQyBhZGRyZXNzIGZyb20gdGhlIGRldmljZSB0cmVlIC8gZmlybXdhcmUgbm9kZSBvciBOVk1FTSB1c2luZyBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGBldGhfcmFuZG9tX2FkZHIoKWAuIEJvdGggYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgKG9uIHN1Y2Nlc3MpIGFuZCBgZXRoX3JhbmRvbV9hZGRyKClgIChvbiBmYWxsYmFjaykgY29tcGxldGVseSBvdmVyd3JpdGUgYW5kIGluaXRpYWxpemUgYWxsIGBFVEhfQUxFTmAgYnl0ZXMgb2YgYGVmdXNlLVxcdTAwM2VhZGRyYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnJhbmNoIGNvbmRpdGlvbnMgYXJlIGludHJvZHVjZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 13:46:24 +0000 UTC FinishedAt: 2026-09-02 14:26:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b78070aaef63512688aebfbc82365ef9d6660f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW88", "RTW88_CORE", "RTW88_USB", "RTW88_8822BU", "RTW88_8822CU", "RTW88_8723DU", "RTW88_8821CU", "RTW88_8821AU", "RTW88_8812AU", "RTW88_8814AU", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b78070aaef63512688aebfbc82365ef9d6660f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW88", "RTW88_CORE", "RTW88_USB", "RTW88_8822BU", "RTW88_8822CU", "RTW88_8723DU", "RTW88_8821CU", "RTW88_8821AU", "RTW88_8812AU", "RTW88_8814AU", "MAC80211", "USB" ], "series_id": "440d1eb4-d512-48e4-a4f0-8bcb2fac961e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw_chip_info_setup", "rtw_usb_probe" ], "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+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OCYjMzQ7LAogICAgJiMzNDtSVFc4OF9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg4X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQlUmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMkNVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg3MjNEVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIxQ1UmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMUFVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODE0QVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3X2NoaXBfaW5mb19zZXR1cCYjMzQ7LAogICAgJiMzNDtydHdfdXNiX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBtb2RpZmllcyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCBzbyB0aGF0IHdoZW4gYW4gaW52YWxpZCBNQUMgYWRkcmVzcyBpcyByZWFkIGZyb20gdGhlIGVmdXNlLCB0aGUgZHJpdmVyIGF0dGVtcHRzIHRvIGZldGNoIGEgdmFsaWQgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHRyZWUgLyBmaXJtd2FyZSBub2RlIG9yIE5WTUVNIHVzaW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYGV0aF9yYW5kb21fYWRkcigpYC4gQm90aCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCAob24gc3VjY2VzcykgYW5kIGBldGhfcmFuZG9tX2FkZHIoKWAgKG9uIGZhbGxiYWNrKSBjb21wbGV0ZWx5IG92ZXJ3cml0ZSBhbmQgaW5pdGlhbGl6ZSBhbGwgYEVUSF9BTEVOYCBieXRlcyBvZiBgZWZ1c2UtXHUwMDNlYWRkcmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaCBjb25kaXRpb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQUMgYWRkcmVzcyBzZXR1cCBsb2dpYyBpbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCAoY2FsbGVkIGR1cmluZyBjaGlwIGluZm8gc2V0dXApIHRvIGF0dGVtcHQgZmV0Y2hpbmcgYSBNQUMgYWRkcmVzcyB2aWEgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBnZW5lcmF0aW5nIGEgcmFuZG9tIE1BQyBhZGRyZXNzLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgaW5jbHVkaW5nIGZvciBVU0ItYmFzZWQgcnR3ODggV2lGaSBkZXZpY2VzIHRoYXQgY2FuIGJlIGVtdWxhdGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQvUmF3IEdhZGdldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTQ6MTU6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1xuaW5kZXggY2Q5MjU0MzcwZmNjNy4uMGYyMzQ5OGI1Yzk2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1xuQEAgLTIwNjAsOCAmIzQzOzIwNjAsMTEgQEAgc3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4gXHRlZnVzZS1cdTAwM2VleHRfbG5hXzVnID0gZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgXHUwMDI2IEJJVCgzKSA/IDEgOiAwO1xuIFxuIFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKGVmdXNlLVx1MDAzZWFkZHIpKSB7XG4tXHRcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cdTAwM2VhZGRyKTtcbi1cdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZWZ1c2UgTUFDIGludmFsaWQsIHVzaW5nIHJhbmRvbVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXHUwMDNlZGV2LCBlZnVzZS1cdTAwM2VhZGRyKSkge1xuJiM0MztcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4mIzQzO1x0XHRcdGRldl93YXJuKHJ0d2Rldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0IFwmIzM0O2ZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcblwmIzM0Oyk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gb3V0X2Rpc2FibGU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODgmIzM0OywKICAgICYjMzQ7UlRXODhfQ09SRSYjMzQ7LAogICAgJiMzNDtSVFc4OF9VU0ImIzM0OywKICAgICYjMzQ7UlRXODhfODgyMkJVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84NzIzRFUmIzM0OywKICAgICYjMzQ7UlRXODhfODgyMUNVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjFBVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODEyQVUmIzM0OywKICAgICYjMzQ7UlRXODhfODgxNEFVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0d19jaGlwX2luZm9fc2V0dXAmIzM0OywKICAgICYjMzQ7cnR3X3VzYl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUFDIGFkZHJlc3Mgc2V0dXAgbG9naWMgaW4gYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgKGNhbGxlZCBkdXJpbmcgY2hpcCBpbmZvIHNldHVwKSB0byBhdHRlbXB0IGZldGNoaW5nIGEgTUFDIGFkZHJlc3MgdmlhIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gZ2VuZXJhdGluZyBhIHJhbmRvbSBNQUMgYWRkcmVzcy4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGluY2x1ZGluZyBmb3IgVVNCLWJhc2VkIHJ0dzg4IFdpRmkgZGV2aWNlcyB0aGF0IGNhbiBiZSBlbXVsYXRlZCBhbmQgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0L1JhdyBHYWRnZXQgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFiODkyYjhjMzAyNTc4ZTUyMTI3N2IyOWJmYmZkN2U5YmUzZmEzM2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDE0OjE1OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYwppbmRleCBjZDkyNTQzNzBmY2M3Li4wZjIzNDk4YjVjOTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYwpAQCAtMjA2MCw4ICYjNDM7MjA2MCwxMSBAQCBzdGF0aWMgaW50IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldikKIAllZnVzZS0mZ3Q7ZXh0X2xuYV81ZyA9IGVmdXNlLSZndDtsbmFfdHlwZV81ZyAmYW1wOyBCSVQoMykgPyAxIDogMDsKIAogCWlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS0mZ3Q7YWRkcikpIHsKLQkJZXRoX3JhbmRvbV9hZGRyKGVmdXNlLSZndDthZGRyKTsKLQkJZGV2X3dhcm4ocnR3ZGV2LSZndDtkZXYsICYjMzQ7ZWZ1c2UgTUFDIGludmFsaWQsIHVzaW5nIHJhbmRvbVxuJiMzNDspOwomIzQzOwkJaWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LSZndDtkZXYsIGVmdXNlLSZndDthZGRyKSkgewomIzQzOwkJCWV0aF9yYW5kb21fYWRkcihlZnVzZS0mZ3Q7YWRkcik7CiYjNDM7CQkJZGV2X3dhcm4ocnR3ZGV2LSZndDtkZXYsCiYjNDM7CQkJCSAmIzM0O2ZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxuJiMzNDspOwomIzQzOwkJfQogCX0KIAogb3V0X2Rpc2FibGU6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBUaGUgZGlmZiBwb2ludHMgdG8gYSBjaGFuZ2UgaW4gdGhlIGBydHc4OC9tYWluLmNgIGZpbGUgd2l0aGluIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIGNoYW5nZSBjb25jZXJucyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHRoZSBFdGhlcm5ldCBNQUMgYWRkcmVzcyBzdG9yZWQgaW4gdGhlIGVGdXNlLiBUaGUgb3JpZ2luYWwgY29kZSBnZW5lcmF0ZWQgYSByYW5kb20gTUFDIGFkZHJlc3MgaWYgdGhlIGVGdXNlIGNvbnRhaW5lZCBhbiBpbnZhbGlkIG9uZSwgYnV0IG5vdyBpdCBhdHRlbXB0cyB0byBnZXQgdGhlIE1BQyBhZGRyZXNzIHRocm91Z2ggYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGJlZm9yZSByZXNvcnRpbmcgdG8gcmFuZG9tIGdlbmVyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSBhIHdhcm5pbmcgbWVzc2FnZSBpcyBhZGRlZCBpZiBnZXR0aW5nIGEgdmFsaWQgTUFDIGZhaWxzLCB3aGljaCBwcm92aWRlcyBtb3JlIGNvbnRleHQuCgpOb3csIGxldCYjMzk7cyB6b29tIG91dCBhIGJpdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgcnR3ODhgIGRyaXZlciBiZXR0ZXIuIElzIHRoaXMgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBkZXZpY2U/IElzIHRoaXMgc29tZXRoaW5nIEkgY2FuIGVtdWxhdGUgb3IgZnV6ej8gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd29yayB3aXRoIFVTQiwgUENJLCBvciBTRElPIGRldmljZXM/IEkga25vdyBSZWFsdGVrIGhhcyBhIGhpc3Rvcnkgd2l0aCBhbGwgdGhyZWUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybS4gSSBrbm93IHRoYXQgVVNCIGRldmljZXMgKmNhbiogYmUgZnV6emVkIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUvc3l6a2FsbGVyLCB1c2luZyB0ZWNobmlxdWVzIGxpa2UgUmF3IEdhZGdldCwgZHVtbXlfaGNkLCBvciBVU0IgZW11bGF0aW9uLiBTbywgaXMgdGhlcmUgYSBgcnR3ODhfdXNiYCBjb21wb25lbnQgdG8gYmUgY29uc2lkZXJlZD8gTGV0JiMzOTtzIGNoZWNrIHdpdGggZ3JlcHBlciBvciBieSByZWFkaW5nIHRoZSBmaWxlLiBJIG5lZWQgdG8ga25vdyBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHRvIGRldGVybWluZSBpdHMgc3VpdGFiaWxpdHkgZm9yIGZ1enppbmcgYW5kIGlmIEkgY2FuIHVzZSBteSBub3JtYWwgUUVNVSBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfUlRXODgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfUlRXODhfQ09SRSlcdCYjNDM7PSBydHc4OF9jb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNC1ydHc4OF9jb3JlLXkgJiM0Mzs9IG1haW4ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9MjE9cnR3ODhfY29yZS0kKENPTkZJR19QTSkgJiM0Mzs9IHdvdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToyMzpydHc4OF9jb3JlLSQoQ09ORklHX1JUVzg4X0xFRFMpICYjNDM7PSBsZWQub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJCKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMjYtcnR3ODhfODgyMmItb2Jqc1x0XHQ6PSBydHc4ODIyYi5vIHJ0dzg4MjJiX3RhYmxlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19SVFc4OF84ODIyQkUpXHQmIzQzOz0gcnR3ODhfODgyMmJlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMjktcnR3ODhfODgyMmJlLW9ianNcdFx0Oj0gcnR3ODgyMmJlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19SVFc4OF84ODIyQlMpXHQmIzQzOz0gcnR3ODhfODgyMmJzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzItcnR3ODhfODgyMmJzLW9ianNcdFx0Oj0gcnR3ODgyMmJzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19SVFc4OF84ODIyQlUpXHQmIzQzOz0gcnR3ODhfODgyMmJ1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzUtcnR3ODhfODgyMmJ1LW9ianNcdFx0Oj0gcnR3ODgyMmJ1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19SVFc4OF84ODIyQylcdCYjNDM7PSBydHc4OF84ODIyYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTM4LXJ0dzg4Xzg4MjJjLW9ianNcdFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfUlRXODhfODgyMkNFKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQxLXJ0dzg4Xzg4MjJjZS1vYmpzXHRcdDo9IHJ0dzg4MjJjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfUlRXODhfODgyMkNTKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ0LXJ0dzg4Xzg4MjJjcy1vYmpzXHRcdDo9IHJ0dzg4MjJjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfUlRXODhfODgyMkNVKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ3LXJ0dzg4Xzg4MjJjdS1vYmpzXHRcdDo9IHJ0dzg4MjJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfUlRXODhfODcyM1gpXHQmIzQzOz0gcnR3ODhfODcyM3gub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01MC1ydHc4OF84NzIzeC1vYmpzXHRcdDo9IHJ0dzg3MjN4Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19SVFc4OF84NzAzQilcdCYjNDM7PSBydHc4OF84NzAzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTUzLXJ0dzg4Xzg3MDNiLW9ianNcdFx0Oj0gcnR3ODcwM2IubyBydHc4NzAzYl90YWJsZXMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX1JUVzg4Xzg3MjNDUylcdCYjNDM7PSBydHc4OF84NzIzY3Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01Ni1ydHc4OF84NzIzY3Mtb2Jqc1x0XHQ6PSBydHc4NzIzY3Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX1JUVzg4Xzg3MjNEKVx0JiM0Mzs9IHJ0dzg4Xzg3MjNkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTktcnR3ODhfODcyM2Qtb2Jqc1x0XHQ6PSBydHc4NzIzZC5vIHJ0dzg3MjNkX3RhYmxlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19SVFc4OF84NzIzREUpXHQmIzQzOz0gcnR3ODhfODcyM2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjItcnR3ODhfODcyM2RlLW9ianNcdFx0Oj0gcnR3ODcyM2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19SVFc4OF84NzIzRFMpXHQmIzQzOz0gcnR3ODhfODcyM2RzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjUtcnR3ODhfODcyM2RzLW9ianNcdFx0Oj0gcnR3ODcyM2RzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjY3Om9iai0kKENPTkZJR19SVFc4OF84NzIzRFUpXHQmIzQzOz0gcnR3ODhfODcyM2R1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjgtcnR3ODhfODcyM2R1LW9ianNcdFx0Oj0gcnR3ODcyM2R1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjcwOm9iai0kKENPTkZJR19SVFc4OF84ODIxQylcdCYjNDM7PSBydHc4OF84ODIxYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTcxLXJ0dzg4Xzg4MjFjLW9ianNcdFx0Oj0gcnR3ODgyMWMubyBydHc4ODIxY190YWJsZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3MzpvYmotJChDT05GSUdfUlRXODhfODgyMUNFKVx0JiM0Mzs9IHJ0dzg4Xzg4MjFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc0LXJ0dzg4Xzg4MjFjZS1vYmpzXHRcdDo9IHJ0dzg4MjFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3NjpvYmotJChDT05GSUdfUlRXODhfODgyMUNTKVx0JiM0Mzs9IHJ0dzg4Xzg4MjFjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc3LXJ0dzg4Xzg4MjFjcy1vYmpzXHRcdDo9IHJ0dzg4MjFjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfUlRXODhfODgyMUNVKVx0JiM0Mzs9IHJ0dzg4Xzg4MjFjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTgwLXJ0dzg4Xzg4MjFjdS1vYmpzXHRcdDo9IHJ0dzg4MjFjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfUlRXODhfODhYWEEpXHQmIzQzOz0gcnR3ODhfODh4eGEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS04My1ydHc4OF84OHh4YS1vYmpzXHRcdDo9IHJ0dzg4eHhhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjg1Om9iai0kKENPTkZJR19SVFc4OF84ODIxQSlcdCYjNDM7PSBydHc4OF84ODIxYS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg2LXJ0dzg4Xzg4MjFhLW9ianNcdFx0Oj0gcnR3ODgyMWEubyBydHc4ODIxYV90YWJsZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfUlRXODhfODgxMkEpXHQmIzQzOz0gcnR3ODhfODgxMmEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS04OS1ydHc4OF84ODEyYS1vYmpzXHRcdDo9IHJ0dzg4MTJhLm8gcnR3ODgxMmFfdGFibGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjFBVSlcdCYjNDM7PSBydHc4OF84ODIxYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05Mi1ydHc4OF84ODIxYXUtb2Jqc1x0XHQ6PSBydHc4ODIxYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6OTQ6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MTJBVSlcdCYjNDM7PSBydHc4OF84ODEyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05NS1ydHc4OF84ODEyYXUtb2Jqc1x0XHQ6PSBydHc4ODEyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6OTc6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MTRBKVx0JiM0Mzs9IHJ0dzg4Xzg4MTRhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtOTgtcnR3ODhfODgxNGEtb2Jqc1x0XHQ6PSBydHc4ODE0YS5vIHJ0dzg4MTRhX3RhYmxlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfUlRXODhfODgxNEFFKVx0JiM0Mzs9IHJ0dzg4Xzg4MTRhZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTEwMS1ydHc4OF84ODE0YWUtb2Jqc1x0XHQ6PSBydHc4ODE0YWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfUlRXODhfODgxNEFVKVx0JiM0Mzs9IHJ0dzg4Xzg4MTRhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTEwNC1ydHc4OF84ODE0YXUtb2Jqc1x0XHQ6PSBydHc4ODE0YXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwNjpvYmotJChDT05GSUdfUlRXODhfUENJKVx0XHQmIzQzOz0gcnR3ODhfcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTA3LXJ0dzg4X3BjaS1vYmpzXHRcdFx0Oj0gcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMDk6b2JqLSQoQ09ORklHX1JUVzg4X1NESU8pXHQmIzQzOz0gcnR3ODhfc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMC1ydHc4OF9zZGlvLW9ianNcdFx0XHQ6PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMTI6b2JqLSQoQ09ORklHX1JUVzg4X1VTQilcdFx0JiM0Mzs9IHJ0dzg4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMy1ydHc4OF91c2Itb2Jqc1x0XHRcdDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmM9MzU1Mz12b2lkIHJ0d19jb2V4X3dsX2Nja2xvY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtMzU2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjM1NjQ6I2lmZGVmIENPTkZJR19SVFc4OF9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYy0zNTY1LSNkZWZpbmUgSU5GT19TSVpFXHQ4MFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTM5MzY9dm9pZCBydHdfY29leF9kaXNwbGF5X2NvZXhfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtNDIwNC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYzo0MjA1OiNlbmRpZiAvKiBDT05GSUdfUlRXODhfREVCVUdGUyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYzoxNzojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM9MTM0OT12b2lkIHJ0d19kZWJ1Z2ZzX2RlaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xMzUyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYzoxMzUzOiNlbmRpZiAvKiBDT05GSUdfUlRXODhfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jLTEzNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTM1NTojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmMtMTM1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM9MTM3Mz1FWFBPUlRfU1lNQk9MKHJ0d19kYmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jLTEzNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTM3NTojZW5kaWYgLyogQ09ORklHX1JUVzg4X0RFQlVHICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oPTg9ZW51bSBydHdfZGVidWdfbWFzayB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oOjM0OiNpZmRlZiBDT05GSUdfUlRXODhfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTM1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaD00Mz1zdGF0aWMgaW5saW5lIHZvaWQgcnR3X2RlYnVnZnNfZGVpbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpIHt9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmgtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg6NDU6I2VuZGlmIC8qIENPTkZJR19SVFc4OF9ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmgtNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg6NDc6I2lmZGVmIENPTkZJR19SVFc4OF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaD02ND1zdGF0aWMgaW5saW5lIGJvb2wgcnR3X2RiZ19pc19lbmFibGVkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oOjcwOiNlbmRpZiAvKiBDT05GSUdfUlRXODhfREVCVUcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaC03MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2xlZC5oLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2xlZC5oOjg6I2lmZGVmIENPTkZJR19SVFc4OF9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2xlZC5oLTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jPTE4ODY9Y29uc3Qgc3RydWN0IHJ0d19jaGlwX2luZm8gcnR3ODcwM2JfaHdfc3BlYyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTk5NS1cdC8qIFRoZXNlIHJlZ2lzdGVycyBhcmUgdXNlZCB0byByZWFkIChhbmQgcHJpbnQpIGZyb20gaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYzoxOTk2Olx0ICogQ09ORklHX1JUVzg4X0RFQlVHRlMgaXMgZW5hYmxlZC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xOTk3LVx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk3OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyJiMzOTtzIEVGVVNFIEluZm9ybWF0aW9uIFNldHVwKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgaXNzdWUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IGl0JiMzOTtzIGhhbmRsaW5nIEVGVVNFIGluZm9ybWF0aW9uLCBzbyBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXBgIGZ1bmN0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgc3VnZ2VzdHMgaXQmIzM5O3MgYSBrZXkgcGllY2UgaW4gdGhpcyBwdXp6bGUuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0JiMzOTtzIGRvaW5nLCBob3cgaXQmIzM5O3Mgc2V0dGluZyB0aGluZ3MgdXAsIGFuZCB3aGF0IGRhdGEgaXQmIzM5O3MgZHJhd2luZyBmcm9tIHRoZSBFRlVTRS4gVGhlbiBJJiMzOTtsbCBleHBhbmQgdGhlIGludmVzdGlnYXRpb24gb3V0d2FyZHMgdG8gaXRzIGNhbGxlcnMuIFVuZGVyc3RhbmRpbmcgKndobyogaXMgY2FsbGluZyBpdCwgKndoZW4qLCBhbmQgKndoeSogaXMgY3J1Y2lhbCB0byBlc3RhYmxpc2hpbmcgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIGhvdyB0aGlzIGluZm9ybWF0aW9uIGZlZWRzIGludG8gdGhlIG92ZXJhbGwgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgYW5kIGludGVyYWN0aW9uIGlzIGxpa2VseSBjcml0aWNhbCBoZXJlLiBJIGV4cGVjdCB0aGF0IHdpbGwgcmV2ZWFsIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBidWcgZml4ZXMsIG9yIG1heWJlIGV2ZW4gcG9pbnQgdG8gYSBmdW5kYW1lbnRhbCBkZXNpZ24gaXNzdWUgaWYgSSYjMzk7bSBsdWNreSwgd2hpY2ggSSBob3BlIHRvIGF2b2lkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIwMDM9c3RhdGljIHZvaWQgcnR3X2NoaXBfZWZ1c2VfZGlzYWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDA5OnN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAxMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjA5Nz1pbnQgcnR3X2NoaXBfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMTA3Olx0cmV0ID0gcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjEwOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM9MTAwNz1pbnQgcnR3ODh4eGFfcG93ZXJfb24oc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYzoxMDE4Olx0LyogT3ZlcnJpZGUgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAxOS1cdGlmIChjaGlwLVx1MDAzZWlkID09IFJUV19DSElQX1RZUEVfODgyMUEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTAyMzpcdC8qIE92ZXJyaWRlIHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMjQtXHRpZiAoY2hpcC1cdTAwM2VpZCA9PSBSVFdfQ0hJUF9UWVBFXzg4MTJBKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MTEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYW5kIGl0cyBDYWxsZXJzKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgcnR3X2NoaXBfaW5mb19zZXR1cGAgZnVuY3Rpb24gd29ya3MsIGFuZCBjcml0aWNhbGx5LCAqd2hvKiBpcyB1c2luZyBpdC4gVW5kZXJzdGFuZGluZyB0aGUgc2V0dXAgcHJvY2VzcyBpcyBmdW5kYW1lbnRhbCwgZXNwZWNpYWxseSBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGludGVyYWN0aW9uIG9yIGNydWNpYWwgY29uZmlndXJhdGlvbi4gU28sIG15IGluaXRpYWwgYXBwcm9hY2ggd2lsbCBiZSB0byBtZXRpY3Vsb3VzbHkgZXhhbWluZSB0aGUgZnVuY3Rpb24gaXRzZWxmIOKAkyB3aGF0IHBhcmFtZXRlcnMgZG9lcyBpdCB0YWtlLCB3aGF0IGRvZXMgaXQgaW5pdGlhbGl6ZSwgd2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlPyBUaGVuLCBqdXN0IGFzIGltcG9ydGFudGx5LCBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgc2luZ2xlIHBsYWNlIGluIHRoZSBjb2RlYmFzZSB3aGVyZSBgcnR3X2NoaXBfaW5mb19zZXR1cGAgaXMgY2FsbGVkLiBGaW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBmbG93LiBUaGlzIHdpbGwgdGVsbCBtZSB0aGUgY29udGV4dCBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYW5kIHdoYXQgb3RoZXIgc3Vic3lzdGVtcyBvciBtb2R1bGVzIHJlbHkgb24gaXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGJpZyBwaWN0dXJlIG9mIGhvdyB0aGUgY2hpcCBpbmZvcm1hdGlvbiBpcyBoYW5kbGVkIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGNvcmUgcGllY2Ugb2YgdGhlIGluaXRpYWxpemF0aW9uLCBhbmQgbGlrZWx5IGhhcyBjb25uZWN0aW9ucyB0byB0aGUgZGV2aWNlIGRyaXZlciBhbmQgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXJzLiBMZXQmIzM5O3MgZ2V0IHRvIGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19jaGlwX2luZm9fc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIwNzg9c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwOTc6aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMjMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjEyNDpFWFBPUlRfU1lNQk9MKHJ0d19jaGlwX2luZm9fc2V0dXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjEyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaD0yMjU4PXZvaWQgcnR3X2NvcmVfc3RvcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjIyNTk6aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC0yMjYwLWludCBydHdfY29yZV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcGNpLmM9MTc5NT1pbnQgcnR3X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jLTE4NDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jOjE4NTA6XHRyZXQgPSBydHdfY2hpcF9pbmZvX3NldHVwKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jLTE4NTEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9zZGlvLmM9MTMyNT1pbnQgcnR3X3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqc2Rpb19mdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvc2Rpby5jLTEzNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3NkaW8uYzoxMzY5Olx0cmV0ID0gcnR3X2NoaXBfaW5mb19zZXR1cChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9zZGlvLmMtMTM3MC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jPTEyNjM9aW50IHJ0d191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEzMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjEzMTI6XHRyZXQgPSBydHdfY2hpcF9pbmZvX3NldHVwKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEzMTMtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMjAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgVVNCIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYHJ0d191c2JfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNgIGZpbGUuIE15IGh1bmNoIGlzIHRoYXQgdGhpcyBjb3VsZCBiZSBhIHBvaW50IG9mIGludGVyZXN0IGZvciBmdXp6aW5nLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIGhvdyBVU0IgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgdXNpbmcgc29tZXRoaW5nIGxpa2UgVVNCIFJhdyBHYWRnZXQgYW5kIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIHdpdGggZHVtbXlfaGNkIG9yIHJhdy1nYWRnZXQuCgpCZWZvcmUgSSBqdW1wIGluLCBJIHdhbnQgdG8gcmV2aWV3IGFueSByZWNlbnQgcGF0Y2hlcy4gVGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbiBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCDigJMgdW5kZXJzdGFuZGluZyB0aGUgY2hhbmdlcyB0aGVyZSB3aWxsIGdpdmUgbWUgY29udGV4dC4KCk9uY2UgSSBoYXZlIHRoYXQsIEkgbmVlZCB0byBjaGVjayBvdXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDIwNjAuIEkgbmVlZCB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgaXMgd2lyZWQgdG9nZXRoZXIgaW4gdGhlIGNvcmUgZHJpdmVyLiBIb3BlZnVsbHksIHRoaXMgYXBwcm9hY2ggd2lsbCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyB2dWxuZXJhYmlsaXR5IHN1cmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDQwOlx0XHRcdGVmdXNlLVx1MDAzZWxuYV90eXBlXzJnID0gMDtcbjIwNDE6XHRcdGlmIChlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyA9PSAweGZmKVxuMjA0MjpcdFx0XHRlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyA9IDA7XG4yMDQzOlx0XHRpZiAoZWZ1c2UtXHUwMDNlY2hhbm5lbF9wbGFuID09IDB4ZmYpXG4yMDQ0Olx0XHRcdGVmdXNlLVx1MDAzZWNoYW5uZWxfcGxhbiA9IDB4N2Y7XG4yMDQ1Olx0XHRpZiAoZWZ1c2UtXHUwMDNlcmZfYm9hcmRfb3B0aW9uID09IDB4ZmYpXG4yMDQ2Olx0XHRcdGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiA9IDA7XG4yMDQ3Olx0XHRpZiAoZWZ1c2UtXHUwMDNlYnRfc2V0dGluZyBcdTAwMjYgQklUKDApKVxuMjA0ODpcdFx0XHRlZnVzZS1cdTAwM2VzaGFyZV9hbnQgPSB0cnVlO1xuMjA0OTpcdFx0aWYgKGVmdXNlLVx1MDAzZXJlZ2QgPT0gMHhmZilcbjIwNTA6XHRcdFx0ZWZ1c2UtXHUwMDNlcmVnZCA9IDA7XG4yMDUxOlx0XHRpZiAoZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9PSAweGZmKVxuMjA1MjpcdFx0XHRlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzJnID0gMDtcbjIwNTM6XHRcdGlmIChlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID09IDB4ZmYpXG4yMDU0Olx0XHRcdGVmdXNlLVx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfNWcgPSAwO1xuMjA1NTpcdFxuMjA1NjpcdFx0ZWZ1c2UtXHUwMDNlYnRjb2V4ID0gKGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiBcdTAwMjYgMHhlMCkgPT0gMHgyMDtcbjIwNTc6XHRcdGVmdXNlLVx1MDAzZWV4dF9wYV8yZyA9IGVmdXNlLVx1MDAzZXBhX3R5cGVfMmcgXHUwMDI2IEJJVCg0KSA/IDEgOiAwO1xuMjA1ODpcdFx0ZWZ1c2UtXHUwMDNlZXh0X2xuYV8yZyA9IGVmdXNlLVx1MDAzZWxuYV90eXBlXzJnIFx1MDAyNiBCSVQoMykgPyAxIDogMDtcbjIwNTk6XHRcdGVmdXNlLVx1MDAzZWV4dF9wYV81ZyA9IGVmdXNlLVx1MDAzZXBhX3R5cGVfNWcgXHUwMDI2IEJJVCgwKSA/IDEgOiAwO1xuMjA2MDpcdFx0ZWZ1c2UtXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVx1MDAzZWxuYV90eXBlXzVnIFx1MDAyNiBCSVQoMykgPyAxIDogMDtcbjIwNjE6XHRcbjIwNjI6XHRcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cdTAwM2VhZGRyKSkge1xuMjA2MzpcdFx0XHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXHUwMDNlZGV2LCBlZnVzZS1cdTAwM2VhZGRyKSkge1xuMjA2NDpcdFx0XHRcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cdTAwM2VhZGRyKTtcbjIwNjU6XHRcdFx0XHRkZXZfd2FybihydHdkZXYtXHUwMDNlZGV2LFxuMjA2NjpcdFx0XHRcdFx0IFwmIzM0O2ZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcblwmIzM0Oyk7XG4yMDY3Olx0XHRcdH1cbjIwNjg6XHRcdH1cbjIwNjk6XHRcbjIwNzA6XHRvdXRfZGlzYWJsZTpcbjIwNzE6XHRcdHJ0d19jaGlwX2VmdXNlX2Rpc2FibGUocnR3ZGV2KTtcbjIwNzI6XHRcbjIwNzM6XHRvdXRfdW5sb2NrOlxuMjA3NDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJ0d2Rldi1cdTAwM2VtdXRleCk7XG4yMDc1Olx0XHRyZXR1cm4gcmV0O1xuMjA3NjpcdH1cbjIwNzc6XHRcbjIwNzg6XHRzdGF0aWMgaW50IHJ0d19jaGlwX2JvYXJkX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbjIwNzk6XHR7XG4yMDgwOlx0XHRzdHJ1Y3QgcnR3X2hhbCAqaGFsID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWhhbDtcbjIwODE6XHRcdGNvbnN0IHN0cnVjdCBydHdfcmZlX2RlZiAqcmZlX2RlZiA9IHJ0d19nZXRfcmZlX2RlZihydHdkZXYpO1xuMjA4MjpcdFxuMjA4MzpcdFx0aWYgKCFyZmVfZGVmKVxuMjA4NDpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjIwODU6XHRcbjIwODY6XHRcdHJ0d19waHlfc2V0dXBfcGh5X2NvbmQocnR3ZGV2LCBoYWwtXHUwMDNlcGtnX3R5cGUpO1xuMjA4NzpcdFxuMjA4ODpcdFx0cnR3X3BoeV9pbml0X3R4X3Bvd2VyKHJ0d2Rldik7XG4yMDg5Olx0XHRydHdfbG9hZF90YWJsZShydHdkZXYsIHJmZV9kZWYtXHUwMDNlcGh5X3BnX3RibCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzkyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1BQyBBZGRyZXNzIEluaXRpYWxpemF0aW9uIENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSBhIGNoYW5nZSBpbiBob3cgYSBNQUMgYWRkcmVzcyBpcyBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg4YCBkcml2ZXIuIEJlZm9yZSwgaWYgdGhlIEVGVVNFIE1BQyBhZGRyZXNzIHdhc24mIzM5O3QgdmFsaWQsIGl0IHdhcyBpbW1lZGlhdGVseSByYW5kb21pemVkLiBOb3csIHRoZXJlJiMzOTtzIGFuIGludGVybWVkaWF0ZSBzdGVwOiBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtJmd0O2RldiwgZWZ1c2UtJmd0O2FkZHIpYC4gVGhpcyBmdW5jdGlvbiBzZWVtcyB0byB0cnkgdG8gcmV0cmlldmUgYSBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UmIzM5O3MgZmlybXdhcmUgb3IgcHJvcGVydGllcywgdGhpbmdzIGxpa2UgZGV2aWNlIHRyZWUgb3IgQUNQSS4gT25seSAqaWYqIHRoYXQgZmFpbHMg4oCTIHJldHVybnMgYW4gZXJyb3Ig4oCTIGRvZXMgaXQgZmFsbCBiYWNrIHRvIHJhbmRvbWl6YXRpb24uCgpUaGUgY29yZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgY2hhbmdlIGlzIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBjYXJlZnVsbHkuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nOgoqICAgRG9jdW1lbnRhdGlvbi9LY29uZmlnL0NvbW1lbnRzLgoqICAgUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyAobG9nZ2luZywgdHJhY2Vwb2ludHMpLgoqICAgQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCiogICBVbnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoR0NFLCBRRU1VKSwgaW5jbHVkaW5nIGVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgSSBkb24mIzM5O3QgdXNlCiogICBWZW5kb3Itc3BlY2lmaWMgZHJpdmVycyAoUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBHUFUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS4KKiAgIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKU2luY2UgdGhpcyB0b3VjaGVzIGRyaXZlciBsb2dpYywgSSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0IGlzIHJlYWNoYWJsZSBjb2RlIG9yIG5vdC4gTXkgY29kZSBzZWFyY2ggdG9vbHMgc2hvdyB0aGlzIGlzIGEgcmVhbCBhbmQgcmVhY2hhYmxlIGxvZ2ljLgoKU28sIGlzIGl0PyBDYW4gdGhpcyBgcnR3ODhgIGRyaXZlciBiZSBwcm9iZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gRG9lcyBpdCByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIG9yIGZpcm13YXJlIHRvIGJlIGZ1bmN0aW9uYWw/IENhbiBJIHByb2JlIGl0IHVzaW5nIGEgVVNCIGdhZGdldCBvciBzb21lIGZvcm0gb2YgVVNCIGVtdWxhdGlvbiB3aXRoaW4gc3l6a2FsbGVyPyBJIG5lZWQgdG8gY2hlY2sgaG93IHJ0dzg4IFVTQiBkZXZpY2VzIGFyZSBoYW5kbGVkLiBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhY2hhYmxlLCBhbmQgdGhlIGNoYW5nZSBpbXBhY3RzIGNvcmUgbG9naWMsIHRoZW4gaXQgc2hvdWxkIGJlIHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d191c2JfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2R1LmM9MjA9c3RhdGljIGludCBydHc4NzIzZHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZHUuYy0yMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkdS5jOjIzOlx0cmV0dXJuIHJ0d191c2JfcHJvYmUoaW50ZiwgaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZHUuYy0yNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYXUuYz04ND1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4MTJhdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYXUuYy04Ni1cdC5pZF90YWJsZSA9IHJ0d184ODEyYXVfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhdS5jOjg3Olx0LnByb2JlID0gcnR3X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmF1LmMtODgtXHQuZGlzY29ubmVjdCA9IHJ0d191c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhdS5jPTQ0PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODgxNGF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhdS5jLTQ2LVx0LmlkX3RhYmxlID0gcnR3Xzg4MTRhdV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGF1LmM6NDc6XHQucHJvYmUgPSBydHdfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YXUuYy00OC1cdC5kaXNjb25uZWN0ID0gcnR3X3VzYl9kaXNjb25uZWN0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWF1LmM9Njg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODIxYXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWF1LmMtNzAtXHQuaWRfdGFibGUgPSBydHdfODgyMWF1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYXUuYzo3MTpcdC5wcm9iZSA9IHJ0d191c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhdS5jLTcyLVx0LmRpc2Nvbm5lY3QgPSBydHdfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxY3UuYz00Nj1zdGF0aWMgaW50IHJ0d184ODIxY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxY3UuYy00OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjdS5jOjQ5Olx0cmV0dXJuIHJ0d191c2JfcHJvYmUoaW50ZiwgaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxY3UuYy01MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYz04OD1zdGF0aWMgaW50IHJ0dzg4MjJidV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTkwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmJ1LmM6OTE6XHRyZXR1cm4gcnR3X3VzYl9wcm9iZShpbnRmLCBpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTkyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jPTMwPXN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYzozMzpcdHJldHVybiBydHdfdXNiX3Byb2JlKGludGYsIGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9MTIyNT1zdGF0aWMgdm9pZCBydHdfdXNiX3BoeV9jZmcoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEyNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjEyNjM6aW50IHJ0d191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTI2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzU4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTM1OTpFWFBPUlRfU1lNQk9MKHJ0d191c2JfcHJvYmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzYwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmg9OTA9c3RhdGljIGlubGluZSBzdHJ1Y3QgcnR3X3VzYl90eF9kYXRhICpydHdfdXNiX2dldF90eF9kYXRhKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuaC05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmg6MTAwOmludCBydHdfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuaC0xMDEtdm9pZCBydHdfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk3NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLCBsYWlkIG91dCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgVVNCIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBSZWFsdGVrIFdpRmkgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRyYWNlIGluZGljYXRlcyB0aGF0IGBydHdfdXNiX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY2AgaXMgdGhlIGVudHJ5IHBvaW50LiAgVGhlIGNvZGUgZmxvdyYjMzk7cyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBgcnR3X3VzYl9wcm9iZWAgaW1tZWRpYXRlbHkga2lja3Mgb2ZmIGEgY2hhaW46IGBydHdfdXNiX3Byb2JlYCBjYWxscyBgcnR3X2NoaXBfaW5mb19zZXR1cChydHdkZXYpYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IGFmdGVyIHRoZSBVU0IgZGV2aWNlIGlzIGRldGVjdGVkLCBhIGNyaXRpY2FsIHNlcXVlbmNlIG9mIGluaXRpYWxpemF0aW9ucyBpcyBpbml0aWF0ZWQuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgbGlrZWx5IGhhbmRsZXMgZ2VuZXJhbCBjaGlwLXNwZWNpZmljIHNldHVwLCBhbmQgdGhlIHN1YnNlcXVlbnQgY2FsbCB0byBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaGludHMgYXQgdGhlIGxvYWRpbmcgb3IgcHJvY2Vzc2luZyBvZiBkYXRhIGZyb20gdGhlIGNoaXAmIzM5O3MgZUZVU0UsIHdoaWNoIHdvdWxkIGJlIGNydWNpYWwgZm9yIHRoaW5ncyBsaWtlIGNhbGlicmF0aW9uLCBNQUMgYWRkcmVzcywgYW5kIG90aGVyIGNyaXRpY2FsIGRldmljZSBwYXJhbWV0ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLCBidXQgSSYjMzk7bSBnZXR0aW5nIGEgcHJldHR5IHNvbGlkIHBpY3R1cmUgb2YgdGhlIHByb2JlIHByb2Nlc3MuIEkmIzM5O2xsIGJlIGNoZWNraW5nIGB1c2IuY2AgZGlyZWN0bHkgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI2MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjYzOlx0aW50IHJ0d191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbjEyNjQ6XHR7XG4xMjY1Olx0XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xuMTI2NjpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4xMjY3Olx0XHRzdHJ1Y3QgcnR3X3VzYiAqcnR3dXNiO1xuMTI2ODpcdFx0aW50IGRydl9kYXRhX3NpemU7XG4xMjY5Olx0XHRpbnQgcmV0O1xuMTI3MDpcdFxuMTI3MTpcdFx0ZHJ2X2RhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcnR3X2RldikgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBydHdfdXNiKTtcbjEyNzI6XHRcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KGRydl9kYXRhX3NpemUsIFx1MDAyNnJ0d19vcHMpO1xuMTI3MzpcdFx0aWYgKCFodylcbjEyNzQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xMjc1Olx0XG4xMjc2Olx0XHRydHdkZXYgPSBody1cdTAwM2Vwcml2O1xuMTI3NzpcdFx0cnR3ZGV2LVx1MDAzZWh3ID0gaHc7XG4xMjc4Olx0XHRydHdkZXYtXHUwMDNlZGV2ID0gXHUwMDI2aW50Zi1cdTAwM2VkZXY7XG4xMjc5Olx0XHRydHdkZXYtXHUwMDNlY2hpcCA9IChzdHJ1Y3QgcnR3X2NoaXBfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvO1xuMTI4MDpcdFx0cnR3ZGV2LVx1MDAzZWhjaS5vcHMgPSBcdTAwMjZydHdfdXNiX29wcztcbjEyODE6XHRcdHJ0d2Rldi1cdTAwM2VoY2kudHlwZSA9IFJUV19IQ0lfVFlQRV9VU0I7XG4xMjgyOlx0XG4xMjgzOlx0XHRydHd1c2IgPSBydHdfZ2V0X3VzYl9wcml2KHJ0d2Rldik7XG4xMjg0Olx0XHRydHd1c2ItXHUwMDNlcnR3ZGV2ID0gcnR3ZGV2O1xuMTI4NTpcdFxuMTI4NjpcdFx0cmV0ID0gcnR3X3VzYl9hbGxvY19yeF9idWZzKHJ0d3VzYik7XG4xMjg3Olx0XHRpZiAocmV0KVxuMTI4ODpcdFx0XHRnb3RvIGVycl9yZWxlYXNlX2h3O1xuMTI4OTpcdFxuMTI5MDpcdFx0cmV0ID0gcnR3X2NvcmVfaW5pdChydHdkZXYpO1xuMTI5MTpcdFx0aWYgKHJldClcbjEyOTI6XHRcdFx0Z290byBlcnJfZnJlZV9yeF9idWZzO1xuMTI5MzpcdFxuMTI5NDpcdFx0cmV0ID0gcnR3X3VzYl9pbnRmX2luaXQocnR3ZGV2LCBpbnRmKTtcbjEyOTU6XHRcdGlmIChyZXQpIHtcbjEyOTY6XHRcdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBpbml0IFVTQiBpbnRlcmZhY2VcXG5cJiMzNDspO1xuMTI5NzpcdFx0XHRnb3RvIGVycl9kZWluaXRfY29yZTtcbjEyOTg6XHRcdH1cbjEyOTk6XHRcbjEzMDA6XHRcdHJldCA9IHJ0d191c2JfaW5pdF90eChydHdkZXYpO1xuMTMwMTpcdFx0aWYgKHJldCkge1xuMTMwMjpcdFx0XHRydHdfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIGluaXQgVVNCIFRYXFxuXCYjMzQ7KTtcbjEzMDM6XHRcdFx0Z290byBlcnJfZGVzdHJveV91c2I7XG4xMzA0Olx0XHR9XG4xMzA1Olx0XG4xMzA2Olx0XHRyZXQgPSBydHdfdXNiX2luaXRfcngocnR3ZGV2KTtcbjEzMDc6XHRcdGlmIChyZXQpIHtcbjEzMDg6XHRcdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBpbml0IFVTQiBSWFxcblwmIzM0Oyk7XG4xMzA5Olx0XHRcdGdvdG8gZXJyX2Rlc3Ryb3lfdHh3cTtcbjEzMTA6XHRcdH1cbjEzMTE6XHRcbjEzMTI6XHRcdHJldCA9IHJ0d19jaGlwX2luZm9fc2V0dXAocnR3ZGV2KTtcbjEzMTM6XHRcdGlmIChyZXQpIHtcbjEzMTQ6XHRcdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZXR1cCBjaGlwIGluZm9ybWF0aW9uXFxuXCYjMzQ7KTtcbjEzMTU6XHRcdFx0Z290byBlcnJfZGVzdHJveV9yeHdxO1xuMTMxNjpcdFx0fVxuMTMxNzpcdFxuMTMxODpcdFx0cnR3X3VzYl9waHlfY2ZnKHJ0d2RldiwgVVNCX1NQRUVEX0hJR0gpO1xuMTMxOTpcdFx0cnR3X3VzYl9waHlfY2ZnKHJ0d2RldiwgVVNCX1NQRUVEX1NVUEVSKTtcbjEzMjA6XHRcbjEzMjE6XHRcdHJldCA9IHJ0d191c2Jfc3dpdGNoX21vZGUocnR3ZGV2KTtcbjEzMjI6XHRcdGlmIChyZXQpIHtcbjEzMjM6XHRcdFx0LyogTm90IGEgZmFpbCwgYnV0IHdlIGRvIG5lZWQgdG8gc2tpcCBydHdfcmVnaXN0ZXJfaHcuICovXG4xMzI0Olx0XHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1VTQiwgXCYjMzQ7c3dpdGNoaW5nIHRvIFVTQiAzIG1vZGVcXG5cJiMzNDspO1xuMTMyNTpcdFx0XHRyZXQgPSAwO1xuMTMyNjpcdFx0XHRnb3RvIGVycl9kZXN0cm95X3J4d3E7XG4xMzI3Olx0XHR9XG4xMzI4Olx0XG4xMzI5Olx0XHRyZXQgPSBydHdfcmVnaXN0ZXJfaHcocnR3ZGV2LCBydHdkZXYtXHUwMDNlaHcpO1xuMTMzMDpcdFx0aWYgKHJldCkge1xuMTMzMTpcdFx0XHRydHdfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIGh3XFxuXCYjMzQ7KTtcbjEzMzI6XHRcdFx0Z290byBlcnJfZGVzdHJveV9yeHdxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU1NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjaGlwJiMzOTtzIGVGdXNlIGluZm9ybWF0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgcnR3ODggZmFtaWx5LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIHNldHVwIGZ1bmN0aW9uLiBTbywgSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgLiBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBzb21ldGhpbmcgcmVsYXRlZCB0byBlRnVzZSBpbmZvLCBnaXZlbiB0aGUgZHJpdmVyIHN0cnVjdHVyZSBhbmQgY29tbW9uIGNvZGluZyBwcmFjdGljZXMsIGlzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gVGhhdCBmdW5jdGlvbiBuYW1lIGl0c2VsZiBpcyBhIHByZXR0eSBzdHJvbmcgaW5kaWNhdG9yLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBwb3NzaWJseSB0aGUgbG9hZGluZyBvciBwYXJzaW5nIG9mIHRoZSBlRnVzZSBkYXRhIGhhcHBlbmluZyBoZXJlLiBGcm9tIHRoZXJlIEkgY2FuIHRyYWNrIHdoZXJlIHRoZSBpbmZvcm1hdGlvbiBpcyB1c2VkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgZm9yIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAwNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDA1Olx0XHRydHdfaGNpX3N0b3AocnR3ZGV2KTtcbjIwMDY6XHRcdHJ0d19tYWNfcG93ZXJfb2ZmKHJ0d2Rldik7XG4yMDA3Olx0fVxuMjAwODpcdFxuMjAwOTpcdHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuMjAxMDpcdHtcbjIwMTE6XHRcdHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWVmdXNlO1xuMjAxMjpcdFx0aW50IHJldDtcbjIwMTM6XHRcbjIwMTQ6XHRcdG11dGV4X2xvY2soXHUwMDI2cnR3ZGV2LVx1MDAzZW11dGV4KTtcbjIwMTU6XHRcbjIwMTY6XHRcdC8qIHBvd2VyIG9uIG1hYyB0byByZWFkIGVmdXNlICovXG4yMDE3Olx0XHRyZXQgPSBydHdfY2hpcF9lZnVzZV9lbmFibGUocnR3ZGV2KTtcbjIwMTg6XHRcdGlmIChyZXQpXG4yMDE5Olx0XHRcdGdvdG8gb3V0X3VubG9jaztcbjIwMjA6XHRcbjIwMjE6XHRcdHJldCA9IHJ0d19wYXJzZV9lZnVzZV9tYXAocnR3ZGV2KTtcbjIwMjI6XHRcdGlmIChyZXQpXG4yMDIzOlx0XHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4yMDI0Olx0XG4yMDI1Olx0XHRyZXQgPSBydHdfZHVtcF9od19mZWF0dXJlKHJ0d2Rldik7XG4yMDI2Olx0XHRpZiAocmV0KVxuMjAyNzpcdFx0XHRnb3RvIG91dF9kaXNhYmxlO1xuMjAyODpcdFxuMjAyOTpcdFx0cmV0ID0gcnR3X2NoZWNrX3N1cHBvcnRlZF9yZmUocnR3ZGV2KTtcbjIwMzA6XHRcdGlmIChyZXQpXG4yMDMxOlx0XHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4yMDMyOlx0XG4yMDMzOlx0XHRpZiAoZWZ1c2UtXHUwMDNlY3J5c3RhbF9jYXAgPT0gMHhmZilcbjIwMzQ6XHRcdFx0ZWZ1c2UtXHUwMDNlY3J5c3RhbF9jYXAgPSAwO1xuMjAzNTpcdFx0aWYgKGVmdXNlLVx1MDAzZXBhX3R5cGVfMmcgPT0gMHhmZilcbjIwMzY6XHRcdFx0ZWZ1c2UtXHUwMDNlcGFfdHlwZV8yZyA9IDA7XG4yMDM3Olx0XHRpZiAoZWZ1c2UtXHUwMDNlcGFfdHlwZV81ZyA9PSAweGZmKVxuMjAzODpcdFx0XHRlZnVzZS1cdTAwM2VwYV90eXBlXzVnID0gMDtcbjIwMzk6XHRcdGlmIChlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyA9PSAweGZmKVxuMjA0MDpcdFx0XHRlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyA9IDA7XG4yMDQxOlx0XHRpZiAoZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgPT0gMHhmZilcbjIwNDI6XHRcdFx0ZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgPSAwO1xuMjA0MzpcdFx0aWYgKGVmdXNlLVx1MDAzZWNoYW5uZWxfcGxhbiA9PSAweGZmKVxuMjA0NDpcdFx0XHRlZnVzZS1cdTAwM2VjaGFubmVsX3BsYW4gPSAweDdmO1xuMjA0NTpcdFx0aWYgKGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiA9PSAweGZmKVxuMjA0NjpcdFx0XHRlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xuMjA0NzpcdFx0aWYgKGVmdXNlLVx1MDAzZWJ0X3NldHRpbmcgXHUwMDI2IEJJVCgwKSlcbjIwNDg6XHRcdFx0ZWZ1c2UtXHUwMDNlc2hhcmVfYW50ID0gdHJ1ZTtcbjIwNDk6XHRcdGlmIChlZnVzZS1cdTAwM2VyZWdkID09IDB4ZmYpXG4yMDUwOlx0XHRcdGVmdXNlLVx1MDAzZXJlZ2QgPSAwO1xuMjA1MTpcdFx0aWYgKGVmdXNlLVx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPT0gMHhmZilcbjIwNTI6XHRcdFx0ZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9IDA7XG4yMDUzOlx0XHRpZiAoZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9PSAweGZmKVxuMjA1NDpcdFx0XHRlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID0gMDtcbjIwNTU6XHRcbjIwNTY6XHRcdGVmdXNlLVx1MDAzZWJ0Y29leCA9IChlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gXHUwMDI2IDB4ZTApID09IDB4MjA7XG4yMDU3Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfMmcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzJnIFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcbjIwNTg6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfMmcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDU5Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfNWcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzVnIFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcbjIwNjA6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfNWcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDYxOlx0XG4yMDYyOlx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjM6XHRcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjQ6XHRcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4yMDY1Olx0XHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbjIwNjY6XHRcdFx0XHRcdCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHZhbGlkIE1BQyBhZGRyZXNzLCB1c2luZyByYW5kb21cXG5cJiMzNDspO1xuMjA2NzpcdFx0XHR9XG4yMDY4Olx0XHR9XG4yMDY5Olx0XG4yMDcwOlx0b3V0X2Rpc2FibGU6XG4yMDcxOlx0XHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XG4yMDcyOlx0XG4yMDczOlx0b3V0X3VubG9jazpcbjIwNzQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZydHdkZXYtXHUwMDNlbXV0ZXgpO1xuMjA3NTpcdFx0cmV0dXJuIHJldDtcbjIwNzY6XHR9XG4yMDc3Olx0XG4yMDc4Olx0c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4yMDc5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE5NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmUsIHVzaW5nIGEgZmlyc3QtcGVyc29uIG5hcnJhdGl2ZSBhbmQgYSBib2xkZWQgaGVhZGVyOgoKKipEaXZpbmcgaW50byB0aGUgUlRXODggS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW5zdGluY3QgaW1tZWRpYXRlbHkgZ29lcyB0byB0aGUgS2NvbmZpZyBmaWxlcy4gV2l0aCBzb21ldGhpbmcgbGlrZSBSVFc4OCwgdGhlIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gbmF2aWdhdGUgdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhcmUsIGFuZCB3aGF0IGNvbmZpZ3VyYWJsZSBvcHRpb25zIGFyZSBhdmFpbGFibGUuIFRoaXMgbGlrZWx5IG1lYW5zIHRyYWNpbmcgdGhyb3VnaCB0aGUgZGVwZW5kZW5jeSBjaGFpbnMsIHN0YXJ0aW5nIHdpdGggYSBnZW5lcmFsIHdpcmVsZXNzIG9yIG5ldHdvcmtpbmcgS2NvbmZpZywgYW5kIGRyaWxsaW5nIGRvd24gdW50aWwgSSByZWFjaCB0aGUgUlRXODgtc3BlY2lmaWMgb3B0aW9ucy4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBzeW1ib2wgdGhhdCBhY3RpdmF0ZXMgdGhlIFJUVzg4IHN1cHBvcnQsIGFuZCB0aGVuIGhvdyBpdCB0aWVzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBGaW5kaW5nIHRoZSByaWdodCBjb25maWcgb3B0aW9ucyBpcyBrZXkgdG8gdHJvdWJsZXNob290aW5nIGFueSBwcm9ibGVtcyBvciBpZiBJIG5lZWQgdG8gYnVpbGQgYSBjdXN0b20ga2VybmVsLCBJIG5lZWQgdG8ga25vdyB3aGF0IHRvIGVuYWJsZS4gTGV04oCZcyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTExPWlmIFJUVzg4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM6Y29uZmlnIFJUVzg4X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OF9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA6Y29uZmlnIFJUVzg4X1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM6Y29uZmlnIFJUVzg4X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNjpjb25maWcgUlRXODhfODgyMkJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg4Xzg4MjJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OF84NzIzWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzozNTpjb25maWcgUlRXODhfODcwM0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM5OmNvbmZpZyBSVFc4OF84NzIzRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDM6Y29uZmlnIFJUVzg4Xzg4MjFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ2OmNvbmZpZyBSVFc4OF84OFhYQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0OTpjb25maWcgUlRXODhfODgyMUFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjUzOmNvbmZpZyBSVFc4OF84ODEyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NTc6Y29uZmlnIFJUVzg4Xzg4MTRBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjYwOmNvbmZpZyBSVFc4OF84ODIyQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NzE6Y29uZmlnIFJUVzg4Xzg4MjJCU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTcyLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6ODI6Y29uZmlnIFJUVzg4Xzg4MjJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo5Mzpjb25maWcgUlRXODhfODgyMkNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUVzg4Xzg4MjJDU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwNS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg4Xzg4MjJDVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEyNjpjb25maWcgUlRXODhfODcyM0RFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI3LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM3OmNvbmZpZyBSVFc4OF84NzIzRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNEUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTQ4OmNvbmZpZyBSVFc4OF84NzIzQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTYyOmNvbmZpZyBSVFc4OF84NzIzRFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNEVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNzM6Y29uZmlnIFJUVzg4Xzg4MjFDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3NC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMUNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE4NDpjb25maWcgUlRXODhfODgyMUNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE5NTpjb25maWcgUlRXODhfODgyMUNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA2OmNvbmZpZyBSVFc4OF84ODIxQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFBVS84ODExQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjE3OmNvbmZpZyBSVFc4OF84ODEyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMjg6Y29uZmlnIFJUVzg4Xzg4MTRBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyOS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIzOTpjb25maWcgUlRXODhfODgxNEFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQwLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODE0QVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjUwOmNvbmZpZyBSVFc4OF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1MS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OCBkZWJ1ZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTg6Y29uZmlnIFJUVzg4X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNTktXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODggZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNjY6Y29uZmlnIFJUVzg4X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNjctXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTc2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgRGVlcCBpbnRvIHRoZSBgUlRXODhgIEtjb25maWcqKgoKT2theSwgdGltZSB0byByZWFsbHkgc2NydXRpbml6ZSB0aGUgYFJUVzg4YCBLY29uZmlnIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgZXZlcnkgY29uZmlndXJhdGlvbiBvcHRpb24gYXZhaWxhYmxlIGZvciB0aGlzIHdpcmVsZXNzIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyB0aHJvdWdoIGVhY2ggb3B0aW9uIGluZGl2aWR1YWxseSwgZGlzc2VjdGluZyBpdHMgcHVycG9zZSwgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGlkZW50aWZ5IGFueSBhcmVhcyBvZiBpbnRlcmVzdCBvciBwb3RlbnRpYWwgY29uZmxpY3RzIOKAkyBwZXJoYXBzIHNvbWUgcG9vcmx5IGRvY3VtZW50ZWQgZGVmYXVsdHMgb3IgY29uZmlndXJhdGlvbiBpbnRlcmFjdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEkmIzM5O20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBtYXBwZWQgb250byB0aGUgS2NvbmZpZyBvcHRpb25zOyB3aGljaCBmZWF0dXJlcyBhcmUgbWFuZGF0b3J5LCBhbmQgd2hpY2ggYXJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSSB3YW50IHRvIGJ1aWxkIGEgdmVyeSBjbGVhciBtZW50YWwgbW9kZWwgb2YgaG93IHRoZSBkcml2ZXIgaXMgc3RydWN0dXJlZCBhbmQgaG93IGRpZmZlcmVudCBoYXJkd2FyZSB2YXJpYW50cyBhcmUgc3VwcG9ydGVkIHRocm91Z2ggdGhpcyBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIG9wdGltaXphdGlvbiwgYXJlYXMgd2hlcmUgZGVmYXVsdCB2YWx1ZXMgc2VlbSBzdWJvcHRpbWFsLCBvciBvcHBvcnR1bml0aWVzIHRvIGV4cG9zZSBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIHRvIHRoZSBlbmQtdXNlci4gRXNzZW50aWFsbHksIEkmIzM5O20gZGlnZ2luZyBmb3IgYSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZSB0byBlbnN1cmUgdGhpcyBkcml2ZXIgaXMgdHVuZWQgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIGZsZXhpYmlsaXR5LCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGdyZWF0ZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgUlRXODhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OC5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OF9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg4X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODhfU0RJT1xuICAyMTpcdFx0dHJpc3RhdGVcbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgUlRXODhfVVNCXG4gIDI0Olx0XHR0cmlzdGF0ZVxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBSVFc4OF84ODIyQlxuICAyNzpcdFx0dHJpc3RhdGVcbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgUlRXODhfODgyMkNcbiAgMzA6XHRcdHRyaXN0YXRlXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFJUVzg4Xzg3MjNYXG4gIDMzOlx0XHR0cmlzdGF0ZVxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBSVFc4OF84NzAzQlxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcdHNlbGVjdCBSVFc4OF84NzIzWFxuICAzODpcdFxuICAzOTpcdGNvbmZpZyBSVFc4OF84NzIzRFxuICA0MDpcdFx0dHJpc3RhdGVcbiAgNDE6XHRcdHNlbGVjdCBSVFc4OF84NzIzWFxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBSVFc4OF84ODIxQ1xuICA0NDpcdFx0dHJpc3RhdGVcbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgUlRXODhfODhYWEFcbiAgNDc6XHRcdHRyaXN0YXRlXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIFJUVzg4Xzg4MjFBXG4gIDUwOlx0XHR0cmlzdGF0ZVxuICA1MTpcdFx0c2VsZWN0IFJUVzg4Xzg4WFhBXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIFJUVzg4Xzg4MTJBXG4gIDU0Olx0XHR0cmlzdGF0ZVxuICA1NTpcdFx0c2VsZWN0IFJUVzg4Xzg4WFhBXG4gIDU2Olx0XG4gIDU3Olx0Y29uZmlnIFJUVzg4Xzg4MTRBXG4gIDU4Olx0XHR0cmlzdGF0ZVxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBSVFc4OF84ODIyQkVcbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAgNjI6XHRcdGRlcGVuZHMgb24gUENJXG4gIDYzOlx0XHRzZWxlY3QgUlRXODhfQ09SRVxuICA2NDpcdFx0c2VsZWN0IFJUVzg4X1BDSVxuICA2NTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjJCXG4gIDY2Olx0XHRoZWxwXG4gIDY3Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQkUgY2hpcHNldFxuICA2ODpcdFxuICA2OTpcdFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuICA3MDpcdFxuICA3MTpcdGNvbmZpZyBSVFc4OF84ODIyQlNcbiAgNzI6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gIDczOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICA3NDpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAgNzU6XHRcdHNlbGVjdCBSVFc4OF9TRElPXG4gIDc2Olx0XHRzZWxlY3QgUlRXODhfODgyMkJcbiAgNzc6XHRcdGhlbHBcbiAgNzg6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCUyBjaGlwc2V0XG4gIDc5Olx0XG4gIDgwOlx0XHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gIDgxOlx0XG4gIDgyOlx0Y29uZmlnIFJUVzg4Xzg4MjJCVVxuICA4MzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuICA4NDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgODU6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gIDg2Olx0XHRzZWxlY3QgUlRXODhfVVNCXG4gIDg3Olx0XHRzZWxlY3QgUlRXODhfODgyMkJcbiAgODg6XHRcdGhlbHBcbiAgODk6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCVSBjaGlwc2V0XG4gIDkwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTk4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogODIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIFVTQiBFbnVtZXJhdGlvbiBQYXRoIG9mIHJ0dzg4KioKCk9rYXksIGxldCYjMzk7cyB0cmFjZSB0aGlzLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIFVTQiBwcm9iZSBmb3IgcnR3ODggKmFjdHVhbGx5KiBoaXRzIGBydHdfY2hpcF9pbmZvX3NldHVwYCBkdXJpbmcgZGV2aWNlIGVudW1lcmF0aW9uLiBSaWdodCwgc28gd2Ugc3RhcnQgaW4gYHJ0d191c2JfcHJvYmVgLiBXZSYjMzk7cmUgYWxsb2NhdGluZyBzb21lIGRhdGEgc3RydWN0dXJlczogdGhlIGBydHdfZGV2YCBhbmQgYHJ0d191c2JgIHN0cnVjdHVyZXMuIFdlJiMzOTtyZSBzZXR0aW5nIHVwIHRoZSBgaWVlZTgwMjExX2h3YCBhbmQgbGlua2luZyBpdCB0byBvdXIgcHJpdmF0ZSBkYXRhLiBUaGUgYHJ0d2Rldi0mZ3Q7Y2hpcGAgcG9pbnRlciwgaW1wb3J0YW50bHksIGlzIHBvcHVsYXRlZCB3aXRoIGBpZC0mZ3Q7ZHJpdmVyX2luZm9gLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjaGlwLXNwZWNpZmljIGluZm9ybWF0aW9uIGNvbWVzIGZyb20uCgpUaGVuLCB3ZSBhbGxvY2F0ZSBSWCBidWZmZXJzLCBpbml0aWFsaXplIHRoZSBjb3JlLCBVU0IgaW50ZXJmYWNlIGFuZCBSWC9UWCBmdW5jdGlvbnMuIE5vdyBoZXJlIGl0IGlzOiB0aGUgY2FsbCB0byBgcnR3X2NoaXBfaW5mb19zZXR1cChydHdkZXYpYC4gUGVyZmVjdCwgc28gZmFyLCBzbyBnb29kLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBJIHdhbnRlZCB0byB2ZXJpZnkgd2FzIGNhbGxlZC4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzICppbnNpZGUqIGBydHdfY2hpcF9pbmZvX3NldHVwYC4gQWgsIGl0IGNhbGxzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHJ0d2RldilgLiBPay4gTG9va2luZyBpbnRvIHRoYXQgZnVuY3Rpb24gbm93LiBUaGlzIGlzIHdoZXJlIHdlIG1pZ2h0IGV4cGVjdCB0byBzZWUgZUZ1c2UgY29uZmlndXJhdGlvbiBoYXBwZW5pbmcuIFdlIHNlZSBjYWxscyB0byBlbmFibGUgdGhlIGVGdXNlLCBwYXJzZSB0aGUgbWFwLCBkdW1wIGhhcmR3YXJlIGZlYXR1cmVzLCBjaGVjayBmb3Igc3VwcG9ydGVkIHJhZGlvIGZyZXF1ZW5jeSBlbGVtZW50LgoKSG9sZCBvbiwgdGhlcmUmIzM5O3Mgc29tZXRoaW5nIGludGVyZXN0aW5nIGhlcmUuIEl0IGxvb2tzIGxpa2UgaXQgdHJpZXMgdG8gcmV0cmlldmUgdGhlIE1BQyBhZGRyZXNzLiBTcGVjaWZpY2FsbHksIGlmIHRoZSByZXRyaWV2ZWQgTUFDIGlzIGludmFsaWQsIGl0IHRyaWVzIHRvIGdldCB0aGUgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHdpdGggYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLiBPdGhlcndpc2UsIGlmIHRoZSBjYWxsIGZhaWxzLCB3ZSYjMzk7cmUgZ2VuZXJhdGluZyBhIHJhbmRvbSBNQUMgYWRkcmVzcyBhbmQgaXNzdWluZyBhIHdhcm5pbmcuIEkgbmVlZCB0byBjaGVjayB3aGF0IGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBhY3R1YWxseSBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZpY2VfZ2V0X21hY19hZGRyZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1wbGF0Zm9ybS5jPTE1MD1zdGF0aWMgaW50IHhnYmVfcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBsYXRmb3JtLmMtMjU0LVx0LyogUmV0cmlldmUgdGhlIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBsYXRmb3JtLmM6MjU1Olx0cmV0ID0gZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhkZXYsIHBkYXRhLVx1MDAzZW1hY19hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGxhdGZvcm0uYy0yNTYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTcwMzk9c3RhdGljIGludCB0ZzNfZ2V0X2RldmljZV9hZGRyZXNzKHN0cnVjdCB0ZzMgKnRwLCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzExMy1cdGlmICh0ZzNfaXNfZGVmYXVsdF9tYWNfYWRkcmVzcyhhZGRyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3MTE0Olx0XHRyZXR1cm4gZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhcdTAwMjZ0cC1cdTAwM2VwZGV2LVx1MDAzZWRldiwgYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzExNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz0xMDg0PXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEwOTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzoxMDk4Olx0aWYgKCFkZXZpY2VfZ2V0X21hY19hZGRyZXNzKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBtYWNfYWRkcikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEwOTktXHRcdGV0aGVyX2FkZHJfY29weShsYW45NjZ4LVx1MDAzZWJhc2VfbWFjLCBtYWNfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC5jPTIzNzk9c3RhdGljIGludCBzbXNjOTExeF9wcm9iZV9jb25maWcoc3RydWN0IHNtc2M5MTF4X3BsYXRmb3JtX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2Mvc21zYzkxMXguYy0yMzkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC5jOjIzOTE6XHRkZXZpY2VfZ2V0X21hY19hZGRyZXNzKGRldiwgY29uZmlnLVx1MDAzZW1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmMtMjM5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYz0zMzUzPXN0YXRpYyBpbnQgYXRoMTBrX2NvcmVfcHJvYmVfZncoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtMzQ1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jOjM0NTI6XHRkZXZpY2VfZ2V0X21hY19hZGRyZXNzKGFyLVx1MDAzZWRldiwgYXItXHUwMDNlbWFjX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtMzQ1My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwNjkzPWludCBhdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDcxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA3MTI6XHRkZXZpY2VfZ2V0X21hY19hZGRyZXNzKGFiLVx1MDAzZWRldiwgbWFjX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDcxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMDA5PXN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwNjItXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwNjM6XHRcdGlmIChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cdTAwM2VkZXYsIGVmdXNlLVx1MDAzZWFkZHIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDY0LVx0XHRcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cdTAwM2VhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzNDAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHRyeWluZyB0byBwaW4gZG93biB3aGVyZSB0aGUgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGZ1bmN0aW9uIGxpdmVzLiBUaGUgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgdG8gYG5ldC9ldGhlcm5ldC9ldGguY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmdW5jdGlvbiYjMzk7cyBuYW1lIGFuZCBnZW5lcmFsIHB1cnBvc2UuIE5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCByZXRyaWV2ZXMgdGhpcyBNQUMgYWRkcmVzcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgd2hldGhlciBpdCBkaXJlY3RseSBxdWVyaWVzIHRoZSBoYXJkd2FyZSwgcmVsaWVzIG9uIGNhY2hlZCB2YWx1ZXMsIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBzb3BoaXN0aWNhdGVkIGxvZ2ljIHdpdGhpbiB0aGUgZnVuY3Rpb24gdG8gaGFuZGxlIGRpZmZlcmVudCBuZXR3b3JrIGludGVyZmFjZXMgb3IgZWRnZSBjYXNlcy4gVGltZSB0byBleGFtaW5lIHRoZSBjb2RlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9ldGhlcm5ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmM9NjA0PUVYUE9SVF9TWU1CT0woZndub2RlX2dldF9tYWNfYWRkcmVzcyk7XG4tLVxubmV0L2V0aGVybmV0L2V0aC5jLTYxMC0gKi9cbm5ldC9ldGhlcm5ldC9ldGguYzo2MTE6aW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICphZGRyKVxubmV0L2V0aGVybmV0L2V0aC5jLTYxMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjcxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBbmFseXNpczogUmVhbHRlayBSVFc4OCBVU0IgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIGRlYWQgZW5kLiBIb3dldmVyLCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgaXMgZXhwb3J0ZWQgYW5kIGNhbGxlZCBieSBgcnR3X3BjaV9wcm9iZWAsIGBydHdfc2Rpb19wcm9iZWAsIGFuZCBpbXBvcnRhbnRseSwgYHJ0d191c2JfcHJvYmVgLiAgVGhlIGtleSBxdWVzdGlvbiBpcywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7IE15IGluaXRpYWwgdGhvdWdodCBpcyB5ZXMsIGxldCYjMzk7cyByZXZpZXcgdGhlIHByb21wdC4KClRoZSBwcm9tcHQgb3V0bGluZXMgc3BlY2lmaWMgc2NlbmFyaW9zIHdoZXJlIGEgcGF0Y2ggaXNuJiMzOTt0IGZ1enphYmxlLCBhbmQgaXQgZmVlbHMgbGlrZSB0aGlzIG1pZ2h0IGJlIHJlYWNoYWJsZSB3aXRoaW4gYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyB3ZSBzaG91bGQgY29uc2lkZXIgd2hldGhlciB0aGlzIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgcHJvbXB0IG5vdGVzIHRoYXQgdGhlIGZ1enppbmcgc2hvdWxkbiYjMzk7dCBpbmNsdWRlIHRlYXJkb3duIGZ1bmN0aW9ucy4KCkFoYSEgVVNCIHdpcmVsZXNzIGRvbmdsZXMgYXJlIHN1cHBvcnRlZCBieSBgcnR3ODhgLCBhbmQgdGhlc2UgKmNhbiogYmUgZW11bGF0ZWQgdmlhIFVTQiBSYXcgR2FkZ2V0IG9yIGBkdW1teV9oY2RgLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBwaWVjZS4gV2hlbiB0aGUgZHJpdmVyIHByb2JlcywgYHJ0d191c2JfcHJvYmVgIHJ1bnMgYHJ0d19jaGlwX2luZm9fc2V0dXBgLCB3aGljaCBwYXJzZXMgdGhlIGVmdXNlIGRhdGEuIElmIHRoZSBFdGhlcm5ldCBNQUMgYWRkcmVzcyBpcyBpbnZhbGlkIChgIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtJmd0O2FkZHIpYCksIHdoaWNoIGlzICpoaWdobHkqIHByb2JhYmxlIHdpdGggZW11bGF0ZWQgb3IgZnV6emVkIFVTQiBkZXNjcmlwdG9ycywgaXQgdGhlbiBjYWxscyBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyYC4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgcGF0aCB0aGF0JiMzOTtzIGludGVyZXN0aW5nIGZvciBmdXp6aW5nLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gIEkgbmVlZCB0byBjaGVjayBgUlRXODhfODgyMkJVYCwgYFJUVzg4Xzg4MjJDVWAsIGBSVFc4OF84NzIzRFVgLCBgUlRXODhfODgyMUNVYCwgYFJUVzg4Xzg4MjFBVWAsIGBSVFc4OF84ODEyQVVgLCBgUlRXODhfODgxNEFVYCwgYFJUVzg4X0NPUkVgLCBhbmQgYFJUVzg4X1VTQmAsIGFuZCB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIHRoZXNlIGRyaXZlcnMgYXJlIGVuYWJsZWQgYW5kIGNhbiBiZSBpbmNsdWRlZCBmb3IgdGVzdGluZy4gR2l2ZW4gdGhhdCB0aGVzZSBVU0IgZGV2aWNlcyBhcmUgbGlzdGVkIGJ5IG5hbWUsIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7bSBnb2luZyB0byBkZXRlcm1pbmUgKipXb3J0aEZ1enppbmc9dHJ1ZSoqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UuKnJ0dzg4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnPTE3PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZzoxODpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWctMTktc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjEzNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVycy4gSSBrbm93IEkgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdgIGFuZCwgbW9yZSBicm9hZGx5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoZXNlIGFyZSB0aGUgZmlsZXMgd2hlcmUgdGhlIGtlcm5lbCYjMzk7cyBidWlsZCBzeXN0ZW0gZGVmaW5lcyB0aGUgc2VsZWN0YWJsZSBmZWF0dXJlcyBhbmQgb3B0aW9ucyBmb3IgdGhlc2UgbmV0d29yayBpbnRlcmZhY2VzLiBCeSBleHBsb3JpbmcgdGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcywgSSBzaG91bGQgYmUgYWJsZSB0byB1bmRlcnN0YW5kIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkgYXJlIGRlcGVuZGVudCBvbiBlYWNoIG90aGVyLCBhbmQgcG9zc2libHksIHdoYXQgc3BlY2lmaWMgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyB3aXRoaW4gdGhlc2UgS2NvbmZpZyBmaWxlcyB0byBjb25maWd1cmUgdGhlIHdpcmVsZXNzIGRyaXZlcnMgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7UmVhbHRlayBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX1JFQUxURUtcbiAgMTQ6XHRcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdcJiMzNDtcbiAgMTY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL0tjb25maWdcJiMzNDtcbiAgMTc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9LY29uZmlnXCYjMzQ7XG4gIDE4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wmIzM0O1xuICAxOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcJiMzNDtcbiAgMjA6XHRcbiAgMjE6XHRlbmRpZiAjIFdMQU5fVkVORE9SX1JFQUxURUtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2OTcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBwb3JlIG92ZXIgZXZlcnkgbGluZSwgZXZlcnkgYGNvbmZpZ2Agc3ltYm9sLCBldmVyeSBgZGVwZW5kcyBvbmAgY2xhdXNlLCBhbmQgZXZlcnkgZGVmYXVsdCB2YWx1ZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgbnVhbmNlczsgcGVyaGFwcyBzb21lIHN1YnRsZSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgdGhpcyBtb2R1bGUsIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgd2lyZWxlc3MgZHJpdmVycywgYW5kIGhvdyBldmVyeXRoaW5nIHRpZXMgdG9nZXRoZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCB0aGUgaW50ZW50IG9mIHRoZSBkZXNpZ25lcnMuIFRoaXMgd2lsbCBnaXZlIG1lIHdoYXQgSSBuZWVkIHRvIGFkdmlzZSBvbiBhIHJlbGF0ZWQgdG9waWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgUlRXODhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OC5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OF9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg4X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODhfU0RJT1xuICAyMTpcdFx0dHJpc3RhdGVcbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgUlRXODhfVVNCXG4gIDI0Olx0XHR0cmlzdGF0ZVxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBSVFc4OF84ODIyQlxuICAyNzpcdFx0dHJpc3RhdGVcbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgUlRXODhfODgyMkNcbiAgMzA6XHRcdHRyaXN0YXRlXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFJUVzg4Xzg3MjNYXG4gIDMzOlx0XHR0cmlzdGF0ZVxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBSVFc4OF84NzAzQlxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcdHNlbGVjdCBSVFc4OF84NzIzWFxuICAzODpcdFxuICAzOTpcdGNvbmZpZyBSVFc4OF84NzIzRFxuICA0MDpcdFx0dHJpc3RhdGVcbiAgNDE6XHRcdHNlbGVjdCBSVFc4OF84NzIzWFxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBSVFc4OF84ODIxQ1xuICA0NDpcdFx0dHJpc3RhdGVcbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgUlRXODhfODhYWEFcbiAgNDc6XHRcdHRyaXN0YXRlXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIFJUVzg4Xzg4MjFBXG4gIDUwOlx0XHR0cmlzdGF0ZVxuICA1MTpcdFx0c2VsZWN0IFJUVzg4Xzg4WFhBXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIFJUVzg4Xzg4MTJBXG4gIDU0Olx0XHR0cmlzdGF0ZVxuICA1NTpcdFx0c2VsZWN0IFJUVzg4Xzg4WFhBXG4gIDU2Olx0XG4gIDU3Olx0Y29uZmlnIFJUVzg4Xzg4MTRBXG4gIDU4Olx0XHR0cmlzdGF0ZVxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBSVFc4OF84ODIyQkVcbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAgNjI6XHRcdGRlcGVuZHMgb24gUENJXG4gIDYzOlx0XHRzZWxlY3QgUlRXODhfQ09SRVxuICA2NDpcdFx0c2VsZWN0IFJUVzg4X1BDSVxuICA2NTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjJCXG4gIDY2Olx0XHRoZWxwXG4gIDY3Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQkUgY2hpcHNldFxuICA2ODpcdFxuICA2OTpcdFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuICA3MDpcdFxuICA3MTpcdGNvbmZpZyBSVFc4OF84ODIyQlNcbiAgNzI6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkJTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gIDczOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICA3NDpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAgNzU6XHRcdHNlbGVjdCBSVFc4OF9TRElPXG4gIDc2Olx0XHRzZWxlY3QgUlRXODhfODgyMkJcbiAgNzc6XHRcdGhlbHBcbiAgNzg6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCUyBjaGlwc2V0XG4gIDc5Olx0XG4gIDgwOlx0XHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gIDgxOlx0XG4gIDgyOlx0Y29uZmlnIFJUVzg4Xzg4MjJCVVxuICA4MzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuICA4NDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgODU6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gIDg2Olx0XHRzZWxlY3QgUlRXODhfVVNCXG4gIDg3Olx0XHRzZWxlY3QgUlRXODhfODgyMkJcbiAgODg6XHRcdGhlbHBcbiAgODk6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCVSBjaGlwc2V0XG4gIDkwOlx0XG4gIDkxOlx0XHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAgOTI6XHRcbiAgOTM6XHRjb25maWcgUlRXODhfODgyMkNFXG4gIDk0Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gIDk1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA5NjpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAgOTc6XHRcdHNlbGVjdCBSVFc4OF9QQ0lcbiAgOTg6XHRcdHNlbGVjdCBSVFc4OF84ODIyQ1xuICA5OTpcdFx0aGVscFxuIDEwMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkNFIGNoaXBzZXRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMDgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBydHc4OCBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBkaXZlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdgIGZpbGUuIEkmIzM5O20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiB0aGVzZSBLY29uZmlnIGZpbGVzLCBzbyBJIGhhdmUgYSBwcmV0dHkgZ29vZCBpZGVhIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gSSBuZWVkIHRvIHNlZSBob3cgUmVhbHRlayYjMzk7cyBydHc4OCBkcml2ZXIgaXMgY29uZmlndXJlZCwgcGFydGljdWxhcmx5IHRoZSBkZXBlbmRlbmNpZXMsIG9wdGlvbnMsIGFuZCBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgb3IgaGFyZHdhcmUgc3VwcG9ydCB0aGV5JiMzOTtyZSBleHBvc2luZy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGEgaGllcmFyY2hpY2FsIG9yZ2FuaXphdGlvbiwgd2l0aCB0b3AtbGV2ZWwgb3B0aW9ucyBlbmNvbXBhc3NpbmcgYnJvYWRlciBkcml2ZXIgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZW4gbmVzdGVkIGNvbmZpZ3VyYXRpb25zIGZvciB0aGluZ3MgbGlrZSBzcGVjaWZpYyBjaGlwc2V0cywgcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcywgZGVidWdnaW5nIG9wdGlvbnMsIGFuZCByZWd1bGF0b3J5IGRvbWFpbiBjaG9pY2VzLgoKTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXNuJiMzOTt0IGp1c3QgdG8gKnVuZGVyc3RhbmQqIGl0OyBJJiMzOTttIHRyeWluZyB0byBtZW50YWxseSBtYXAgaXQgYWdhaW5zdCB0aGUgZXhpc3Rpbmcgd2lyZWxlc3Mgc3RhY2ssIGFuZCBob3cgSSYjMzk7ZCBhcHByb2FjaCBpbnRlZ3JhdGluZyBvciBtb2RpZnlpbmcgaXQgaWYgSSBuZWVkZWQgdG8uIFNwZWNpZmljYWxseSwgSeKAmWxsIGxvb2sgZm9yIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgc3BlY2lhbCBhdHRlbnRpb24gZHVyaW5nIGJ1aWxkLCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcy4gSSYjMzk7bGwgYmUgbm90aW5nIGRvd24gYW55IG5vbi1vYnZpb3VzIGRlcGVuZGVuY2llcyBvciBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIHRyaXAgbWUgdXAgbGF0ZXIuIEkmIzM5O20ga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHVubmVjZXNzYXJpbHkgY29tcGxleCBvciB0aGF0IGRldmlhdGVzIGZyb20gY29tbW9uIEtjb25maWcgY29udmVudGlvbnMsIGFzIHRob3NlIGFyZSBwb3RlbnRpYWwgcmVkIGZsYWdzIGZvciBmdXR1cmUgbWFpbnRlbmFuY2UgaXNzdWVzLiBIb3BlZnVsbHksIHRoaXMgS2NvbmZpZyBpcyB3ZWxsLXN0cnVjdHVyZWQgYW5kIGZvbGxvd3MgYmVzdCBwcmFjdGljZXM7IGEgY2xlYW4gYW5kIHJlYWRhYmxlIEtjb25maWcgbWFrZXMgZXZlcnl0aGluZyBtdWNoIGVhc2llciBkb3duIHRoZSByb2FkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMTpcdFxuIDEwMjpcdFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDEwMzpcdFxuIDEwNDpcdGNvbmZpZyBSVFc4OF84ODIyQ1NcbiAxMDU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTA2Olx0XHRkZXBlbmRzIG9uIE1NQ1xuIDEwNzpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAxMDg6XHRcdHNlbGVjdCBSVFc4OF9TRElPXG4gMTA5Olx0XHRzZWxlY3QgUlRXODhfODgyMkNcbiAxMTA6XHRcdGhlbHBcbiAxMTE6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDUyBjaGlwc2V0XG4gMTEyOlx0XG4gMTEzOlx0XHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMTE0Olx0XG4gMTE1Olx0Y29uZmlnIFJUVzg4Xzg4MjJDVVxuIDExNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDExNzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAxMTg6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTE5Olx0XHRzZWxlY3QgUlRXODhfVVNCXG4gMTIwOlx0XHRzZWxlY3QgUlRXODhfODgyMkNcbiAxMjE6XHRcdGhlbHBcbiAxMjI6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDVSBjaGlwc2V0XG4gMTIzOlx0XG4gMTI0Olx0XHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxMjU6XHRcbiAxMjY6XHRjb25maWcgUlRXODhfODcyM0RFXG4gMTI3Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNERSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTI4Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDEyOTpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAxMzA6XHRcdHNlbGVjdCBSVFc4OF9QQ0lcbiAxMzE6XHRcdHNlbGVjdCBSVFc4OF84NzIzRFxuIDEzMjpcdFx0aGVscFxuIDEzMzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODcyM0RFIGNoaXBzZXRcbiAxMzQ6XHRcbiAxMzU6XHRcdCAgODAyLjExbiBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDEzNjpcdFxuIDEzNzpcdGNvbmZpZyBSVFc4OF84NzIzRFNcbiAxMzg6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0RTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTM5Olx0XHRkZXBlbmRzIG9uIE1NQ1xuIDE0MDpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAxNDE6XHRcdHNlbGVjdCBSVFc4OF9TRElPXG4gMTQyOlx0XHRzZWxlY3QgUlRXODhfODcyM0RcbiAxNDM6XHRcdGhlbHBcbiAxNDQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg3MjNEUyBjaGlwc2V0XG4gMTQ1Olx0XG4gMTQ2Olx0XHQgIDgwMi4xMW4gU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxNDc6XHRcbiAxNDg6XHRjb25maWcgUlRXODhfODcyM0NTXG4gMTQ5Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDE1MDpcdFx0ZGVwZW5kcyBvbiBNTUNcbiAxNTE6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTUyOlx0XHRzZWxlY3QgUlRXODhfU0RJT1xuIDE1MzpcdFx0c2VsZWN0IFJUVzg4Xzg3MDNCXG4gMTU0Olx0XHRoZWxwXG4gMTU1Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBlbmFibGUgc3VwcG9ydCBmb3IgODcyM0NTIGNoaXBzZXQgKEVYUEVSSU1FTlRBTClcbiAxNTY6XHRcbiAxNTc6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB0aGUgODcyM0NTIDgwMi4xMW4gU0RJT1xuIDE1ODpcdFx0ICB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXIuXG4gMTU5Olx0XG4gMTYwOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcnR3ODhfODcyM2NzLlxuIDE2MTpcdFxuIDE2MjpcdGNvbmZpZyBSVFc4OF84NzIzRFVcbiAxNjM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0RVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAxNjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gMTY1Olx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDE2NjpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDE2NzpcdFx0c2VsZWN0IFJUVzg4Xzg3MjNEXG4gMTY4Olx0XHRoZWxwXG4gMTY5Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4NzIzRFUgY2hpcHNldFxuIDE3MDpcdFxuIDE3MTpcdFx0ICA4MDIuMTFuIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxNzI6XHRcbiAxNzM6XHRjb25maWcgUlRXODhfODgyMUNFXG4gMTc0Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTc1Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDE3NjpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAxNzc6XHRcdHNlbGVjdCBSVFc4OF9QQ0lcbiAxNzg6XHRcdHNlbGVjdCBSVFc4OF84ODIxQ1xuIDE3OTpcdFx0aGVscFxuIDE4MDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMUNFIGNoaXBzZXRcbiAxODE6XHRcbiAxODI6XHRcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxODM6XHRcbiAxODQ6XHRjb25maWcgUlRXODhfODgyMUNTXG4gMTg1Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDE4NjpcdFx0ZGVwZW5kcyBvbiBNTUNcbiAxODc6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTg4Olx0XHRzZWxlY3QgUlRXODhfU0RJT1xuIDE4OTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjFDXG4gMTkwOlx0XHRoZWxwXG4gMTkxOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIxQ1MgY2hpcHNldFxuIDE5MjpcdFxuIDE5MzpcdFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDE5NDpcdFxuIDE5NTpcdGNvbmZpZyBSVFc4OF84ODIxQ1VcbiAxOTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMUNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAxOTc6XHRcdGRlcGVuZHMgb24gVVNCXG4gMTk4Olx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDE5OTpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDIwMDpcdFx0c2VsZWN0IFJUVzg4Xzg4MjFDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTE0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgaGVhcnQgb2YgdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBnZXQgc3BlY2lmaWMgYW5kIHplcm8gaW4gb24gbGluZXMgMjAxIHRocm91Z2ggMjcwIG9mIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBmdW5jdGlvbmFsaXRpZXMgb2YgdGhpcyBkcml2ZXIgYXJlIGRlZmluZWQgYW5kIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSSB3YW50IHRvIHNlZSB3aGljaCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCB0aGUgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZSBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cywgYW5kIGhvdyB0aGUgZGV2ZWxvcGVycyBoYXZlIHN0cnVjdHVyZWQgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgZGVzaWduIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIGN1c3RvbWl6YXRpb24gb3IgZGVidWdnaW5nLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgbWl4IG9mIGdlbmVyYWwgb3B0aW9ucyByZWxhdGVkIHRvIFBIWSBwYXJhbWV0ZXJzLCBwb3dlciBtYW5hZ2VtZW50LCByZWd1bGF0b3J5IGRvbWFpbiBzZXR0aW5ncywgYW5kIHBvc3NpYmx5IHNvbWUgc3BlY2lmaWMgaGFyZHdhcmUtcmVsYXRlZCBjb25maWd1cmF0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSBSZWFsdGVrIGNoaXBzZXRzIHN1cHBvcnRlZCB3aXRoaW4gdGhpcyBLY29uZmlnIHNlY3Rpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBrZXkgaGVyZeKAlHdoaWNoIG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgbXVzdCBiZSBlbmFibGVkIGZvciBhIGdpdmVuIFJlYWx0ZWstc3BlY2lmaWMgb3B0aW9uIHRvIHdvcms/IEkmIzM5O20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCBjZXJ0YWluIG9wdGlvbnMgd2lsbCBiZSBndWFyZGVkIGJ5IHNwZWNpZmljIGBpZmRlZmAgc3RhdGVtZW50cyBvciBgc2VsZWN0YCBkaXJlY3RpdmVzLCB0byBzdXBwb3J0IGRpZmZlcmVudCBoYXJkd2FyZSByZXZpc2lvbnMgb3IgY29uZmlndXJhdGlvbnMuIFRoaXMgd2lsbCBob3BlZnVsbHkgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBkZXNpZ24gY2hvaWNlcyBtYWRlIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgYWNyb3NzIHZhcmlvdXMgUmVhbHRlayB3aXJlbGVzcyBkZXZpY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAxOlx0XHRoZWxwXG4gMjAyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIxQ1UgY2hpcHNldFxuIDIwMzpcdFxuIDIwNDpcdFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMjA1Olx0XG4gMjA2Olx0Y29uZmlnIFJUVzg4Xzg4MjFBVVxuIDIwNzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQVUvODgxMUFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAyMDg6XHRcdGRlcGVuZHMgb24gVVNCXG4gMjA5Olx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDIxMDpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDIxMTpcdFx0c2VsZWN0IFJUVzg4Xzg4MjFBXG4gMjEyOlx0XHRoZWxwXG4gMjEzOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIxQVUgYW5kIDg4MTFBVSBjaGlwc2V0XG4gMjE0Olx0XG4gMjE1Olx0XHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAyMTY6XHRcbiAyMTc6XHRjb25maWcgUlRXODhfODgxMkFVXG4gMjE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMjE5Olx0XHRkZXBlbmRzIG9uIFVTQlxuIDIyMDpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiAyMjE6XHRcdHNlbGVjdCBSVFc4OF9VU0JcbiAyMjI6XHRcdHNlbGVjdCBSVFc4OF84ODEyQVxuIDIyMzpcdFx0aGVscFxuIDIyNDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgxMkFVIGNoaXBzZXRcbiAyMjU6XHRcbiAyMjY6XHRcdCAgODAyLjExYWMgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDIyNzpcdFxuIDIyODpcdGNvbmZpZyBSVFc4OF84ODE0QUVcbiAyMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAyMzA6XHRcdGRlcGVuZHMgb24gUENJXG4gMjMxOlx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDIzMjpcdFx0c2VsZWN0IFJUVzg4X1BDSVxuIDIzMzpcdFx0c2VsZWN0IFJUVzg4Xzg4MTRBXG4gMjM0Olx0XHRoZWxwXG4gMjM1Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODE0QUUgY2hpcHNldFxuIDIzNjpcdFxuIDIzNzpcdFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxuIDIzODpcdFxuIDIzOTpcdGNvbmZpZyBSVFc4OF84ODE0QVVcbiAyNDA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxNEFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbiAyNDE6XHRcdGRlcGVuZHMgb24gVVNCXG4gMjQyOlx0XHRzZWxlY3QgUlRXODhfQ09SRVxuIDI0MzpcdFx0c2VsZWN0IFJUVzg4X1VTQlxuIDI0NDpcdFx0c2VsZWN0IFJUVzg4Xzg4MTRBXG4gMjQ1Olx0XHRoZWxwXG4gMjQ2Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODE0QVUgY2hpcHNldFxuIDI0NzpcdFxuIDI0ODpcdFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMjQ5Olx0XG4gMjUwOlx0Y29uZmlnIFJUVzg4X0RFQlVHXG4gMjUxOlx0XHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODggZGVidWcgc3VwcG9ydFwmIzM0O1xuIDI1MjpcdFx0ZGVwZW5kcyBvbiBSVFc4OF9DT1JFXG4gMjUzOlx0XHRoZWxwXG4gMjU0Olx0XHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0XG4gMjU1Olx0XG4gMjU2Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gc2ltcGxpZnkgZGVidWcgcHJvYmxlbXNcbiAyNTc6XHRcbiAyNTg6XHRjb25maWcgUlRXODhfREVCVUdGU1xuIDI1OTpcdFx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg4IGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuIDI2MDpcdFx0ZGVwZW5kcyBvbiBSVFc4OF9DT1JFXG4gMjYxOlx0XHRoZWxwXG4gMjYyOlx0XHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0XG4gMjYzOlx0XG4gMjY0Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gc2ltcGxpZnkgZGVidWcgcHJvYmxlbXNcbiAyNjU6XHRcbiAyNjY6XHRjb25maWcgUlRXODhfTEVEU1xuIDI2NzpcdFx0Ym9vbFxuIDI2ODpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuIDI2OTpcdFx0ZGVmYXVsdCB5XG4gMjcwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNDY0CgkJCQkJCQlvdXRwdXQ6IDI3MQoJCQkJCQkJdGhvdWdodHM6IDcwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRm9jdXNTeW1ib2xzLCBFbmFibGVDb25maWdzLCBhbmQgV29ydGhGdXp6aW5nIGZvciBSVFc4OCBEcml2ZXIgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IHBvaW50cyBmb3IgZnV6emluZyB0aGUgUlRXODggZHJpdmVyLgoKRmlyc3QsIHRoZSAqRm9jdXNTeW1ib2xzKi4gSSBzZWUgYHJ0d19jaGlwX2luZm9fc2V0dXBgIGlzIGEgY3JpdGljYWwgZXhwb3J0ZWQgc3ltYm9sLiBJdCYjMzk7cyB0aGUgb25lIHRoYXQgY2FsbHMgdGhlIHN0YXRpYyBmdW5jdGlvbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAuIE5vdywgYHJ0d191c2JfcHJvYmVgIGNhbGxzIGBydHdfY2hpcF9pbmZvX3NldHVwYCwgYnV0IHRoZXJlIGFyZSBvdGhlciBwcm9iZXMgdG8gY29uc2lkZXIgc3VjaCBhcyBgcnR3X3BjaV9wcm9iZWAsIGFuZCBgcnR3X3NkaW9fcHJvYmVgLiBIb3dldmVyLCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYXBwZWFycyB0byBiZSB0aGUgY2VudHJhbCBlbnRyeSBwb2ludC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBgRVhQT1JUX1NZTUJPTGAgbWVhbnMgaXQmIzM5O3MgKm5vdCogaW5saW5lZCwgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQuIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBpcyBzdGF0aWMsIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aGluIGBydHdfY2hpcF9pbmZvX3NldHVwYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIFNvLCBmb2N1c2luZyBvbiBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYW5kIGJ5IGV4dGVuc2lvbiwgYHJ0d191c2JfcHJvYmVgIHNlZW1zIGxpa2UgYSBnb29kIGFwcHJvYWNoLgoKTmV4dCwgdGhlICpFbmFibGVDb25maWdzKi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQuIFRoZSBsaXN0IHNob3dzIGBSVFc4OGAsIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBzcGVjaWZpYyBjaGlwc2V0cyBsaWtlIGBSVFc4OF84ODIyQlVgLCBgUlRXODhfODgyMkNVYCwgZXRjLiBBbHNvLCBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgZXNzZW50aWFsIGZvciB0aGlzIHRvIHdvcmsuCgpGaW5hbGx5LCBpcyB0aGlzIGNvZGUgKldvcnRoRnV6emluZyo/IExldCYjMzk7cyBnbyB0aHJvdWdoIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4KCjEuICBJcyBpdCBqdXN0IGRvY3VtZW50YXRpb24gb3IgS2NvbmZpZyBjaGFuZ2VzPyBObywgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBjb3JlIGRyaXZlciBmaWxlOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgLiBUaGlzIGlzIGdvb2QuCjIuICBBcmUgdGhlc2UganVzdCBsb2dnaW5nIGNoYW5nZXM/IE5vLCBpdCYjMzk7cyBhZGRpbmcgYSBjYWxsIHRvIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCwgYW5kIHRoZSBjb2RlICppbnRlcmFjdHMgd2l0aCBmaXJtd2FyZSBhbmQgZGV2aWNlIHByb3BlcnRpZXMqIGFuZCwgaW1wb3J0YW50bHksIGFsdGVycyB0aGUgTUFDIGFkZHJlc3MgcmVzb2x1dGlvbiBpZiB0aGUgZWZ1c2UgTUFDIGlzIGJhZC4KMy4gIEFyZSB0aGVzZSBzaW1wbGUgY29uc3RhbnQgY2hhbmdlcz8gTm9wZS4KNC4gIENhbiB0aGlzIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IFllcywgdmlhIFVTQiBlbXVsYXRpb24gdXNpbmcgZHVtbXlcX2hjZCBvciBSYXcgR2FkZ2V0Lgo1LiAgSXMgdGhpcyBzb21lIGVzb3RlcmljIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcj8gTm8sIGl0IHN1cHBvcnRzIFVTQiBkZXZpY2VzLgo2LiAgQXJlIHRoZXNlIHRlYXJkb3duIGNhbGxiYWNrcz8gTm8uCgpUaGVyZWZvcmUsICpXb3J0aEZ1enppbmcqIGlzIGluZGVlZCB0cnVlLCBhbmQgdGhpcyBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGJ1aWxkcyBjbGVhbmx5IGFuZCB0aGVuIEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODhfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJCVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQ1UmIzM0OywKICAgICYjMzQ7UlRXODhfODcyM0RVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjFDVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIxQVUmIzM0OywKICAgICYjMzQ7UlRXODhfODgxMkFVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MTRBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHdfY2hpcF9pbmZvX3NldHVwJiMzNDssCiAgICAmIzM0O3J0d191c2JfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1BQyBhZGRyZXNzIHNldHVwIGxvZ2ljIGluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIChjYWxsZWQgZHVyaW5nIGNoaXAgaW5mbyBzZXR1cCkgdG8gYXR0ZW1wdCBmZXRjaGluZyBhIE1BQyBhZGRyZXNzIHZpYSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGdlbmVyYXRpbmcgYSByYW5kb20gTUFDIGFkZHJlc3MuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgZm9yIFVTQi1iYXNlZCBydHc4OCBXaUZpIGRldmljZXMgdGhhdCBjYW4gYmUgZW11bGF0ZWQgYW5kIGZ1enplZCB2aWEgVVNCIGdhZGdldC9SYXcgR2FkZ2V0IGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODhfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJCVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQ1UmIzM0OywKICAgICYjMzQ7UlRXODhfODcyM0RVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjFDVSYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIxQVUmIzM0OywKICAgICYjMzQ7UlRXODhfODgxMkFVJiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MTRBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHdfY2hpcF9pbmZvX3NldHVwJiMzNDssCiAgICAmIzM0O3J0d191c2JfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1BQyBhZGRyZXNzIHNldHVwIGxvZ2ljIGluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIChjYWxsZWQgZHVyaW5nIGNoaXAgaW5mbyBzZXR1cCkgdG8gYXR0ZW1wdCBmZXRjaGluZyBhIE1BQyBhZGRyZXNzIHZpYSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGdlbmVyYXRpbmcgYSByYW5kb20gTUFDIGFkZHJlc3MuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgZm9yIFVTQi1iYXNlZCBydHc4OCBXaUZpIGRldmljZXMgdGhhdCBjYW4gYmUgZW11bGF0ZWQgYW5kIGZ1enplZCB2aWEgVVNCIGdhZGdldC9SYXcgR2FkZ2V0IGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgIG1vZGlmaWVzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIHNvIHRoYXQgd2hlbiBhbiBpbnZhbGlkIE1BQyBhZGRyZXNzIGlzIHJlYWQgZnJvbSB0aGUgZWZ1c2UsIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdG8gZmV0Y2ggYSB2YWxpZCBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSAvIGZpcm13YXJlIG5vZGUgb3IgTlZNRU0gdXNpbmcgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyKClgLiBCb3RoIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIChvbiBzdWNjZXNzKSBhbmQgYGV0aF9yYW5kb21fYWRkcigpYCAob24gZmFsbGJhY2spIGNvbXBsZXRlbHkgb3ZlcndyaXRlIGFuZCBpbml0aWFsaXplIGFsbCBgRVRIX0FMRU5gIGJ5dGVzIG9mIGBlZnVzZS1cdTAwM2VhZGRyYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnJhbmNoIGNvbmRpdGlvbnMgYXJlIGludHJvZHVjZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTQ6MTU6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jCmluZGV4IGNkOTI1NDM3MGZjYzcuLjBmMjM0OThiNWM5NmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jCkBAIC0yMDYwLDggJiM0MzsyMDYwLDExIEBAIHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KQogCWVmdXNlLSZndDtleHRfbG5hXzVnID0gZWZ1c2UtJmd0O2xuYV90eXBlXzVnICZhbXA7IEJJVCgzKSA/IDEgOiAwOwogCiAJaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKGVmdXNlLSZndDthZGRyKSkgewotCQlldGhfcmFuZG9tX2FkZHIoZWZ1c2UtJmd0O2FkZHIpOwotCQlkZXZfd2FybihydHdkZXYtJmd0O2RldiwgJiMzNDtlZnVzZSBNQUMgaW52YWxpZCwgdXNpbmcgcmFuZG9tXG4mIzM0Oyk7CiYjNDM7CQlpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtJmd0O2RldiwgZWZ1c2UtJmd0O2FkZHIpKSB7CiYjNDM7CQkJZXRoX3JhbmRvbV9hZGRyKGVmdXNlLSZndDthZGRyKTsKJiM0MzsJCQlkZXZfd2FybihydHdkZXYtJmd0O2RldiwKJiM0MzsJCQkJICYjMzQ7ZmFpbGVkIHRvIGdldCB2YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tXG4mIzM0Oyk7CiYjNDM7CQl9CiAJfQogCiBvdXRfZGlzYWJsZToKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJdCBhcHBlYXJzIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW52YWxpZCBNQUMgYWRkcmVzc2VzIHJlYWQgZnJvbSB0aGUgZUZ1c2UuIEJlZm9yZSwgaXQgd291bGQgc2ltcGx5IGdlbmVyYXRlIGEgcmFuZG9tIE1BQy4gTm93LCBpdCYjMzk7cyBhdHRlbXB0aW5nIHRvIG9idGFpbiBhIHZhbGlkIE1BQyBhZGRyZXNzIHVzaW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBiZWZvcmUgcmVzb3J0aW5nIHRvIGEgcmFuZG9tIGdlbmVyYXRpb24uCgpNeSBmaXJzdCBpbXB1bHNlIGlzIHRvIGNvbmZpcm0gdGhlIGxvY2F0aW9uIG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUuIEkgd2FudCB0byBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3IgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZy4gSSYjMzk7bGwgbmVlZCB0byBsb2NhdGUgdGhlIHNlY3Rpb24gb2YgY29kZSBhcm91bmQgbGluZSAyMDYwIGluIHRoYXQgZmlsZS4gSSB0aGluayBJJiMzOTtsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIHF1aWNrbHkgZ2V0IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgY2xhcmlmeSBhbnkgZGVwZW5kZW5jaWVzIG9yIG90aGVyIHJlbGV2YW50IGZhY3RvcnMgYXQgcGxheSB3aXRoIHRoaXMgcGF0Y2guIFRoaXMgYXBwcm9hY2ggd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIGNoYW5nZSYjMzk7cyBpbnRlbnQgYW5kIHBvdGVudGlhbCBpbXBhY3QgbW9yZSBlZmZlY3RpdmVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjA0NTpcdFx0aWYgKGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiA9PSAweGZmKVxuMjA0NjpcdFx0XHRlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xuMjA0NzpcdFx0aWYgKGVmdXNlLVx1MDAzZWJ0X3NldHRpbmcgXHUwMDI2IEJJVCgwKSlcbjIwNDg6XHRcdFx0ZWZ1c2UtXHUwMDNlc2hhcmVfYW50ID0gdHJ1ZTtcbjIwNDk6XHRcdGlmIChlZnVzZS1cdTAwM2VyZWdkID09IDB4ZmYpXG4yMDUwOlx0XHRcdGVmdXNlLVx1MDAzZXJlZ2QgPSAwO1xuMjA1MTpcdFx0aWYgKGVmdXNlLVx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPT0gMHhmZilcbjIwNTI6XHRcdFx0ZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9IDA7XG4yMDUzOlx0XHRpZiAoZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9PSAweGZmKVxuMjA1NDpcdFx0XHRlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID0gMDtcbjIwNTU6XHRcbjIwNTY6XHRcdGVmdXNlLVx1MDAzZWJ0Y29leCA9IChlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gXHUwMDI2IDB4ZTApID09IDB4MjA7XG4yMDU3Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfMmcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzJnIFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcbjIwNTg6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfMmcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDU5Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfNWcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzVnIFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcbjIwNjA6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfNWcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDYxOlx0XG4yMDYyOlx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjM6XHRcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjQ6XHRcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4yMDY1Olx0XHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbjIwNjY6XHRcdFx0XHRcdCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHZhbGlkIE1BQyBhZGRyZXNzLCB1c2luZyByYW5kb21cXG5cJiMzNDspO1xuMjA2NzpcdFx0XHR9XG4yMDY4Olx0XHR9XG4yMDY5Olx0XG4yMDcwOlx0b3V0X2Rpc2FibGU6XG4yMDcxOlx0XHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XG4yMDcyOlx0XG4yMDczOlx0b3V0X3VubG9jazpcbjIwNzQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZydHdkZXYtXHUwMDNlbXV0ZXgpO1xuMjA3NTpcdFx0cmV0dXJuIHJldDtcbjIwNzY6XHR9XG4yMDc3Olx0XG4yMDc4Olx0c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4yMDc5Olx0e1xuMjA4MDpcdFx0c3RydWN0IHJ0d19oYWwgKmhhbCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VoYWw7XG4yMDgxOlx0XHRjb25zdCBzdHJ1Y3QgcnR3X3JmZV9kZWYgKnJmZV9kZWYgPSBydHdfZ2V0X3JmZV9kZWYocnR3ZGV2KTtcbjIwODI6XHRcbjIwODM6XHRcdGlmICghcmZlX2RlZilcbjIwODQ6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjcKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCB0aGlzIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBhbmQgd2hlcmUgaXQmIzM5O3MgdXNlZC4gU2luY2UgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgY29kZWJhc2UsIHRoZSBxdWlja2VzdCB3YXkgdG8gZmluZCBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGEgZnVuY3Rpb24gbGlrZSB0aGlzIGlzIHRvIHNpbXBseSB1c2UgZ3JlcCB0byBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgb2YgaXQuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGFuIGluaXRpYWwgb3ZlcnZpZXcgb2YgaXRzIGNvbnRleHQuIEEgc2ltcGxlIGdyZXAgd2lsbCB0ZWxsIG1lIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQsIHdoZXJlIGl0JiMzOTtzIGNhbGxlZCwgYW5kIHdoYXQga2luZCBvZiBkYXRhIGl0JiMzOTtzIG9wZXJhdGluZyBvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgZXNwZWNpYWxseSBpZiB0aGlzIGlzIHNvbWV0aGluZyBuZXcgdGhhdCBJIGFtIGxvb2tpbmcgaW50by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oPTM0PWludCBudm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICphZGRyYnVmKTtcbmluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaDozNTppbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpO1xuaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oLTM2LWludCBkZXZpY2VfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG4tLVxubmV0L2V0aGVybmV0L2V0aC5jPTYwND1FWFBPUlRfU1lNQk9MKGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MpO1xuLS1cbm5ldC9ldGhlcm5ldC9ldGguYy02MTAtICovXG5uZXQvZXRoZXJuZXQvZXRoLmM6NjExOmludCBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgY2hhciAqYWRkcilcbm5ldC9ldGhlcm5ldC9ldGguYy02MTIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTUFDIEFkZHJlc3MgUmV0cmlldmFsKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSYjMzk7cmUgcHVsbGluZyB0aGUgTUFDIGFkZHJlc3MgZnJvbSBhIGRldmljZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBpcyBwcm9iYWJseSBoYW5kbGVkIHNvbWV3aGVyZSBpbiB0aGUgRXRoZXJuZXQgZHJpdmVyIGNvZGUsIHNvIG15IG5leHQgc3RlcCBpcyB0byBoZWFkIG92ZXIgdG8gYG5ldC9ldGhlcm5ldC9ldGguY2AuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gdGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGl0c2VsZiwgYW5kIHRoZW4gaG93IGl0JiMzOTtzIGludGVyZmFjaW5nIHdpdGggdGhlIGhhcmR3YXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB3ZSYjMzk7cmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgTklDLCB3aGV0aGVyIHdlJiMzOTtyZSB1c2luZyByZWdpc3RlcnMsIG9yIERNQSwgYW5kIHdoYXQgYWJzdHJhY3Rpb24gbGF5ZXIgaXMgYmVpbmcgdXNlZCB0byBtYWtlIHRoaXMgaGFwcGVuLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBpbiBob3cgd2UmIzM5O3JlIGZldGNoaW5nIHRoZSBhZGRyZXNzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYwNTpcdFxuIDYwNjpcdC8qKlxuIDYwNzpcdCAqIGRldmljZV9nZXRfbWFjX2FkZHJlc3MgLSBHZXQgdGhlIE1BQyBmb3IgYSBnaXZlbiBkZXZpY2VcbiA2MDg6XHQgKiBAZGV2Olx0UG9pbnRlciB0byB0aGUgZGV2aWNlXG4gNjA5Olx0ICogQGFkZHI6XHRBZGRyZXNzIG9mIGJ1ZmZlciB0byBzdG9yZSB0aGUgTUFDIGluXG4gNjEwOlx0ICovXG4gNjExOlx0aW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICphZGRyKVxuIDYxMjpcdHtcbiA2MTM6XHRcdGlmICghZndub2RlX2dldF9tYWNfYWRkcmVzcyhkZXZfZndub2RlKGRldiksIGFkZHIpKVxuIDYxNDpcdFx0XHRyZXR1cm4gMDtcbiA2MTU6XHRcbiA2MTY6XHRcdHJldHVybiBudm1lbV9nZXRfbWFjX2FkZHJlc3MoZGV2LCBhZGRyKTtcbiA2MTc6XHR9XG4gNjE4Olx0RVhQT1JUX1NZTUJPTChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKTtcbiA2MTk6XHRcbiA2MjA6XHQvKipcbiA2MjE6XHQgKiBkZXZpY2VfZ2V0X2V0aGRldl9hZGRyZXNzIC0gU2V0IG5ldGRldiYjMzk7cyBNQUMgYWRkcmVzcyBmcm9tIGEgZ2l2ZW4gZGV2aWNlXG4gNjIyOlx0ICogQGRldjpcdFBvaW50ZXIgdG8gdGhlIGRldmljZVxuIDYyMzpcdCAqIEBuZXRkZXY6XHRQb2ludGVyIHRvIG5ldGRldiB0byB3cml0ZSB0aGUgYWRkcmVzcyB0b1xuIDYyNDpcdCAqXG4gNjI1Olx0ICogV3JhcHBlciBhcm91bmQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpIHdoaWNoIHdyaXRlcyB0aGUgYWRkcmVzc1xuIDYyNjpcdCAqIGRpcmVjdGx5IHRvIG5ldGRldi1cdTAwM2VkZXZfYWRkci5cbiA2Mjc6XHQgKi9cbiA2Mjg6XHRpbnQgZGV2aWNlX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gNjI5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjI2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE1BQyBBZGRyZXNzIFJldHJpZXZhbCoqCgpPa2F5LCBzbyB0aGUgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGZ1bmN0aW9uLi4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBsb2dpYy4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbiB0aGUgc3VyZmFjZSwgYnV0IHRoZXJlIGFyZSBhbHdheXMgbnVhbmNlcy4gTXkgcHJpbWFyeSB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZGVzaWduZWQgdG8gZmV0Y2ggdGhlIE1BQyBhZGRyZXNzLCBhbmQgaXQmIzM5O3MgZG9pbmcgc28gd2l0aCBhIHdlbGwtZGVmaW5lZCBmYWxsYmFjayBtZWNoYW5pc20uIEZpcnN0IGl0JiMzOTtzIHRyeWluZyB0aGUgRlcgbm9kZSBvciBOVm1lbSBhbmQsIHNob3VsZCB0aG9zZSBmYWlsLCBpdCYjMzk7cyBhdHRlbXB0aW5nIHRvIG9idGFpbiBhIHJhbmRvbSBhZGRyZXNzLgoKVGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgaXMgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIGBlZnVzZS0mZ3Q7YWRkcmAgb24gc3VjY2VzcywgaW5kaWNhdGluZyB0aGUgcmV0cmlldmVkIE1BQyBhZGRyZXNzIGlzICpwbGFjZWQqIGluIHRoaXMgc3RydWN0IHZhcmlhYmxlLiBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIHplcm8gdmFsdWUgb24gc3VjY2Vzcywgd2hpY2ggd291bGQgY29uZmlybSB0aGlzIHdyaXRlIG9wZXJhdGlvbi4gR2l2ZW4gdGhhdCwgdGhlIGBlZnVzZS0mZ3Q7YWRkcmAgaXMgd2hlcmUgdGhlIHJlc3VsdCBpcyBmb3VuZCwgYXNzdW1pbmcgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMgd2l0aG91dCBhIG5lZ2F0aXZlIHZhbHVlIHJldHVybmVkLCBzbyBpdCYjMzk7cyBwb3B1bGF0ZWQgd2l0aCBFVEhfQUxFTiBieXRlcy4KCk5vdywgSSBuZWVkIHRvIGxvb2sgY2xvc2VyIGF0IHRoZSBgc3RydWN0IHJ0d19lZnVzZWAuIEkgc2hvdWxkIHVuZGVyc3RhbmQgd2hhdCBgZWZ1c2VgIGlzLCBpbiB0aGlzIGNvbnRleHQsIGFuZCBlbnN1cmUgdGhhdCB0aGUgbWVtb3J5IGxheW91dCBpcyBzdWl0YWJsZSBmb3IgdGhpcyB0eXBlIG9mIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHJ0d19lZnVzZSBcXHsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmg9MTcxMT1zdHJ1Y3QgcnR3X2RtX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTE3OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDoxNzkyOnN0cnVjdCBydHdfZWZ1c2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmgtMTc5My1cdHUzMiBzaXplO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTMxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgcnR3ODggRHJpdmVyJiMzOTtzIE1haW4gSGVhZGVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaGAgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBsaW5lIDE3OTIuIEkga25vdyB0aGlzIGNvZGUgYmFzZSwgSSBjYW4gcHJvYmFibHkgZ3Vlc3Mgd2hhdCBraW5kIG9mIGRhdGEgc3RydWN0dXJlIG9yIG1hY3JvIGRlZmluaXRpb24gSSBzaG91bGQgZmluZCBhdCB0aGF0IGxvY2F0aW9uIGFuZCB3aGF0IGlzIHRoZSBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgcmV2ZWFscyBpdHNlbGYgYXQgdGhhdCBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzkwOlx0fTtcbjE3OTE6XHRcbjE3OTI6XHRzdHJ1Y3QgcnR3X2VmdXNlIHtcbjE3OTM6XHRcdHUzMiBzaXplO1xuMTc5NDpcdFx0dTMyIHBoeXNpY2FsX3NpemU7XG4xNzk1Olx0XHR1MzIgbG9naWNhbF9zaXplO1xuMTc5NjpcdFx0dTMyIHByb3RlY3Rfc2l6ZTtcbjE3OTc6XHRcbjE3OTg6XHRcdHU4IGFkZHJbRVRIX0FMRU5dO1xuMTc5OTpcdFx0dTggY2hhbm5lbF9wbGFuO1xuMTgwMDpcdFx0dTggY291bnRyeV9jb2RlWzJdO1xuMTgwMTpcdFx0dTggcmZfYm9hcmRfb3B0aW9uO1xuMTgwMjpcdFx0dTggcmZlX29wdGlvbjtcbjE4MDM6XHRcdHU4IHBvd2VyX3RyYWNrX3R5cGU7XG4xODA0Olx0XHR1OCB0aGVybWFsX21ldGVyW1JUV19SRl9QQVRIX01BWF07XG4xODA1Olx0XHR1OCB0aGVybWFsX21ldGVyX2s7XG4xODA2Olx0XHR1OCBjcnlzdGFsX2NhcDtcbjE4MDc6XHRcdHU4IGFudF9kaXZfY2ZnO1xuMTgwODpcdFx0dTggYW50X2Rpdl90eXBlO1xuMTgwOTpcdFx0dTggcmVnZDtcbjE4MTA6XHRcdHU4IGFmZTtcbjE4MTE6XHRcbjE4MTI6XHRcdHU4IGxuYV90eXBlXzJnO1xuMTgxMzpcdFx0dTggbG5hX3R5cGVfNWc7XG4xODE0Olx0XHR1OCBnbG5hX3R5cGU7XG4xODE1Olx0XHR1OCBhbG5hX3R5cGU7XG4xODE2Olx0XHRib29sIGV4dF9sbmFfMmc7XG4xODE3Olx0XHRib29sIGV4dF9sbmFfNWc7XG4xODE4Olx0XHR1OCBwYV90eXBlXzJnO1xuMTgxOTpcdFx0dTggcGFfdHlwZV81ZztcbjE4MjA6XHRcdHU4IGdwYV90eXBlO1xuMTgyMTpcdFx0dTggYXBhX3R5cGU7XG4xODIyOlx0XHRib29sIGV4dF9wYV8yZztcbjE4MjM6XHRcdGJvb2wgZXh0X3BhXzVnO1xuMTgyNDpcdFx0dTggdHhfYmJfc3dpbmdfc2V0dGluZ18yZztcbjE4MjU6XHRcdHU4IHR4X2JiX3N3aW5nX3NldHRpbmdfNWc7XG4xODI2Olx0XG4xODI3Olx0XHRib29sIGJ0Y29leDtcbjE4Mjg6XHRcdC8qIGJ0IHNoYXJlIGFudGVubmEgd2l0aCB3aWZpICovXG4xODI5Olx0XHRib29sIHNoYXJlX2FudDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkwNAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGVmdXNlIEluaXRpYWxpemF0aW9uIGluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBlZnVzZWAgZGF0YSBzdHJ1Y3R1cmUgaXMgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBgZWZ1c2VgIGRhdGEgaXMgYWN0dWFsbHkgKmFsbG9jYXRlZCogYW5kICppbml0aWFsaXplZCouIEFyZSB3ZSBzZWVpbmcgYSBzdGF0aWNhbGx5IGRlZmluZWQgYGVmdXNlYCBzb21ld2hlcmUsIG9yIGlzIGl0IGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8gQXJlIHRoZXJlIGFueSBjb25zdHJ1Y3RvcnMgb3IgaW5pdCBmdW5jdGlvbnMgaW52b2x2ZWQ/IFdoZXJlJiMzOTtzIHRoZSBwcmltYXJ5IHNldHVwIGhhcHBlbmluZywgYW5kIHdoYXQmIzM5O3MgdGhlIHR5cGljYWwgd29ya2Zsb3c/IFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBmbGFzaCBpbnRlcmZhY2UgaXMgc3VwcG9zZWQgdG8gYmUgd29ya2luZywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBwb2ludHMgb2YgZmFpbHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMDAzPXN0YXRpYyB2b2lkIHJ0d19jaGlwX2VmdXNlX2Rpc2FibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjAwOTpzdGF0aWMgaW50IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIwOTc9aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjEwNzpcdHJldCA9IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMDgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jPTEwMDc9aW50IHJ0dzg4eHhhX3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTAxODpcdC8qIE92ZXJyaWRlIHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMTktXHRpZiAoY2hpcC1cdTAwM2VpZCA9PSBSVFdfQ0hJUF9UWVBFXzg4MjFBKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMDIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jOjEwMjM6XHQvKiBPdmVycmlkZSBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKCkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMDI0LVx0aWYgKGNoaXAtXHUwMDNlaWQgPT0gUlRXX0NISVBfVFlQRV84ODEyQSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1OAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbiwgZm9jdXNpbmcgb24gdGhlIGNvbnRleHQgYW5kIGxpa2VseSBkZXNpZ24gY29uc2lkZXJhdGlvbnMsIGFzIGlmIGl0JiMzOTtzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGlzc2VjdCBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaW4gdGhlIFJlYWx0ZWsgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBpdCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggdGhlICYjMzQ7ZWZ1c2UmIzM0OyBzdWdnZXN0cyBpdCYjMzk7cyBhIGNyaXRpY2FsIGVhcmx5LXN0YWdlIGZ1bmN0aW9uLCBsaWtlbHkgaW52b2x2ZWQgaW4gcmV0cmlldmluZyBhbmQgc2V0dGluZyB1cCBpbml0aWFsIGNoaXAgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20gbm9uLXZvbGF0aWxlIG1lbW9yeS4gVGhhdCYjMzk7cyBhIGtleSBwcm9jZXNzLgoKSSYjMzk7ZCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZSByZXNwb25zaWJsZSBmb3IgcmVhZGluZyB2aXRhbCBpbmZvcm1hdGlvbiBzdG9yZWQgb24gdGhlIGNoaXAmIzM5O3MgaW50ZXJuYWwgZWxlY3Ryb25pYyBmdXNlLCBvZnRlbiB1c2VkIGZvciBmYWN0b3J5IGNhbGlicmF0aW9uIGRhdGEsIGNoaXAgcmV2aXNpb24gaW5mb3JtYXRpb24sIE1BQyBhZGRyZXNzZXMsIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLCBhbmQgcG9zc2libHkgZXZlbiBzb21lIGJhc2ljIGZpcm13YXJlIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGJlZ2lucy4KCkkmIzM5O20gdGhpbmtpbmcgaXTigJlzIHByb2JhYmx5IHN0cnVjdHVyZWQgdG8gaGFuZGxlIHBvdGVudGlhbCByZWFkIGVycm9ycyBmcm9tIHRoZSBlRnVzZSwgd2l0aCBzb21lIGtpbmQgb2YgZmFsbGJhY2sgb3IgZXJyb3IgaGFuZGxpbmcgaW4gcGxhY2UuIEkgd291bGQgZXhwZWN0IGl0IHRvIGRldGVybWluZSB0aGUgY2hpcCYjMzk7cyBoYXJkd2FyZSByZXZpc2lvbiBiYXNlZCBvbiB0aGUgZUZ1c2UgZGF0YSwgYXMgdGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBmZWF0dXJlIGVuYWJsaW5nIG9yIGRpc2FibGluZy4gSXQgd291bGQgYWxzbyBuZWVkIHRvIGFkZHJlc3MgcG9zc2libGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBkaWZmZXJlbnQgY2hpcCByZXZpc2lvbnMuCgpUaGlzIGZ1bmN0aW9uIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgaW50ZXJhY3QgY2xvc2VseSB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIERhdGEgcmV0cmlldmVkIGhlcmUgd2lsbCBkaWN0YXRlIHdoYXQgZ2V0cyBsb2FkZWQgbGF0ZXIsIGhvdyB0aGUgcG93ZXIgbWFuYWdlbWVudCBpcyBzdHJ1Y3R1cmVkLCBhbmQgd2hpY2ggcmVndWxhdG9yeSBjb25zdHJhaW50cyBhcmUgYXBwbGllZC4gVW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpcyB2aXRhbCBiZWNhdXNlIGEgY29ycnVwdGVkIG9yIGluY29ycmVjdGx5IGNvbmZpZ3VyZWQgZUZ1c2UgY2FuIGxlYWQgdG8gY29tcGxldGUgZmFpbHVyZSBvciBzZXZlcmUgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gb2YgdGhlIHdpcmVsZXNzIGludGVyZmFjZS4gSSYjMzk7bSBpbWFnaW5pbmcgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGxvd2VyIGxldmVsIGhhcmR3YXJlIGFic3RyYWN0aW9uIHRvIHJlYWQgYml0cyBmcm9tIHRoZSBlRnVzZSBhbmQgdGhlbiB0cmFuc2xhdGVzIHRoZSBkYXRhIHRvIG1vcmUgdXNhYmxlIHZhcmlhYmxlcyB0aGF0IGxhdGVyIGZ1bmN0aW9ucyBtYXkgdXRpbGl6ZS4KCk15IGNvbmNlcm4gaXMgdGhhdCwgd2hpbGUgZUZ1c2UgaXMgcmVsaWFibGUsIGVycm9ycyBpbiB0aGUgcmVhZGluZyBwcm9jZXNzIGNhbiBzdGlsbCBoYXBwZW4sIHRoZXJlZm9yZSBJIHdpbGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIGVycm9yIGhhbmRsaW5nIHRvIGFzc3VyZSB0aGUgY2hpcCBydW5zIGFzIGl0IHNob3VsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjAwODpcdFxuMjAwOTpcdHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuMjAxMDpcdHtcbjIwMTE6XHRcdHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWVmdXNlO1xuMjAxMjpcdFx0aW50IHJldDtcbjIwMTM6XHRcbjIwMTQ6XHRcdG11dGV4X2xvY2soXHUwMDI2cnR3ZGV2LVx1MDAzZW11dGV4KTtcbjIwMTU6XHRcbjIwMTY6XHRcdC8qIHBvd2VyIG9uIG1hYyB0byByZWFkIGVmdXNlICovXG4yMDE3Olx0XHRyZXQgPSBydHdfY2hpcF9lZnVzZV9lbmFibGUocnR3ZGV2KTtcbjIwMTg6XHRcdGlmIChyZXQpXG4yMDE5Olx0XHRcdGdvdG8gb3V0X3VubG9jaztcbjIwMjA6XHRcbjIwMjE6XHRcdHJldCA9IHJ0d19wYXJzZV9lZnVzZV9tYXAocnR3ZGV2KTtcbjIwMjI6XHRcdGlmIChyZXQpXG4yMDIzOlx0XHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4yMDI0Olx0XG4yMDI1Olx0XHRyZXQgPSBydHdfZHVtcF9od19mZWF0dXJlKHJ0d2Rldik7XG4yMDI2Olx0XHRpZiAocmV0KVxuMjAyNzpcdFx0XHRnb3RvIG91dF9kaXNhYmxlO1xuMjAyODpcdFxuMjAyOTpcdFx0cmV0ID0gcnR3X2NoZWNrX3N1cHBvcnRlZF9yZmUocnR3ZGV2KTtcbjIwMzA6XHRcdGlmIChyZXQpXG4yMDMxOlx0XHRcdGdvdG8gb3V0X2Rpc2FibGU7XG4yMDMyOlx0XG4yMDMzOlx0XHRpZiAoZWZ1c2UtXHUwMDNlY3J5c3RhbF9jYXAgPT0gMHhmZilcbjIwMzQ6XHRcdFx0ZWZ1c2UtXHUwMDNlY3J5c3RhbF9jYXAgPSAwO1xuMjAzNTpcdFx0aWYgKGVmdXNlLVx1MDAzZXBhX3R5cGVfMmcgPT0gMHhmZilcbjIwMzY6XHRcdFx0ZWZ1c2UtXHUwMDNlcGFfdHlwZV8yZyA9IDA7XG4yMDM3Olx0XHRpZiAoZWZ1c2UtXHUwMDNlcGFfdHlwZV81ZyA9PSAweGZmKVxuMjAzODpcdFx0XHRlZnVzZS1cdTAwM2VwYV90eXBlXzVnID0gMDtcbjIwMzk6XHRcdGlmIChlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyA9PSAweGZmKVxuMjA0MDpcdFx0XHRlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyA9IDA7XG4yMDQxOlx0XHRpZiAoZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgPT0gMHhmZilcbjIwNDI6XHRcdFx0ZWZ1c2UtXHUwMDNlbG5hX3R5cGVfNWcgPSAwO1xuMjA0MzpcdFx0aWYgKGVmdXNlLVx1MDAzZWNoYW5uZWxfcGxhbiA9PSAweGZmKVxuMjA0NDpcdFx0XHRlZnVzZS1cdTAwM2VjaGFubmVsX3BsYW4gPSAweDdmO1xuMjA0NTpcdFx0aWYgKGVmdXNlLVx1MDAzZXJmX2JvYXJkX29wdGlvbiA9PSAweGZmKVxuMjA0NjpcdFx0XHRlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xuMjA0NzpcdFx0aWYgKGVmdXNlLVx1MDAzZWJ0X3NldHRpbmcgXHUwMDI2IEJJVCgwKSlcbjIwNDg6XHRcdFx0ZWZ1c2UtXHUwMDNlc2hhcmVfYW50ID0gdHJ1ZTtcbjIwNDk6XHRcdGlmIChlZnVzZS1cdTAwM2VyZWdkID09IDB4ZmYpXG4yMDUwOlx0XHRcdGVmdXNlLVx1MDAzZXJlZ2QgPSAwO1xuMjA1MTpcdFx0aWYgKGVmdXNlLVx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPT0gMHhmZilcbjIwNTI6XHRcdFx0ZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9IDA7XG4yMDUzOlx0XHRpZiAoZWZ1c2UtXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9PSAweGZmKVxuMjA1NDpcdFx0XHRlZnVzZS1cdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID0gMDtcbjIwNTU6XHRcbjIwNTY6XHRcdGVmdXNlLVx1MDAzZWJ0Y29leCA9IChlZnVzZS1cdTAwM2VyZl9ib2FyZF9vcHRpb24gXHUwMDI2IDB4ZTApID09IDB4MjA7XG4yMDU3Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfMmcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzJnIFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcbjIwNTg6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfMmcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV8yZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDU5Olx0XHRlZnVzZS1cdTAwM2VleHRfcGFfNWcgPSBlZnVzZS1cdTAwM2VwYV90eXBlXzVnIFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcbjIwNjA6XHRcdGVmdXNlLVx1MDAzZWV4dF9sbmFfNWcgPSBlZnVzZS1cdTAwM2VsbmFfdHlwZV81ZyBcdTAwMjYgQklUKDMpID8gMSA6IDA7XG4yMDYxOlx0XG4yMDYyOlx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjM6XHRcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbjIwNjQ6XHRcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4yMDY1Olx0XHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbjIwNjY6XHRcdFx0XHRcdCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHZhbGlkIE1BQyBhZGRyZXNzLCB1c2luZyByYW5kb21cXG5cJiMzNDspO1xuMjA2NzpcdFx0XHR9XG4yMDY4Olx0XHR9XG4yMDY5Olx0XG4yMDcwOlx0b3V0X2Rpc2FibGU6XG4yMDcxOlx0XHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XG4yMDcyOlx0XG4yMDczOlx0b3V0X3VubG9jazpcbjIwNzQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZydHdkZXYtXHUwMDNlbXV0ZXgpO1xuMjA3NTpcdFx0cmV0dXJuIHJldDtcbjIwNzY6XHR9XG4yMDc3Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MzcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYGVmdXNlLSZndDthZGRyYCBiYWNrIHRvIGl0cyBvcmlnaW4uIEZyb20gd2hhdCBJIHJlY2FsbCwgYGVmdXNlLSZndDthZGRyYCBpcyBuZXN0bGVkIHdpdGhpbiBgcnR3ZGV2LSZndDtlZnVzZWAuIEFuZCwgaWYgbXkgbWVtb3J5IGlzIHNlcnZpbmcgbWUgcmlnaHQsIGBydHdkZXZgIGl0c2VsZiBpcyBhbiBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBsYXJnZXIgYHJ0d2RldmAgc3RydWN0dXJlLiBJIGJlbGlldmUgdGhhdCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkLCB0eXBpY2FsbHkgdGhyb3VnaCBga3phbGxvY2AsIGBhbGxvY19ldGhlcmRldmAsIG9yIHBlcmhhcHMgZXZlbiBzb21ldGhpbmcgbGlrZSBgaWVlZTgwMjExX2FsbG9jX2h3YCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IGNvbnRleHQuCgpTbywgdGhlIGNydWNpYWwgbmV4dCBzdGVwIGlzIHBpbnBvaW50aW5nIHByZWNpc2VseSAqd2hlcmUqIHRoZSBgc3RydWN0IHJ0d19kZXZgIGlzIGFsbG9jYXRlZCB3aXRoaW4gdGhpcyBjb2RlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbGlmZWN5Y2xlIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvZiBgZWZ1c2UtJmd0O2FkZHJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19jb3JlX2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MjQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgQ29yZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGBydHdfY29yZWAgc3R1ZmYgaXMgaW5pdGlhbGl6ZWQuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGxvY2F0ZSBlaXRoZXIgdGhlIGBydHdfY29yZV9pbml0YCBmdW5jdGlvbiBpdHNlbGYsIG9yIGZhaWxpbmcgdGhhdCwgSSYjMzk7bGwgdHJ5IHRvIGZpbmQgd2hlcmUgdGhlIGBydHdfZGV2YCB2YXJpYWJsZSBpcyBiZWluZyBhbGxvY2F0ZWQuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSDigJMgdW5kZXJzdGFuZGluZyB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGlzIGNydWNpYWwgZm9yIGRlZXBlciBhbmFseXNpcy4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aG9zZSB0d28gZW50cnkgcG9pbnRzIGFuZCBzZWUgd2hlcmUgdGhlIHRyYWlsIGxlYWRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHdfZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTY2PXN0cnVjdCBydHdfd2F0Y2hfZG9nX2l0ZXJfZGF0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjc6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTY4LVx0c3RydWN0IHJ0d192aWYgKnJ0d3ZpZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzE6c3RhdGljIHZvaWQgcnR3X2R5bmFtaWNfY3NpX3JhdGUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0d192aWYgKnJ0d3ZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTg5PXN0YXRpYyB2b2lkIHJ0d192aWZfd2F0Y2hfZG9nX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDY6c3RhdGljIHZvaWQgcnR3X3N3X2JlYWNvbl9sb3NzX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDctXHRcdFx0XHQgICAgIHN0cnVjdCBydHdfdmlmICpydHd2aWYsIGludCByZWNlaXZlZF9iZWFjb25zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIyND1zdGF0aWMgdm9pZCBydHdfd2F0Y2hfZG9nX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjI1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIyNjpcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMjctXHRcdFx0XHRcdCAgICAgIHdhdGNoX2RvZ193b3JrLndvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTMxMj1zdGF0aWMgdm9pZCBydHdfYzJoX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMzEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjMxNDpcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsIGMyaF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMxNS1cdHN0cnVjdCBza19idWZmICpza2IsICp0bXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MzI0PXN0YXRpYyB2b2lkIHJ0d19pcHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zMjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzI2Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3X2RldiwgaXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMzI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTMzND1zdGF0aWMgdm9pZCBydHdfc3RhX3JjX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMzNy1cdFx0XHRcdFx0ICAgICAgIHJjX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzM4Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IHNpLVx1MDAzZXJ0d2RldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzozNDU6aW50IHJ0d19zdGFfYWRkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zNDYtXHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMzc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzgwOnZvaWQgcnR3X3N0YV9yZW1vdmUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTM4MS1cdFx0ICAgIGJvb2wgZndfZXhpc3QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NDA0PXN0cnVjdCBydHdfZndjZF9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjQxMTpzdGF0aWMgaW50IHJ0d19md2NkX3ByZXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNDM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NDM2OnN0YXRpYyB1OCAqcnR3X2Z3Y2RfbmV4dChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgaXRlbSwgdTMyIHNpemUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00Mzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjQ2MzpzdGF0aWMgdm9pZCBydHdfZndjZF9kdW1wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00NjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjQ3NzpzdGF0aWMgdm9pZCBydHdfZndjZF9mcmVlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgZnJlZV9zZWxmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNDc4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo0OTA6c3RhdGljIGludCBydHdfZndfZHVtcF9jcmFzaF9sb2coc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ5MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NTIwOmludCBydHdfZHVtcF9mdyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCB1MzIgb2NwX3NyYywgdTMyIHNpemUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy01MjEtXHRcdHUzMiBmd2NkX2l0ZW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NTU5PUVYUE9SVF9TWU1CT0wocnR3X2R1bXBfZncpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NTYxOmludCBydHdfZHVtcF9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3QgdTMyIGFkZHIsIGNvbnN0IHUzMiBzaXplKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTYyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz01OTk9c3RhdGljIHZvaWQgcnR3X3Jlc2V0X2tleV9pdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYwNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo2MDU6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYwNi1cdHN0cnVjdCBydHdfc2VjX2Rlc2MgKnNlYyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VzZWM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NjExPXN0YXRpYyB2b2lkIHJ0d19yZXNldF9zdGFfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjYxMzpcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSAoc3RydWN0IHJ0d19kZXYgKilkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTYyMj1zdGF0aWMgdm9pZCBydHdfcmVzZXRfdmlmX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYyMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo2MjQ6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYyNS1cdHN0cnVjdCBydHdfdmlmICpydHd2aWYgPSAoc3RydWN0IHJ0d192aWYgKil2aWYtXHUwMDNlZHJ2X3ByaXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NjM0OnZvaWQgcnR3X2Z3X3JlY292ZXJ5KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTYzOT1FWFBPUlRfU1lNQk9MKHJ0d19md19yZWNvdmVyeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo2NDE6c3RhdGljIHZvaWQgX19md19yZWNvdmVyeV93b3JrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTY3ND1zdGF0aWMgdm9pZCBydHdfZndfcmVjb3Zlcnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6Njc2Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3X2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTY3Ny1cdFx0XHRcdFx0ICAgICAgZndfcmVjb3Zlcnlfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NzEyPXN0YXRpYyB2b2lkIHJ0d190eHFfYmFfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NzE0Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3X2RldiwgYmFfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MTUtXHRzdHJ1Y3QgcnR3X3R4cV9iYV9pdGVyX2RhdGEgZGF0YTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz03MzE9RVhQT1JUX1NZTUJPTChydHdfc2V0X3J4X2ZyZXFfYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo3MzM6dm9pZCBydHdfc2V0X2R0aW1fcGVyaW9kKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IGR0aW1fcGVyaW9kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNzM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo3Mzk6dm9pZCBydHdfdXBkYXRlX2NoYW5uZWwoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggY2VudGVyX2NoYW5uZWwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03NDAtXHRcdFx0dTggcHJpbWFyeV9jaGFubmVsLCBlbnVtIHJ0d19zdXBwb3J0ZWRfYmFuZCBiYW5kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTgyMj12b2lkIHJ0d19nZXRfY2hhbm5lbF9wYXJhbXMoc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTg3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjg3MTp2b2lkIHJ0d19zZXRfY2hhbm5lbChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtODcyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy05MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MTU6dm9pZCBydHdfY2hpcF9wcmVwYXJlX3R4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy05MTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjkyNTpzdGF0aWMgdm9pZCBydHdfdmlmX3dyaXRlX2FkZHIoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIHN0YXJ0LCB1OCAqYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6OTMzOnZvaWQgcnR3X3ZpZl9wb3J0X2NvbmZpZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTM0LVx0XHRcdCBzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTk2ND1zdGF0aWMgdTggaHdfYndfY2FwX3RvX2JpdGFtcCh1OCBid19jYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6OTg0OnN0YXRpYyB2b2lkIHJ0d19od19jb25maWdfcmZfYW50X251bShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBod19hbnRfbnVtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xMTU5PXN0YXRpYyB1NjQgcnR3X3JhdGVfbWFza19yZWNvdmVyKHU2NCByYV9tYXNrLCB1NjQgcmFfbWFza19iYWspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTE2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjExNzA6c3RhdGljIHU2NCBydHdfcmF0ZV9tYXNrX2NmZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3X3N0YV9pbmZvICpzaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTExNzEtXHRcdFx0ICAgICB1NjQgcmFfbWFzaywgYm9vbCBpc192aHRfZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTEyMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxMjEyOnZvaWQgcnR3X3VwZGF0ZV9zdGFfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3X3N0YV9pbmZvICpzaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTEyMTMtXHRcdFx0IGJvb2wgcmVzZXRfcmFfbWFzaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTMzMjppbnQgcnR3X3dhaXRfZmlybXdhcmVfY29tcGxldGlvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTMzMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTM1Mj1FWFBPUlRfU1lNQk9MKHJ0d193YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzNTQ6c3RhdGljIGVudW0gcnR3X2xwc19kZWVwX21vZGUgcnR3X3VwZGF0ZV9scHNfZGVlcF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzU1LVx0XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcnR3X2Z3X3N0YXRlICpmdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTM3NDppbnQgcnR3X3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNDQzPUVYUE9SVF9TWU1CT0wocnR3X3Bvd2VyX29uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNDQ1OnZvaWQgcnR3X2NvcmVfZndfc2Nhbl9ub3RpZnkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBzdGFydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNDYxOnZvaWQgcnR3X2NvcmVfc2Nhbl9zdGFydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQ2Mi1cdFx0XHQgY29uc3QgdTggKm1hY19hZGRyLCBib29sIGh3X3NjYW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQ4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0OTA6dm9pZCBydHdfY29yZV9zY2FuX2NvbXBsZXRlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDkxLVx0XHRcdCAgICBib29sIGh3X3NjYW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTUxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE1MTU6aW50IHJ0d19jb3JlX3N0YXJ0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTUzOTp2b2lkIHJ0d19wb3dlcl9vZmYoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE1NDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTE1NDU9RVhQT1JUX1NZTUJPTChydHdfcG93ZXJfb2ZmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE1NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNTQ3OnZvaWQgcnR3X2NvcmVfc3RvcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU0OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE1NzM6c3RhdGljIHZvaWQgcnR3X2luaXRfaHRfY2FwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTc0LVx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YV9odF9jYXAgKmh0X2NhcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTYwNTpzdGF0aWMgdm9pZCBydHdfaW5pdF92aHRfY2FwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjA2LVx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTY0OTpzdGF0aWMgdTE2IHJ0d19nZXRfbWF4X3NjYW5faWVfbGVuKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNjY0PXN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE2NjU6cnR3X3NiYW5kX2R1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTY2Ni1cdCAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTE2OTE9c3RhdGljIHZvaWQgcnR3X3NldF9zdXBwb3J0ZWRfYmFuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjk0LVx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjk1Olx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldiA9IGh3LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjk2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTE3MjM9c3RhdGljIHZvaWQgcnR3X3ZpZl9zbXBzX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzI1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE3MjY6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3MjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTczNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE3Mzc6dm9pZCBydHdfc2V0X3R4cnhfMXNzKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgdHhyeF8xc3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTc1NDpzdGF0aWMgdm9pZCBfX3VwZGF0ZV9maXJtd2FyZV9mZWF0dXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzU1LVx0XHRcdFx0ICAgICAgc3RydWN0IHJ0d19md19zdGF0ZSAqZncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE3Njk6c3RhdGljIHZvaWQgX191cGRhdGVfZmlybXdhcmVfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc3MC1cdFx0XHRcdCAgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzgzOnN0YXRpYyB2b2lkIF9fdXBkYXRlX2Zpcm13YXJlX2luZm9fbGVnYWN5KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzg0LVx0XHRcdFx0XHQgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzk1OnN0YXRpYyB2b2lkIHVwZGF0ZV9maXJtd2FyZV9pbmZvKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzk2LVx0XHRcdFx0IHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTE4MDQ9c3RhdGljIHZvaWQgcnR3X2xvYWRfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSwgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODA2LVx0c3RydWN0IHJ0d19md19zdGF0ZSAqZncgPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTgwNzpcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBmdy1cdTAwM2VydHdkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODA4LVx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IHJ0d2Rldi1cdTAwM2Vody1cdTAwM2V3aXBoeTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTgzMDpzdGF0aWMgaW50IHJ0d19sb2FkX2Zpcm13YXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGVudW0gcnR3X2Z3X3R5cGUgdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE4MzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE4NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxODY2OnN0YXRpYyBpbnQgcnR3X2NoaXBfcGFyYW1ldGVyX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTkxOTpzdGF0aWMgaW50IHJ0d19jaGlwX2VmdXNlX2VuYWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTkyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTk1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE5NjA6c3RhdGljIGludCBydHdfZHVtcF9od19mZWF0dXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTYxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjAwMzpzdGF0aWMgdm9pZCBydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjAwOTpzdGF0aWMgaW50IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDc4OnN0YXRpYyBpbnQgcnR3X2NoaXBfYm9hcmRfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA3OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwOTc6aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIxMjQ9RVhQT1JUX1NZTUJPTChydHdfY2hpcF9pbmZvX3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMTI2OnN0YXRpYyB2b2lkIHJ0d19zdGF0c19pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTI3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjE0MTppbnQgcnR3X2NvcmVfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjE0Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjIyMj1FWFBPUlRfU1lNQk9MKHJ0d19jb3JlX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIyMjQ6dm9pZCBydHdfY29yZV9kZWluaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyMjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIyNTY9RVhQT1JUX1NZTUJPTChydHdfY29yZV9kZWluaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIyNTg6aW50IHJ0d19yZWdpc3Rlcl9odyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyNTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzNTE9RVhQT1JUX1NZTUJPTChydHdfcmVnaXN0ZXJfaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjM1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzNTM6dm9pZCBydHdfdW5yZWdpc3Rlcl9odyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzNTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzNjE9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMzYyOnZvaWQgcnR3X3N3YXBfcmVnX25ieXRlcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCBzdHJ1Y3QgcnR3X2h3X3JlZyAqcmVnMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzNjMtXHRcdFx0IGNvbnN0IHN0cnVjdCBydHdfaHdfcmVnICpyZWcyLCB1OCBuYnl0ZXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjM3Nj1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzNzc6dm9pZCBydHdfc3dhcF9yZWdfbWFzayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCBzdHJ1Y3QgcnR3X2h3X3JlZyAqcmVnMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzNzgtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnR3X2h3X3JlZyAqcmVnMilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMzg4PXN0cnVjdCBydHdfaXRlcl9wb3J0X3N3aXRjaF9kYXRhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzODk6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjM5MC1cdHN0cnVjdCBydHdfdmlmICpydHd2aWZfYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjM5Mz1zdGF0aWMgdm9pZCBydHdfcG9ydF9zd2l0Y2hfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzOTUtXHRzdHJ1Y3QgcnR3X2l0ZXJfcG9ydF9zd2l0Y2hfZGF0YSAqaXRlcl9kYXRhID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzOTY6XHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gaXRlcl9kYXRhLVx1MDAzZXJ0d2RldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzOTctXHRzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmX3RhcmdldCA9IChzdHJ1Y3QgcnR3X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjQzMjp2b2lkIHJ0d19jb3JlX3BvcnRfc3dpdGNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDMzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yNDQ1PXN0YXRpYyB2b2lkIHJ0d19jaGVja19zdGFfYWN0aXZlX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjQ2MDpib29sIHJ0d19jb3JlX2NoZWNrX3N0YV9hY3RpdmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0NjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyNDY5OnZvaWQgcnR3X2NvcmVfZW5hYmxlX2JlYWNvbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyNDgzOnZvaWQgcnR3X3NldF9hbXBkdV9mYWN0b3Ioc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0ODQtXHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5OTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUMgQWRkcmVzcyBJbml0aWFsaXphdGlvbiBpbiBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKCkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2UuIEluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgLCBpdCYjMzk7cyBjbGVhciB0aGUgcHJpbWFyeSBnb2FsIGlzIHRvIGVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgTUFDIGFkZHJlc3MuIFRoZSBjb3JlIGxvZ2ljIGhpbmdlcyBvbiBgZWZ1c2UtJmd0O2FkZHJgLiAgUHJldmlvdXNseSwgaWYgYGVmdXNlLSZndDthZGRyYCB3YXMgZGVlbWVkIGludmFsaWQgYmFzZWQgb24gYGlzX3ZhbGlkX2V0aGVyX2FkZHIoKWAsIGEgcmFuZG9tIE1BQyBhZGRyZXNzIHdhcyBpbW1lZGlhdGVseSBnZW5lcmF0ZWQgYW5kIGFzc2lnbmVkLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk5vdywgaG93ZXZlciwgYmVmb3JlIHJlc29ydGluZyB0byBhIHJhbmRvbSBNQUMsIGl0JiMzOTtzIGNoZWNraW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi0mZ3Q7ZGV2LCBlZnVzZS0mZ3Q7YWRkcilgLiAgRXNzZW50aWFsbHksIHRoZSBjb2RlIGlzIHNheWluZywgJiMzNDtMZXQmIzM5O3MgKnRyeSogdG8gZ2V0IGEgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIGl0c2VsZiBiZWZvcmUgcmFuZG9tbHkgZ2VuZXJhdGluZyBvbmUuJiMzNDsgIElmIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIHN1Y2NlZWRzIChyZXR1cm5zIDApLCB0aGUgYXNzdW1wdGlvbiBpcyBpdCBwb3B1bGF0ZXMgYGVmdXNlLSZndDthZGRyYCB3aXRoIGEgdmFsaWQgTUFDLiBJZiBpdCBmYWlscyAocmV0dXJucyBub24temVybyksICp0aGVuKiB0aGUgcmFuZG9tIE1BQyBnZW5lcmF0aW9uIGlzIHRyaWdnZXJlZCB2aWEgYGV0aF9yYW5kb21fYWRkcigpYC4gVGhpcyBpcyBnb29kLCBpdCBhbGxvd3MgdGhlIGRldmljZSB0byBoYXZlIHByZWZlcmVuY2UgaW4gcHJvdmlkaW5nIGEgdmFsaWQgTUFDLCBhcyBpdCBzaG91bGQuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0byBzZWUgd2hhdCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgYWN0dWFsbHkgZG9lcy4gIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgaWYgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgICphbHdheXMqIHdyaXRlcyBhIE1BQyB0byBgZWZ1c2UtJmd0O2FkZHJgIG9uIHN1Y2Nlc3MsIG9yIGlmIGl0IGNhbiBwb3RlbnRpYWxseSBsZWF2ZSBpdCB1bmluaXRpYWxpemVkIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gTXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBmd25vZGVfZ2V0X21hY19hZGRyZXNzYCBhbmQgYG52bWVtX2dldF9tYWNfYWRkcmVzc2AsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBNQUMgYWRkcmVzcyByZWFkaW5nIHByb2Nlc3MuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIHZhbGlkYXRpb24gb2YgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z3bm9kZV9nZXRfbWFjX2FkZHJlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aGVybmV0L2V0aC5jPTU1OT1zdGF0aWMgaW50IGZ3bm9kZV9nZXRfbWFjX2FkZHIoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi0tXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTczLS8qKlxubmV0L2V0aGVybmV0L2V0aC5jOjU3NDogKiBmd25vZGVfZ2V0X21hY19hZGRyZXNzIC0gR2V0IHRoZSBNQUMgZnJvbSB0aGUgZmlybXdhcmUgbm9kZVxubmV0L2V0aGVybmV0L2V0aC5jLTU3NS0gKiBAZndub2RlOlx0UG9pbnRlciB0byB0aGUgZmlybXdhcmUgbm9kZVxuLS1cbm5ldC9ldGhlcm5ldC9ldGguYy01OTQtICovXG5uZXQvZXRoZXJuZXQvZXRoLmM6NTk1OmludCBmd25vZGVfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsIGNoYXIgKmFkZHIpXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTk2LXtcbi0tXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjAzLX1cbm5ldC9ldGhlcm5ldC9ldGguYzo2MDQ6RVhQT1JUX1NZTUJPTChmd25vZGVfZ2V0X21hY19hZGRyZXNzKTtcbm5ldC9ldGhlcm5ldC9ldGguYy02MDUtXG4tLVxubmV0L2V0aGVybmV0L2V0aC5jPTYxMT1pbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjEyLXtcbm5ldC9ldGhlcm5ldC9ldGguYzo2MTM6XHRpZiAoIWZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MoZGV2X2Z3bm9kZShkZXYpLCBhZGRyKSlcbm5ldC9ldGhlcm5ldC9ldGguYy02MTQtXHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHNwZWNpZmljIHNlY3Rpb24gb2YgdGhlIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGxpbmVzIDU1OSB0aHJvdWdoIDYwNCBpbiBgbmV0L2V0aGVybmV0L2V0aC5jYC4gTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoaXMgYmxvY2sgbGlrZWx5IGRlYWxzIHdpdGggYSBjcml0aWNhbCBhc3BlY3Qgb2YgRXRoZXJuZXQgb3BlcmF0aW9uLiBJJiMzOTttIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlIHJlbGF0ZWQgdG8gZnJhbWUgdHJhbnNtaXNzaW9uLCByZWNlcHRpb24gaGFuZGxpbmcsIG9yIHBlcmhhcHMgc29tZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIEtub3dpbmcgdGhlIG51YW5jZXMgb2YgRXRoZXJuZXQgaXMgc2Vjb25kIG5hdHVyZSBhdCB0aGlzIHBvaW50LCBzbyBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHNlZ21lbnQgdG8gYmUgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgdG8gcGFyc2UsIGV2ZW4gd2l0aG91dCBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gdW5lYXJ0aCBhbmQgd2hhdCBzcGVjaWZpYyBvcGVyYXRpb24gb2YgdGhlIEV0aGVybmV0IGNhcmQgaXQgaXMgcmVsYXRlZCB0by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU1OTpcdHN0YXRpYyBpbnQgZndub2RlX2dldF9tYWNfYWRkcihzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxuIDU2MDpcdFx0XHRcdCAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjaGFyICphZGRyKVxuIDU2MTpcdHtcbiA1NjI6XHRcdGludCByZXQ7XG4gNTYzOlx0XG4gNTY0Olx0XHRyZXQgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91OF9hcnJheShmd25vZGUsIG5hbWUsIGFkZHIsIEVUSF9BTEVOKTtcbiA1NjU6XHRcdGlmIChyZXQpXG4gNTY2Olx0XHRcdHJldHVybiByZXQ7XG4gNTY3Olx0XG4gNTY4Olx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoYWRkcikpXG4gNTY5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU3MDpcdFx0cmV0dXJuIDA7XG4gNTcxOlx0fVxuIDU3MjpcdFxuIDU3MzpcdC8qKlxuIDU3NDpcdCAqIGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MgLSBHZXQgdGhlIE1BQyBmcm9tIHRoZSBmaXJtd2FyZSBub2RlXG4gNTc1Olx0ICogQGZ3bm9kZTpcdFBvaW50ZXIgdG8gdGhlIGZpcm13YXJlIG5vZGVcbiA1NzY6XHQgKiBAYWRkcjpcdEFkZHJlc3Mgb2YgYnVmZmVyIHRvIHN0b3JlIHRoZSBNQUMgaW5cbiA1Nzc6XHQgKlxuIDU3ODpcdCAqIFNlYXJjaCB0aGUgZmlybXdhcmUgbm9kZSBmb3IgdGhlIGJlc3QgTUFDIGFkZHJlc3MgdG8gdXNlLiAgJiMzOTttYWMtYWRkcmVzcyYjMzk7IGlzXG4gNTc5Olx0ICogY2hlY2tlZCBmaXJzdCwgYmVjYXVzZSB0aGF0IGlzIHN1cHBvc2VkIHRvIGNvbnRhaW4gdG8gXCYjMzQ7bW9zdCByZWNlbnRcJiMzNDsgTUFDXG4gNTgwOlx0ICogYWRkcmVzcy4gSWYgdGhhdCBpc24mIzM5O3Qgc2V0LCB0aGVuICYjMzk7bG9jYWwtbWFjLWFkZHJlc3MmIzM5OyBpcyBjaGVja2VkIG5leHQsXG4gNTgxOlx0ICogYmVjYXVzZSB0aGF0IGlzIHRoZSBkZWZhdWx0IGFkZHJlc3MuICBJZiB0aGF0IGlzbiYjMzk7dCBzZXQsIHRoZW4gdGhlIG9ic29sZXRlXG4gNTgyOlx0ICogJiMzOTthZGRyZXNzJiMzOTsgaXMgY2hlY2tlZCwganVzdCBpbiBjYXNlIHdlJiMzOTtyZSB1c2luZyBhbiBvbGQgZGV2aWNlIHRyZWUuXG4gNTgzOlx0ICpcbiA1ODQ6XHQgKiBOb3RlIHRoYXQgdGhlICYjMzk7YWRkcmVzcyYjMzk7IHByb3BlcnR5IGlzIHN1cHBvc2VkIHRvIGNvbnRhaW4gYSB2aXJ0dWFsIGFkZHJlc3Mgb2ZcbiA1ODU6XHQgKiB0aGUgcmVnaXN0ZXIgc2V0LCBidXQgc29tZSBEVFMgZmlsZXMgaGF2ZSByZWRlZmluZWQgdGhhdCBwcm9wZXJ0eSB0byBiZSB0aGVcbiA1ODY6XHQgKiBNQUMgYWRkcmVzcy5cbiA1ODc6XHQgKlxuIDU4ODpcdCAqIEFsbC16ZXJvIE1BQyBhZGRyZXNzZXMgYXJlIHJlamVjdGVkLCBiZWNhdXNlIHRob3NlIGNvdWxkIGJlIHByb3BlcnRpZXMgdGhhdFxuIDU4OTpcdCAqIGV4aXN0IGluIHRoZSBmaXJtd2FyZSB0YWJsZXMsIGJ1dCB3ZXJlIG5vdCB1cGRhdGVkIGJ5IHRoZSBmaXJtd2FyZS4gIEZvclxuIDU5MDpcdCAqIGV4YW1wbGUsIHRoZSBEVFMgY291bGQgZGVmaW5lICYjMzk7bWFjLWFkZHJlc3MmIzM5OyBhbmQgJiMzOTtsb2NhbC1tYWMtYWRkcmVzcyYjMzk7LCB3aXRoXG4gNTkxOlx0ICogemVybyBNQUMgYWRkcmVzc2VzLiAgU29tZSBvbGRlciBVLUJvb3RzIG9ubHkgaW5pdGlhbGl6ZWQgJiMzOTtsb2NhbC1tYWMtYWRkcmVzcyYjMzk7LlxuIDU5MjpcdCAqIEluIHRoaXMgY2FzZSwgdGhlIHJlYWwgTUFDIGlzIGluICYjMzk7bG9jYWwtbWFjLWFkZHJlc3MmIzM5OywgYW5kICYjMzk7bWFjLWFkZHJlc3MmIzM5O1xuIDU5MzpcdCAqIGV4aXN0cyBidXQgaXMgYWxsIHplcm9zLlxuIDU5NDpcdCAqL1xuIDU5NTpcdGludCBmd25vZGVfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsIGNoYXIgKmFkZHIpXG4gNTk2Olx0e1xuIDU5NzpcdFx0aWYgKCFmd25vZGVfZ2V0X21hY19hZGRyKGZ3bm9kZSwgXCYjMzQ7bWFjLWFkZHJlc3NcJiMzNDssIGFkZHIpIHx8XG4gNTk4Olx0XHQgICAgIWZ3bm9kZV9nZXRfbWFjX2FkZHIoZndub2RlLCBcJiMzNDtsb2NhbC1tYWMtYWRkcmVzc1wmIzM0OywgYWRkcikgfHxcbiA1OTk6XHRcdCAgICAhZndub2RlX2dldF9tYWNfYWRkcihmd25vZGUsIFwmIzM0O2FkZHJlc3NcJiMzNDssIGFkZHIpKVxuIDYwMDpcdFx0XHRyZXR1cm4gMDtcbiA2MDE6XHRcbiA2MDI6XHRcdHJldHVybiAtRU5PRU5UO1xuIDYwMzpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxOTkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnk6CgoqKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIE1BQyBBZGRyZXNzIFJldHJpZXZhbCoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoZSBNQUMgYWRkcmVzcyByZXRyaWV2YWwgcHJvY2VzcywgYW5kIEkgdGhpbmsgd2UgbWlnaHQgaGF2ZSBtaXNzZWQgYSBzcG90LiBNeSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB3ZSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgbnZtZW1fZ2V0X21hY19hZGRyZXNzYCBmdW5jdGlvbiBhcyB3ZWxsLiBXZSBrbm93IHRoZSBnZW5lcmFsIGZsb3csIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHdlIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IGRldGFpbHMgc3BlY2lmaWMgdG8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uJiMzOTtzIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBwb3NzaWJsZSB0aGVyZSBhcmUgc3VidGxlIGRpZmZlcmVuY2VzIG9yIGVkZ2UgY2FzZXMgcmVsYXRlZCB0byBub24tdm9sYXRpbGUgbWVtb3J5IHRoYXQgd2UgbmVlZCB0byBhY2NvdW50IGZvci4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IHBhcnQgb2YgdGhlIHByb2Nlc3MgaXMgc29saWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBudm1lbV9nZXRfbWFjX2FkZHJlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oPTMzPXVuc2lnbmVkIGNoYXIgKmFyY2hfZ2V0X3BsYXRmb3JtX21hY19hZGRyZXNzKHZvaWQpO1xuaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oOjM0OmludCBudm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICphZGRyYnVmKTtcbmluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaC0zNS1pbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpO1xuLS1cbm5ldC9ldGhlcm5ldC9ldGguYz01MjE9RVhQT1JUX1NZTUJPTChwbGF0Zm9ybV9nZXRfZXRoZGV2X2FkZHJlc3MpO1xuLS1cbm5ldC9ldGhlcm5ldC9ldGguYy01MzEtICovXG5uZXQvZXRoZXJuZXQvZXRoLmM6NTMyOmludCBudm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICphZGRyYnVmKVxubmV0L2V0aGVybmV0L2V0aC5jLTUzMy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTc2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTUFDIEFkZHJlc3MgUmV0cmlldmFsKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYG52bWVtX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24gYWN0dWFsbHkgd29ya3MuIFRpbWUgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCYjMzk7cyBzZWUgaG93IGl0JiMzOTtzIHdyaXR0ZW4gYW5kIHdoYXQmIzM5O3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoaW5ncyBsaWtlIGVycm9yIGhhbmRsaW5nLCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgcXVpcmtzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBub24tdm9sYXRpbGUgbWVtb3J5IGl0c2VsZi4gQXJlIHRoZXkgdXNpbmcgYSBzdGFuZGFyZCBOVk1FTSBpbnRlcmZhY2UsIG9yIHNvbWV0aGluZyBjdXN0b20/IFdoYXQgYWJvdXQgYXRvbWljaXR5IOKAkyBpcyB0aGUgcmVhZCBvcGVyYXRpb24gdGhyZWFkLXNhZmUsIG9yIGFyZSB0aGV5IHJlbHlpbmcgb24gc29tZSBoaWdoZXItbGV2ZWwgc3luY2hyb25pemF0aW9uPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGFyZWFzIHdoZXJlIGEgcG93ZXIgZmFpbHVyZSBjb3VsZCBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQgc3RhdGUuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkLi4uIGJ1dCBJJiMzOTttIHByZXBhcmVkIGZvciBhbnl0aGluZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTQ6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRoZXJuZXQvZXRoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUzMDpcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXG4gNTMxOlx0ICovXG4gNTMyOlx0aW50IG52bWVtX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHJidWYpXG4gNTMzOlx0e1xuIDUzNDpcdFx0c3RydWN0IG52bWVtX2NlbGwgKmNlbGw7XG4gNTM1Olx0XHRjb25zdCB2b2lkICptYWM7XG4gNTM2Olx0XHRzaXplX3QgbGVuO1xuIDUzNzpcdFxuIDUzODpcdFx0Y2VsbCA9IG52bWVtX2NlbGxfZ2V0KGRldiwgXCYjMzQ7bWFjLWFkZHJlc3NcJiMzNDspO1xuIDUzOTpcdFx0aWYgKElTX0VSUihjZWxsKSlcbiA1NDA6XHRcdFx0cmV0dXJuIFBUUl9FUlIoY2VsbCk7XG4gNTQxOlx0XG4gNTQyOlx0XHRtYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgXHUwMDI2bGVuKTtcbiA1NDM6XHRcdG52bWVtX2NlbGxfcHV0KGNlbGwpO1xuIDU0NDpcdFxuIDU0NTpcdFx0aWYgKElTX0VSUihtYWMpKVxuIDU0NjpcdFx0XHRyZXR1cm4gUFRSX0VSUihtYWMpO1xuIDU0NzpcdFxuIDU0ODpcdFx0aWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7XG4gNTQ5Olx0XHRcdGtmcmVlKG1hYyk7XG4gNTUwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU1MTpcdFx0fVxuIDU1MjpcdFxuIDU1MzpcdFx0ZXRoZXJfYWRkcl9jb3B5KGFkZHJidWYsIG1hYyk7XG4gNTU0Olx0XHRrZnJlZShtYWMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE3NgoJCQkJCQkJb3V0cHV0OiAxOTkKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUMgQWRkcmVzcyBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGlzIGV4cGVjdGVkIHRvIHBvcHVsYXRlIGFsbCBzaXggYnl0ZXMgb2YgdGhlIE1BQyBhZGRyZXNzIChgRVRIX0FMRU5gKSBpZiBpdCBzdWNjZWVkcywgcmV0dXJuaW5nIDAuIElmIGl0IGZhaWxzLCB0aGUgcGF0Y2ggZmFsbHMgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyKGVmdXNlLSZndDthZGRyKTtgIOKAkyB3aGljaCwgYWdhaW4sIGZ1bGx5IGluaXRpYWxpemVzIGBlZnVzZS0mZ3Q7YWRkcmAuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcnVuIHRocm91Z2ggb3VyIGNoZWNrbGlzdC4gVGhpcyBpcyByb3V0aW5lLCBidXQgdGhvcm91Z2huZXNzIGlzIGtleSBoZXJlOgoKMS4gIERvZXMgaXQgZXhwb3NlIGFueSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8uIFRoZSBlbnRpcmUgYWRkcmVzcyBzcGFjZSBpcyBpbml0aWFsaXplZCBieSBlaXRoZXIgY2FsbC4KMi4gIEFueSByaXNrIG9mIGluZm9ybWF0aW9uIGxlYWtzIHZpYSBgY29weV90b191c2VyYCBvciBuZXRsaW5rIGNhbGxzPyBBYnNvbHV0ZWx5IG5vdC4gTm90aGluZyBoZXJlIGV2ZW4gcmVtb3RlbHkgdG91Y2hlcyB0aG9zZSBhcmVhcy4KMy4gIEFyZSB0aGVyZSBhbnkgc3RydWN0dXJlIGZpZWxkcyBsZWZ0IHVuaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhpcyBvcGVyYXRpb24/IE5vcGUsIGJvdGggcGF0aHMgZW5zdXJlIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBNQUMgYWRkcmVzcyBmaWVsZC4KNC4gIEFuZCwgY3JpdGljYWxseSwgaXMgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGJyYW5jaGluZyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGE/IE5vIHdheS4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCB0byAqZW5zdXJlKiB0aGUgZGF0YSBpcyBpbml0aWFsaXplZCAqYmVmb3JlKiBpdCYjMzk7cyB1c2VkLgoKR2l2ZW4gdGhpcyBhbmFseXNpcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBLTVNBTiBpc24mIzM5O3QgbmVjZXNzYXJ5IGhlcmU7IGBOZWVkc0tNU0FOPWZhbHNlYC4gVGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgbGlrZSBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIGFkZXF1YXRlIGZvciB0aGlzLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbiBhbmQgY29uc3RydWN0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE0OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AgbW9kaWZpZXMgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgc28gdGhhdCB3aGVuIGFuIGludmFsaWQgTUFDIGFkZHJlc3MgaXMgcmVhZCBmcm9tIHRoZSBlZnVzZSwgdGhlIGRyaXZlciBhdHRlbXB0cyB0byBmZXRjaCBhIHZhbGlkIE1BQyBhZGRyZXNzIGZyb20gdGhlIGRldmljZSB0cmVlIC8gZmlybXdhcmUgbm9kZSBvciBOVk1FTSB1c2luZyBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGBldGhfcmFuZG9tX2FkZHIoKWAuIEJvdGggYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgKG9uIHN1Y2Nlc3MpIGFuZCBgZXRoX3JhbmRvbV9hZGRyKClgIChvbiBmYWxsYmFjaykgY29tcGxldGVseSBvdmVyd3JpdGUgYW5kIGluaXRpYWxpemUgYWxsIGBFVEhfQUxFTmAgYnl0ZXMgb2YgYGVmdXNlLVx1MDAzZWFkZHJgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBicmFuY2ggY29uZGl0aW9ucyBhcmUgaW50cm9kdWNlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBtb2RpZmllcyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCBzbyB0aGF0IHdoZW4gYW4gaW52YWxpZCBNQUMgYWRkcmVzcyBpcyByZWFkIGZyb20gdGhlIGVmdXNlLCB0aGUgZHJpdmVyIGF0dGVtcHRzIHRvIGZldGNoIGEgdmFsaWQgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHRyZWUgLyBmaXJtd2FyZSBub2RlIG9yIE5WTUVNIHVzaW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYGV0aF9yYW5kb21fYWRkcigpYC4gQm90aCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCAob24gc3VjY2VzcykgYW5kIGBldGhfcmFuZG9tX2FkZHIoKWAgKG9uIGZhbGxiYWNrKSBjb21wbGV0ZWx5IG92ZXJ3cml0ZSBhbmQgaW5pdGlhbGl6ZSBhbGwgYEVUSF9BTEVOYCBieXRlcyBvZiBgZWZ1c2UtXHUwMDNlYWRkcmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaCBjb25kaXRpb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE1OjM3LjgyNDQxODM2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MzQwMDU1OTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OFwiLFxuICAgIFwiUlRXODhfQ09SRVwiLFxuICAgIFwiUlRXODhfVVNCXCIsXG4gICAgXCJSVFc4OF84ODIyQlVcIixcbiAgICBcIlJUVzg4Xzg4MjJDVVwiLFxuICAgIFwiUlRXODhfODcyM0RVXCIsXG4gICAgXCJSVFc4OF84ODIxQ1VcIixcbiAgICBcIlJUVzg4Xzg4MjFBVVwiLFxuICAgIFwiUlRXODhfODgxMkFVXCIsXG4gICAgXCJSVFc4OF84ODE0QVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHdfY2hpcF9pbmZvX3NldHVwXCIsXG4gICAgXCJydHdfdXNiX3Byb2JlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgIG1vZGlmaWVzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIHNvIHRoYXQgd2hlbiBhbiBpbnZhbGlkIE1BQyBhZGRyZXNzIGlzIHJlYWQgZnJvbSB0aGUgZWZ1c2UsIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdG8gZmV0Y2ggYSB2YWxpZCBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSAvIGZpcm13YXJlIG5vZGUgb3IgTlZNRU0gdXNpbmcgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyKClgLiBCb3RoIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIChvbiBzdWNjZXNzKSBhbmQgYGV0aF9yYW5kb21fYWRkcigpYCAob24gZmFsbGJhY2spIGNvbXBsZXRlbHkgb3ZlcndyaXRlIGFuZCBpbml0aWFsaXplIGFsbCBgRVRIX0FMRU5gIGJ5dGVzIG9mIGBlZnVzZS1cXHUwMDNlYWRkcmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaCBjb25kaXRpb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1BQyBhZGRyZXNzIHNldHVwIGxvZ2ljIGluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIChjYWxsZWQgZHVyaW5nIGNoaXAgaW5mbyBzZXR1cCkgdG8gYXR0ZW1wdCBmZXRjaGluZyBhIE1BQyBhZGRyZXNzIHZpYSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGdlbmVyYXRpbmcgYSByYW5kb20gTUFDIGFkZHJlc3MuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgZm9yIFVTQi1iYXNlZCBydHc4OCBXaUZpIGRldmljZXMgdGhhdCBjYW4gYmUgZW11bGF0ZWQgYW5kIGZ1enplZCB2aWEgVVNCIGdhZGdldC9SYXcgR2FkZ2V0IGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE1OjM3LjgyNDQyMzU4NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY4NjY1NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDE0OjE1OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcXG5pbmRleCBjZDkyNTQzNzBmY2M3Li4wZjIzNDk4YjVjOTZlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcXG5AQCAtMjA2MCw4ICsyMDYwLDExIEBAIHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbiBcXHRlZnVzZS1cXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVxcdTAwM2VsbmFfdHlwZV81ZyBcXHUwMDI2IEJJVCgzKSA/IDEgOiAwO1xcbiBcXG4gXFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKGVmdXNlLVxcdTAwM2VhZGRyKSkge1xcbi1cXHRcXHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpO1xcbi1cXHRcXHRkZXZfd2FybihydHdkZXYtXFx1MDAzZWRldiwgXFxcImVmdXNlIE1BQyBpbnZhbGlkLCB1c2luZyByYW5kb21cXFxcblxcXCIpO1xcbitcXHRcXHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXFx1MDAzZWRldiwgZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuK1xcdFxcdFxcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cXHUwMDNlYWRkcik7XFxuK1xcdFxcdFxcdGRldl93YXJuKHJ0d2Rldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcXFxuXFxcIik7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gb3V0X2Rpc2FibGU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE1OjM4LjM5Mzc1ODk2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzI5NTMwNDExMDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF9DT1JFXCIsXG4gICAgXCJSVFc4OF9VU0JcIixcbiAgICBcIlJUVzg4Xzg4MjJCVVwiLFxuICAgIFwiUlRXODhfODgyMkNVXCIsXG4gICAgXCJSVFc4OF84NzIzRFVcIixcbiAgICBcIlJUVzg4Xzg4MjFDVVwiLFxuICAgIFwiUlRXODhfODgyMUFVXCIsXG4gICAgXCJSVFc4OF84ODEyQVVcIixcbiAgICBcIlJUVzg4Xzg4MTRBVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0d19jaGlwX2luZm9fc2V0dXBcIixcbiAgICBcInJ0d191c2JfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUFDIGFkZHJlc3Mgc2V0dXAgbG9naWMgaW4gYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgKGNhbGxlZCBkdXJpbmcgY2hpcCBpbmZvIHNldHVwKSB0byBhdHRlbXB0IGZldGNoaW5nIGEgTUFDIGFkZHJlc3MgdmlhIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gZ2VuZXJhdGluZyBhIHJhbmRvbSBNQUMgYWRkcmVzcy4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGluY2x1ZGluZyBmb3IgVVNCLWJhc2VkIHJ0dzg4IFdpRmkgZGV2aWNlcyB0aGF0IGNhbiBiZSBlbXVsYXRlZCBhbmQgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0L1JhdyBHYWRnZXQgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTQ6MTU6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG5pbmRleCBjZDkyNTQzNzBmY2M3Li4wZjIzNDk4YjVjOTZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG5AQCAtMjA2MCw4ICsyMDYwLDExIEBAIHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuIFx0ZWZ1c2UtXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVx1MDAzZWxuYV90eXBlXzVnIFx1MDAyNiBCSVQoMykgPyAxIDogMDtcbiBcbiBcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cdTAwM2VhZGRyKSkge1xuLVx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4tXHRcdGRldl93YXJuKHJ0d2Rldi1cdTAwM2VkZXYsIFwiZWZ1c2UgTUFDIGludmFsaWQsIHVzaW5nIHJhbmRvbVxcblwiKTtcbitcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbitcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4rXHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdCBcImZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcblwiKTtcbitcdFx0fVxuIFx0fVxuIFxuIG91dF9kaXNhYmxlOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTU6MzguMzkzNzYwNzE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIwOTMyMzI0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gVGhlIGRpZmYgcG9pbnRzIHRvIGEgY2hhbmdlIGluIHRoZSBgcnR3ODgvbWFpbi5jYCBmaWxlIHdpdGhpbiB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIuIExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgY29uY2VybnMgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0aGUgRXRoZXJuZXQgTUFDIGFkZHJlc3Mgc3RvcmVkIGluIHRoZSBlRnVzZS4gVGhlIG9yaWdpbmFsIGNvZGUgZ2VuZXJhdGVkIGEgcmFuZG9tIE1BQyBhZGRyZXNzIGlmIHRoZSBlRnVzZSBjb250YWluZWQgYW4gaW52YWxpZCBvbmUsIGJ1dCBub3cgaXQgYXR0ZW1wdHMgdG8gZ2V0IHRoZSBNQUMgYWRkcmVzcyB0aHJvdWdoIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBiZWZvcmUgcmVzb3J0aW5nIHRvIHJhbmRvbSBnZW5lcmF0aW9uLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgYSB3YXJuaW5nIG1lc3NhZ2UgaXMgYWRkZWQgaWYgZ2V0dGluZyBhIHZhbGlkIE1BQyBmYWlscywgd2hpY2ggcHJvdmlkZXMgbW9yZSBjb250ZXh0LlxuXG5Ob3csIGxldCdzIHpvb20gb3V0IGEgYml0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBydHc4OGAgZHJpdmVyIGJldHRlci4gSXMgdGhpcyBmb3IgYSBzcGVjaWZpYyB0eXBlIG9mIGRldmljZT8gSXMgdGhpcyBzb21ldGhpbmcgSSBjYW4gZW11bGF0ZSBvciBmdXp6PyBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyB3b3JrIHdpdGggVVNCLCBQQ0ksIG9yIFNESU8gZGV2aWNlcz8gSSBrbm93IFJlYWx0ZWsgaGFzIGEgaGlzdG9yeSB3aXRoIGFsbCB0aHJlZSwgYnV0IEkgbmVlZCB0byBjb25maXJtLiBJIGtub3cgdGhhdCBVU0IgZGV2aWNlcyAqY2FuKiBiZSBmdXp6ZWQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9zeXprYWxsZXIsIHVzaW5nIHRlY2huaXF1ZXMgbGlrZSBSYXcgR2FkZ2V0LCBkdW1teV9oY2QsIG9yIFVTQiBlbXVsYXRpb24uIFNvLCBpcyB0aGVyZSBhIGBydHc4OF91c2JgIGNvbXBvbmVudCB0byBiZSBjb25zaWRlcmVkPyBMZXQncyBjaGVjayB3aXRoIGdyZXBwZXIgb3IgYnkgcmVhZGluZyB0aGUgZmlsZS4gSSBuZWVkIHRvIGtub3cgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSB0byBkZXRlcm1pbmUgaXRzIHN1aXRhYmlsaXR5IGZvciBmdXp6aW5nIGFuZCBpZiBJIGNhbiB1c2UgbXkgbm9ybWFsIFFFTVUgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxNjoxMC40ODY5OTU3OTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1Mzc2NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19SVFc4OFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX1JUVzg4X0NPUkUpXFx0Kz0gcnR3ODhfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00LXJ0dzg4X2NvcmUteSArPSBtYWluLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT0yMT1ydHc4OF9jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToyMzpydHc4OF9jb3JlLSQoQ09ORklHX1JUVzg4X0xFRFMpICs9IGxlZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19SVFc4OF84ODIyQilcXHQrPSBydHc4OF84ODIyYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0yNi1ydHc4OF84ODIyYi1vYmpzXFx0XFx0Oj0gcnR3ODgyMmIubyBydHc4ODIyYl90YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19SVFc4OF84ODIyQkUpXFx0Kz0gcnR3ODhfODgyMmJlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTI5LXJ0dzg4Xzg4MjJiZS1vYmpzXFx0XFx0Oj0gcnR3ODgyMmJlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJCUylcXHQrPSBydHc4OF84ODIyYnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzItcnR3ODhfODgyMmJzLW9ianNcXHRcXHQ6PSBydHc4ODIyYnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfUlRXODhfODgyMkJVKVxcdCs9IHJ0dzg4Xzg4MjJidS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zNS1ydHc4OF84ODIyYnUtb2Jqc1xcdFxcdDo9IHJ0dzg4MjJidS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19SVFc4OF84ODIyQylcXHQrPSBydHc4OF84ODIyYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOC1ydHc4OF84ODIyYy1vYmpzXFx0XFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19SVFc4OF84ODIyQ0UpXFx0Kz0gcnR3ODhfODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQxLXJ0dzg4Xzg4MjJjZS1vYmpzXFx0XFx0Oj0gcnR3ODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDUylcXHQrPSBydHc4OF84ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNDQtcnR3ODhfODgyMmNzLW9ianNcXHRcXHQ6PSBydHc4ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfUlRXODhfODgyMkNVKVxcdCs9IHJ0dzg4Xzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00Ny1ydHc4OF84ODIyY3Utb2Jqc1xcdFxcdDo9IHJ0dzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19SVFc4OF84NzIzWClcXHQrPSBydHc4OF84NzIzeC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS01MC1ydHc4OF84NzIzeC1vYmpzXFx0XFx0Oj0gcnR3ODcyM3gub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfUlRXODhfODcwM0IpXFx0Kz0gcnR3ODhfODcwM2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTMtcnR3ODhfODcwM2Itb2Jqc1xcdFxcdDo9IHJ0dzg3MDNiLm8gcnR3ODcwM2JfdGFibGVzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX1JUVzg4Xzg3MjNDUylcXHQrPSBydHc4OF84NzIzY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTYtcnR3ODhfODcyM2NzLW9ianNcXHRcXHQ6PSBydHc4NzIzY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfUlRXODhfODcyM0QpXFx0Kz0gcnR3ODhfODcyM2Qub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNTktcnR3ODhfODcyM2Qtb2Jqc1xcdFxcdDo9IHJ0dzg3MjNkLm8gcnR3ODcyM2RfdGFibGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfUlRXODhfODcyM0RFKVxcdCs9IHJ0dzg4Xzg3MjNkZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS02Mi1ydHc4OF84NzIzZGUtb2Jqc1xcdFxcdDo9IHJ0dzg3MjNkZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19SVFc4OF84NzIzRFMpXFx0Kz0gcnR3ODhfODcyM2RzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTY1LXJ0dzg4Xzg3MjNkcy1vYmpzXFx0XFx0Oj0gcnR3ODcyM2RzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6Njc6b2JqLSQoQ09ORklHX1JUVzg4Xzg3MjNEVSlcXHQrPSBydHc4OF84NzIzZHUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjgtcnR3ODhfODcyM2R1LW9ianNcXHRcXHQ6PSBydHc4NzIzZHUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfUlRXODhfODgyMUMpXFx0Kz0gcnR3ODhfODgyMWMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNzEtcnR3ODhfODgyMWMtb2Jqc1xcdFxcdDo9IHJ0dzg4MjFjLm8gcnR3ODgyMWNfdGFibGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo3MzpvYmotJChDT05GSUdfUlRXODhfODgyMUNFKVxcdCs9IHJ0dzg4Xzg4MjFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS03NC1ydHc4OF84ODIxY2Utb2Jqc1xcdFxcdDo9IHJ0dzg4MjFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS03NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjc2Om9iai0kKENPTkZJR19SVFc4OF84ODIxQ1MpXFx0Kz0gcnR3ODhfODgyMWNzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc3LXJ0dzg4Xzg4MjFjcy1vYmpzXFx0XFx0Oj0gcnR3ODgyMWNzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjFDVSlcXHQrPSBydHc4OF84ODIxY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtODAtcnR3ODhfODgyMWN1LW9ianNcXHRcXHQ6PSBydHc4ODIxY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfUlRXODhfODhYWEEpXFx0Kz0gcnR3ODhfODh4eGEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtODMtcnR3ODhfODh4eGEtb2Jqc1xcdFxcdDo9IHJ0dzg4eHhhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6ODU6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjFBKVxcdCs9IHJ0dzg4Xzg4MjFhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg2LXJ0dzg4Xzg4MjFhLW9ianNcXHRcXHQ6PSBydHc4ODIxYS5vIHJ0dzg4MjFhX3RhYmxlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6ODg6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MTJBKVxcdCs9IHJ0dzg4Xzg4MTJhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTg5LXJ0dzg4Xzg4MTJhLW9ianNcXHRcXHQ6PSBydHc4ODEyYS5vIHJ0dzg4MTJhX3RhYmxlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjFBVSlcXHQrPSBydHc4OF84ODIxYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtOTItcnR3ODhfODgyMWF1LW9ianNcXHRcXHQ6PSBydHc4ODIxYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo5NDpvYmotJChDT05GSUdfUlRXODhfODgxMkFVKVxcdCs9IHJ0dzg4Xzg4MTJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05NS1ydHc4OF84ODEyYXUtb2Jqc1xcdFxcdDo9IHJ0dzg4MTJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjk3Om9iai0kKENPTkZJR19SVFc4OF84ODE0QSlcXHQrPSBydHc4OF84ODE0YS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05OC1ydHc4OF84ODE0YS1vYmpzXFx0XFx0Oj0gcnR3ODgxNGEubyBydHc4ODE0YV90YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfUlRXODhfODgxNEFFKVxcdCs9IHJ0dzg4Xzg4MTRhZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMDEtcnR3ODhfODgxNGFlLW9ianNcXHRcXHQ6PSBydHc4ODE0YWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6MTAzOm9iai0kKENPTkZJR19SVFc4OF84ODE0QVUpXFx0Kz0gcnR3ODhfODgxNGF1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTEwNC1ydHc4OF84ODE0YXUtb2Jqc1xcdFxcdDo9IHJ0dzg4MTRhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMDY6b2JqLSQoQ09ORklHX1JUVzg4X1BDSSlcXHRcXHQrPSBydHc4OF9wY2kub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTA3LXJ0dzg4X3BjaS1vYmpzXFx0XFx0XFx0Oj0gcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTEwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjEwOTpvYmotJChDT05GSUdfUlRXODhfU0RJTylcXHQrPSBydHc4OF9zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMC1ydHc4OF9zZGlvLW9ianNcXHRcXHRcXHQ6PSBzZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjExMjpvYmotJChDT05GSUdfUlRXODhfVVNCKVxcdFxcdCs9IHJ0dzg4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0xMTMtcnR3ODhfdXNiLW9ianNcXHRcXHRcXHQ6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmM9MzU1Mz12b2lkIHJ0d19jb2V4X3dsX2Nja2xvY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYy0zNTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjM1NjQ6I2lmZGVmIENPTkZJR19SVFc4OF9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtMzU2NS0jZGVmaW5lIElORk9fU0laRVxcdDgwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYz0zOTM2PXZvaWQgcnR3X2NvZXhfZGlzcGxheV9jb2V4X2luZm8oc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IHNlcV9maWxlICptKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtNDIwNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmM6NDIwNTojZW5kaWYgLyogQ09ORklHX1JUVzg4X0RFQlVHRlMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTc6I2lmZGVmIENPTkZJR19SVFc4OF9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jPTEzNDk9dm9pZCBydHdfZGVidWdmc19kZWluaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xMzUyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTM1MzojZW5kaWYgLyogQ09ORklHX1JUVzg4X0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmMtMTM1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM6MTM1NTojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5jLTEzNTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmM9MTM3Mz1FWFBPUlRfU1lNQk9MKHJ0d19kYmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYy0xMzc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuYzoxMzc1OiNlbmRpZiAvKiBDT05GSUdfUlRXODhfREVCVUcgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaD04PWVudW0gcnR3X2RlYnVnX21hc2sge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaDozNDojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmgtMzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg9NDM9c3RhdGljIGlubGluZSB2b2lkIHJ0d19kZWJ1Z2ZzX2RlaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KSB7fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaC00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg6NDU6I2VuZGlmIC8qIENPTkZJR19SVFc4OF9ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaDo0NzojaWZkZWYgQ09ORklHX1JUVzg4X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oLTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9kZWJ1Zy5oPTY0PXN0YXRpYyBpbmxpbmUgYm9vbCBydHdfZGJnX2lzX2VuYWJsZWQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaC02OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2RlYnVnLmg6NzA6I2VuZGlmIC8qIENPTkZJR19SVFc4OF9ERUJVRyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvZGVidWcuaC03MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbGVkLmgtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2xlZC5oOjg6I2lmZGVmIENPTkZJR19SVFc4OF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9sZWQuaC05LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jPTE4ODY9Y29uc3Qgc3RydWN0IHJ0d19jaGlwX2luZm8gcnR3ODcwM2JfaHdfc3BlYyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xOTk1LVxcdC8qIFRoZXNlIHJlZ2lzdGVycyBhcmUgdXNlZCB0byByZWFkIChhbmQgcHJpbnQpIGZyb20gaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTk5NjpcXHQgKiBDT05GSUdfUlRXODhfREVCVUdGUyBpcyBlbmFibGVkLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xOTk3LVxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxNjoxMC42NzIzODAwOThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTU3ODc4NDQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIncyBFRlVTRSBJbmZvcm1hdGlvbiBTZXR1cCoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgaXNzdWUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IGl0J3MgaGFuZGxpbmcgRUZVU0UgaW5mb3JtYXRpb24sIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYC4gVGhhdCBmdW5jdGlvbiBuYW1lIHN1Z2dlc3RzIGl0J3MgYSBrZXkgcGllY2UgaW4gdGhpcyBwdXp6bGUuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQncyBkb2luZywgaG93IGl0J3Mgc2V0dGluZyB0aGluZ3MgdXAsIGFuZCB3aGF0IGRhdGEgaXQncyBkcmF3aW5nIGZyb20gdGhlIEVGVVNFLiBUaGVuIEknbGwgZXhwYW5kIHRoZSBpbnZlc3RpZ2F0aW9uIG91dHdhcmRzIHRvIGl0cyBjYWxsZXJzLiBVbmRlcnN0YW5kaW5nICp3aG8qIGlzIGNhbGxpbmcgaXQsICp3aGVuKiwgYW5kICp3aHkqIGlzIGNydWNpYWwgdG8gZXN0YWJsaXNoaW5nIHRoZSBiaWdnZXIgcGljdHVyZSBvZiBob3cgdGhpcyBpbmZvcm1hdGlvbiBmZWVkcyBpbnRvIHRoZSBvdmVyYWxsIGRyaXZlciBmdW5jdGlvbmFsaXR5LiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IGFuZCBpbnRlcmFjdGlvbiBpcyBsaWtlbHkgY3JpdGljYWwgaGVyZS4gSSBleHBlY3QgdGhhdCB3aWxsIHJldmVhbCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgYnVnIGZpeGVzLCBvciBtYXliZSBldmVuIHBvaW50IHRvIGEgZnVuZGFtZW50YWwgZGVzaWduIGlzc3VlIGlmIEknbSBsdWNreSwgd2hpY2ggSSBob3BlIHRvIGF2b2lkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTc4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTY6NTAuMjUxMTY2MzY0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODg4MDM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjAwMz1zdGF0aWMgdm9pZCBydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwMDk6c3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAxMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMDk3PWludCBydHdfY2hpcF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIxMDc6XFx0cmV0ID0gcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMDgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jPTEwMDc9aW50IHJ0dzg4eHhhX3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTAxODpcXHQvKiBPdmVycmlkZSBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAxOS1cXHRpZiAoY2hpcC1cXHUwMDNlaWQgPT0gUlRXX0NISVBfVFlQRV84ODIxQSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMDIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYzoxMDIzOlxcdC8qIE92ZXJyaWRlIHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMDI0LVxcdGlmIChjaGlwLVxcdTAwM2VpZCA9PSBSVFdfQ0hJUF9UWVBFXzg4MTJBKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxNjo1MC42MzAwNTY0NzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NDUxNTc4MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYW5kIGl0cyBDYWxsZXJzKipcblxuT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGBydHdfY2hpcF9pbmZvX3NldHVwYCBmdW5jdGlvbiB3b3JrcywgYW5kIGNyaXRpY2FsbHksICp3aG8qIGlzIHVzaW5nIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBzZXR1cCBwcm9jZXNzIGlzIGZ1bmRhbWVudGFsLCBlc3BlY2lhbGx5IGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBvciBjcnVjaWFsIGNvbmZpZ3VyYXRpb24uIFNvLCBteSBpbml0aWFsIGFwcHJvYWNoIHdpbGwgYmUgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhlIGZ1bmN0aW9uIGl0c2VsZiDigJMgd2hhdCBwYXJhbWV0ZXJzIGRvZXMgaXQgdGFrZSwgd2hhdCBkb2VzIGl0IGluaXRpYWxpemUsIHdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgaXQgaGF2ZT8gVGhlbiwganVzdCBhcyBpbXBvcnRhbnRseSwgSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgc2luZ2xlIHBsYWNlIGluIHRoZSBjb2RlYmFzZSB3aGVyZSBgcnR3X2NoaXBfaW5mb19zZXR1cGAgaXMgY2FsbGVkLiBGaW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBmbG93LiBUaGlzIHdpbGwgdGVsbCBtZSB0aGUgY29udGV4dCBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYW5kIHdoYXQgb3RoZXIgc3Vic3lzdGVtcyBvciBtb2R1bGVzIHJlbHkgb24gaXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGJpZyBwaWN0dXJlIG9mIGhvdyB0aGUgY2hpcCBpbmZvcm1hdGlvbiBpcyBoYW5kbGVkIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEgY29yZSBwaWVjZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24sIGFuZCBsaWtlbHkgaGFzIGNvbm5lY3Rpb25zIHRvIHRoZSBkZXZpY2UgZHJpdmVyIGFuZCBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllcnMuIExldCdzIGdldCB0byBpdCFcblxuXG4iLCJJbnB1dFRva2VucyI6ODkxMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE2OjU5LjA4MTYzODE1OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTE5NzA2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfY2hpcF9pbmZvX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjA3OD1zdGF0aWMgaW50IHJ0d19jaGlwX2JvYXJkX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjA5NzppbnQgcnR3X2NoaXBfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjEyMy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjEyNDpFWFBPUlRfU1lNQk9MKHJ0d19jaGlwX2luZm9fc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaD0yMjU4PXZvaWQgcnR3X2NvcmVfc3RvcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDoyMjU5OmludCBydHdfY2hpcF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTIyNjAtaW50IHJ0d19jb3JlX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jPTE3OTU9aW50IHJ0d19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jLTE4NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9wY2kuYzoxODUwOlxcdHJldCA9IHJ0d19jaGlwX2luZm9fc2V0dXAocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3BjaS5jLTE4NTEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9zZGlvLmM9MTMyNT1pbnQgcnR3X3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqc2Rpb19mdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9zZGlvLmMtMTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3NkaW8uYzoxMzY5OlxcdHJldCA9IHJ0d19jaGlwX2luZm9fc2V0dXAocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3NkaW8uYy0xMzcwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9MTI2Mz1pbnQgcnR3X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTMxMjpcXHRyZXQgPSBydHdfY2hpcF9pbmZvX3NldHVwKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzEzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTY6NTkuMTMwODQyNTY2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzczMzE1NDA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBVU0IgRHJpdmVyKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYHJ0d191c2JfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmNgIGZpbGUuIE15IGh1bmNoIGlzIHRoYXQgdGhpcyBjb3VsZCBiZSBhIHBvaW50IG9mIGludGVyZXN0IGZvciBmdXp6aW5nLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIGhvdyBVU0IgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgdXNpbmcgc29tZXRoaW5nIGxpa2UgVVNCIFJhdyBHYWRnZXQgYW5kIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIHdpdGggZHVtbXlfaGNkIG9yIHJhdy1nYWRnZXQuXG5cbkJlZm9yZSBJIGp1bXAgaW4sIEkgd2FudCB0byByZXZpZXcgYW55IHJlY2VudCBwYXRjaGVzLiBUaGUgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXBgIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IOKAkyB1bmRlcnN0YW5kaW5nIHRoZSBjaGFuZ2VzIHRoZXJlIHdpbGwgZ2l2ZSBtZSBjb250ZXh0LlxuXG5PbmNlIEkgaGF2ZSB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgb3V0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMDYwLiBJIG5lZWQgdG8gc2VlIGhvdyBldmVyeXRoaW5nIGlzIHdpcmVkIHRvZ2V0aGVyIGluIHRoZSBjb3JlIGRyaXZlci4gSG9wZWZ1bGx5LCB0aGlzIGFwcHJvYWNoIHdpbGwgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgdnVsbmVyYWJpbGl0eSBzdXJmYWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMjAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTc6MDYuODYzOTk5NzUxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDQwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VsbmFfdHlwZV8yZyA9IDA7XFxuMjA0MTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnID09IDB4ZmYpXFxuMjA0MjpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlbG5hX3R5cGVfNWcgPSAwO1xcbjIwNDM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VjaGFubmVsX3BsYW4gPT0gMHhmZilcXG4yMDQ0OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VjaGFubmVsX3BsYW4gPSAweDdmO1xcbjIwNDU6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPT0gMHhmZilcXG4yMDQ2OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xcbjIwNDc6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VidF9zZXR0aW5nIFxcdTAwMjYgQklUKDApKVxcbjIwNDg6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXNoYXJlX2FudCA9IHRydWU7XFxuMjA0OTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXJlZ2QgPT0gMHhmZilcXG4yMDUwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZWdkID0gMDtcXG4yMDUxOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9PSAweGZmKVxcbjIwNTI6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPSAwO1xcbjIwNTM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID09IDB4ZmYpXFxuMjA1NDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9IDA7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdGVmdXNlLVxcdTAwM2VidGNvZXggPSAoZWZ1c2UtXFx1MDAzZXJmX2JvYXJkX29wdGlvbiBcXHUwMDI2IDB4ZTApID09IDB4MjA7XFxuMjA1NzpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzJnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfMmcgXFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcXG4yMDU4OlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzJnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzJnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA1OTpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzVnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfNWcgXFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcXG4yMDYwOlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzVnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA2MTpcXHRcXG4yMDYyOlxcdFxcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDYzOlxcdFxcdFxcdGlmIChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cXHUwMDNlZGV2LCBlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDY0OlxcdFxcdFxcdFxcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cXHUwMDNlYWRkcik7XFxuMjA2NTpcXHRcXHRcXHRcXHRkZXZfd2FybihydHdkZXYtXFx1MDAzZWRldixcXG4yMDY2OlxcdFxcdFxcdFxcdFxcdCBcXFwiZmFpbGVkIHRvIGdldCB2YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tXFxcXG5cXFwiKTtcXG4yMDY3OlxcdFxcdFxcdH1cXG4yMDY4OlxcdFxcdH1cXG4yMDY5OlxcdFxcbjIwNzA6XFx0b3V0X2Rpc2FibGU6XFxuMjA3MTpcXHRcXHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XFxuMjA3MjpcXHRcXG4yMDczOlxcdG91dF91bmxvY2s6XFxuMjA3NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnJ0d2Rldi1cXHUwMDNlbXV0ZXgpO1xcbjIwNzU6XFx0XFx0cmV0dXJuIHJldDtcXG4yMDc2OlxcdH1cXG4yMDc3OlxcdFxcbjIwNzg6XFx0c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuMjA3OTpcXHR7XFxuMjA4MDpcXHRcXHRzdHJ1Y3QgcnR3X2hhbCAqaGFsID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlaGFsO1xcbjIwODE6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0d19yZmVfZGVmICpyZmVfZGVmID0gcnR3X2dldF9yZmVfZGVmKHJ0d2Rldik7XFxuMjA4MjpcXHRcXG4yMDgzOlxcdFxcdGlmICghcmZlX2RlZilcXG4yMDg0OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjIwODU6XFx0XFxuMjA4NjpcXHRcXHRydHdfcGh5X3NldHVwX3BoeV9jb25kKHJ0d2RldiwgaGFsLVxcdTAwM2Vwa2dfdHlwZSk7XFxuMjA4NzpcXHRcXG4yMDg4OlxcdFxcdHJ0d19waHlfaW5pdF90eF9wb3dlcihydHdkZXYpO1xcbjIwODk6XFx0XFx0cnR3X2xvYWRfdGFibGUocnR3ZGV2LCByZmVfZGVmLVxcdTAwM2VwaHlfcGdfdGJsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTc6MDYuODY0MTQxNDgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzMjMwMzE5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTUFDIEFkZHJlc3MgSW5pdGlhbGl6YXRpb24gQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSBhIGNoYW5nZSBpbiBob3cgYSBNQUMgYWRkcmVzcyBpcyBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0dzg4YCBkcml2ZXIuIEJlZm9yZSwgaWYgdGhlIEVGVVNFIE1BQyBhZGRyZXNzIHdhc24ndCB2YWxpZCwgaXQgd2FzIGltbWVkaWF0ZWx5IHJhbmRvbWl6ZWQuIE5vdywgdGhlcmUncyBhbiBpbnRlcm1lZGlhdGUgc3RlcDogYGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcilgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHRvIHRyeSB0byByZXRyaWV2ZSBhIE1BQyBhZGRyZXNzIGZyb20gdGhlIGRldmljZSdzIGZpcm13YXJlIG9yIHByb3BlcnRpZXMsIHRoaW5ncyBsaWtlIGRldmljZSB0cmVlIG9yIEFDUEkuIE9ubHkgKmlmKiB0aGF0IGZhaWxzIOKAkyByZXR1cm5zIGFuIGVycm9yIOKAkyBkb2VzIGl0IGZhbGwgYmFjayB0byByYW5kb21pemF0aW9uLlxuXG5UaGUgY29yZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgY2hhbmdlIGlzIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBjYXJlZnVsbHkuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nOlxuKiAgIERvY3VtZW50YXRpb24vS2NvbmZpZy9Db21tZW50cy5cbiogICBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIChsb2dnaW5nLCB0cmFjZXBvaW50cykuXG4qICAgQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdy5cbiogICBVbnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoR0NFLCBRRU1VKSwgaW5jbHVkaW5nIGVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgSSBkb24ndCB1c2VcbiogICBWZW5kb3Itc3BlY2lmaWMgZHJpdmVycyAoUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBHUFUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS5cbiogICBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuU2luY2UgdGhpcyB0b3VjaGVzIGRyaXZlciBsb2dpYywgSSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0IGlzIHJlYWNoYWJsZSBjb2RlIG9yIG5vdC4gTXkgY29kZSBzZWFyY2ggdG9vbHMgc2hvdyB0aGlzIGlzIGEgcmVhbCBhbmQgcmVhY2hhYmxlIGxvZ2ljLlxuXG5TbywgaXMgaXQ/IENhbiB0aGlzIGBydHc4OGAgZHJpdmVyIGJlIHByb2JlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBEb2VzIGl0IHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUgb3IgZmlybXdhcmUgdG8gYmUgZnVuY3Rpb25hbD8gQ2FuIEkgcHJvYmUgaXQgdXNpbmcgYSBVU0IgZ2FkZ2V0IG9yIHNvbWUgZm9ybSBvZiBVU0IgZW11bGF0aW9uIHdpdGhpbiBzeXprYWxsZXI/IEkgbmVlZCB0byBjaGVjayBob3cgcnR3ODggVVNCIGRldmljZXMgYXJlIGhhbmRsZWQuIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUsIGFuZCB0aGUgY2hhbmdlIGltcGFjdHMgY29yZSBsb2dpYywgdGhlbiBpdCBzaG91bGQgYmUgd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzOTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxNzoxMy4xODcxOTI3ODRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTc5MzA5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfdXNiX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZHUuYz0yMD1zdGF0aWMgaW50IHJ0dzg3MjNkdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2R1LmMtMjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2R1LmM6MjM6XFx0cmV0dXJuIHJ0d191c2JfcHJvYmUoaW50ZiwgaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2R1LmMtMjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYXUuYz04ND1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4MTJhdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhdS5jLTg2LVxcdC5pZF90YWJsZSA9IHJ0d184ODEyYXVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYXUuYzo4NzpcXHQucHJvYmUgPSBydHdfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmF1LmMtODgtXFx0LmRpc2Nvbm5lY3QgPSBydHdfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhdS5jPTQ0PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODgxNGF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGF1LmMtNDYtXFx0LmlkX3RhYmxlID0gcnR3Xzg4MTRhdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhdS5jOjQ3OlxcdC5wcm9iZSA9IHJ0d191c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YXUuYy00OC1cXHQuZGlzY29ubmVjdCA9IHJ0d191c2JfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWF1LmM9Njg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODIxYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYXUuYy03MC1cXHQuaWRfdGFibGUgPSBydHdfODgyMWF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWF1LmM6NzE6XFx0LnByb2JlID0gcnR3X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhdS5jLTcyLVxcdC5kaXNjb25uZWN0ID0gcnR3X3VzYl9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxY3UuYz00Nj1zdGF0aWMgaW50IHJ0d184ODIxY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjdS5jLTQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjdS5jOjQ5OlxcdHJldHVybiBydHdfdXNiX3Byb2JlKGludGYsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjdS5jLTUwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmJ1LmM9ODg9c3RhdGljIGludCBydHc4ODIyYnVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTkwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jOjkxOlxcdHJldHVybiBydHdfdXNiX3Byb2JlKGludGYsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM9MzA9c3RhdGljIGludCBydHc4ODIyY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMzOlxcdHJldHVybiBydHdfdXNiX3Byb2JlKGludGYsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9MTIyNT1zdGF0aWMgdm9pZCBydHdfdXNiX3BoeV9jZmcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTI2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjEyNjM6aW50IHJ0d191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEyNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMzU4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjEzNTk6RVhQT1JUX1NZTUJPTChydHdfdXNiX3Byb2JlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jLTEzNjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5oPTkwPXN0YXRpYyBpbmxpbmUgc3RydWN0IHJ0d191c2JfdHhfZGF0YSAqcnR3X3VzYl9nZXRfdHhfZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuaC05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5oOjEwMDppbnQgcnR3X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5oLTEwMS12b2lkIHJ0d191c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE3OjEzLjM3ODk5MzcwOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Njg0NjUwODI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQncyBoYXBwZW5pbmcsIGxhaWQgb3V0IGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFVTQiBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIFJlYWx0ZWsgV2lGaSBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBVU0IgcHJvYmUgZnVuY3Rpb24uIE15IGluaXRpYWwgdHJhY2UgaW5kaWNhdGVzIHRoYXQgYHJ0d191c2JfcHJvYmVgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jYCBpcyB0aGUgZW50cnkgcG9pbnQuICBUaGUgY29kZSBmbG93J3MgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgYHJ0d191c2JfcHJvYmVgIGltbWVkaWF0ZWx5IGtpY2tzIG9mZiBhIGNoYWluOiBgcnR3X3VzYl9wcm9iZWAgY2FsbHMgYHJ0d19jaGlwX2luZm9fc2V0dXAocnR3ZGV2KWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAocnR3ZGV2KWAuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCBhZnRlciB0aGUgVVNCIGRldmljZSBpcyBkZXRlY3RlZCwgYSBjcml0aWNhbCBzZXF1ZW5jZSBvZiBpbml0aWFsaXphdGlvbnMgaXMgaW5pdGlhdGVkLiBJJ20gZ3Vlc3NpbmcgdGhhdCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgbGlrZWx5IGhhbmRsZXMgZ2VuZXJhbCBjaGlwLXNwZWNpZmljIHNldHVwLCBhbmQgdGhlIHN1YnNlcXVlbnQgY2FsbCB0byBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaGludHMgYXQgdGhlIGxvYWRpbmcgb3IgcHJvY2Vzc2luZyBvZiBkYXRhIGZyb20gdGhlIGNoaXAncyBlRlVTRSwgd2hpY2ggd291bGQgYmUgY3J1Y2lhbCBmb3IgdGhpbmdzIGxpa2UgY2FsaWJyYXRpb24sIE1BQyBhZGRyZXNzLCBhbmQgb3RoZXIgY3JpdGljYWwgZGV2aWNlIHBhcmFtZXRlcnMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiwgYnV0IEknbSBnZXR0aW5nIGEgcHJldHR5IHNvbGlkIHBpY3R1cmUgb2YgdGhlIHByb2JlIHByb2Nlc3MuIEknbGwgYmUgY2hlY2tpbmcgYHVzYi5jYCBkaXJlY3RseSB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzk3NywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjEwLjIyNTUwNDUyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjYzLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjYzOlxcdGludCBydHdfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuMTI2NDpcXHR7XFxuMTI2NTpcXHRcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xcbjEyNjY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuMTI2NzpcXHRcXHRzdHJ1Y3QgcnR3X3VzYiAqcnR3dXNiO1xcbjEyNjg6XFx0XFx0aW50IGRydl9kYXRhX3NpemU7XFxuMTI2OTpcXHRcXHRpbnQgcmV0O1xcbjEyNzA6XFx0XFxuMTI3MTpcXHRcXHRkcnZfZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVjdCBydHdfZGV2KSArIHNpemVvZihzdHJ1Y3QgcnR3X3VzYik7XFxuMTI3MjpcXHRcXHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhkcnZfZGF0YV9zaXplLCBcXHUwMDI2cnR3X29wcyk7XFxuMTI3MzpcXHRcXHRpZiAoIWh3KVxcbjEyNzQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMTI3NTpcXHRcXG4xMjc2OlxcdFxcdHJ0d2RldiA9IGh3LVxcdTAwM2Vwcml2O1xcbjEyNzc6XFx0XFx0cnR3ZGV2LVxcdTAwM2VodyA9IGh3O1xcbjEyNzg6XFx0XFx0cnR3ZGV2LVxcdTAwM2VkZXYgPSBcXHUwMDI2aW50Zi1cXHUwMDNlZGV2O1xcbjEyNzk6XFx0XFx0cnR3ZGV2LVxcdTAwM2VjaGlwID0gKHN0cnVjdCBydHdfY2hpcF9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9pbmZvO1xcbjEyODA6XFx0XFx0cnR3ZGV2LVxcdTAwM2VoY2kub3BzID0gXFx1MDAyNnJ0d191c2Jfb3BzO1xcbjEyODE6XFx0XFx0cnR3ZGV2LVxcdTAwM2VoY2kudHlwZSA9IFJUV19IQ0lfVFlQRV9VU0I7XFxuMTI4MjpcXHRcXG4xMjgzOlxcdFxcdHJ0d3VzYiA9IHJ0d19nZXRfdXNiX3ByaXYocnR3ZGV2KTtcXG4xMjg0OlxcdFxcdHJ0d3VzYi1cXHUwMDNlcnR3ZGV2ID0gcnR3ZGV2O1xcbjEyODU6XFx0XFxuMTI4NjpcXHRcXHRyZXQgPSBydHdfdXNiX2FsbG9jX3J4X2J1ZnMocnR3dXNiKTtcXG4xMjg3OlxcdFxcdGlmIChyZXQpXFxuMTI4ODpcXHRcXHRcXHRnb3RvIGVycl9yZWxlYXNlX2h3O1xcbjEyODk6XFx0XFxuMTI5MDpcXHRcXHRyZXQgPSBydHdfY29yZV9pbml0KHJ0d2Rldik7XFxuMTI5MTpcXHRcXHRpZiAocmV0KVxcbjEyOTI6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9yeF9idWZzO1xcbjEyOTM6XFx0XFxuMTI5NDpcXHRcXHRyZXQgPSBydHdfdXNiX2ludGZfaW5pdChydHdkZXYsIGludGYpO1xcbjEyOTU6XFx0XFx0aWYgKHJldCkge1xcbjEyOTY6XFx0XFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCJmYWlsZWQgdG8gaW5pdCBVU0IgaW50ZXJmYWNlXFxcXG5cXFwiKTtcXG4xMjk3OlxcdFxcdFxcdGdvdG8gZXJyX2RlaW5pdF9jb3JlO1xcbjEyOTg6XFx0XFx0fVxcbjEyOTk6XFx0XFxuMTMwMDpcXHRcXHRyZXQgPSBydHdfdXNiX2luaXRfdHgocnR3ZGV2KTtcXG4xMzAxOlxcdFxcdGlmIChyZXQpIHtcXG4xMzAyOlxcdFxcdFxcdHJ0d19lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIGluaXQgVVNCIFRYXFxcXG5cXFwiKTtcXG4xMzAzOlxcdFxcdFxcdGdvdG8gZXJyX2Rlc3Ryb3lfdXNiO1xcbjEzMDQ6XFx0XFx0fVxcbjEzMDU6XFx0XFxuMTMwNjpcXHRcXHRyZXQgPSBydHdfdXNiX2luaXRfcngocnR3ZGV2KTtcXG4xMzA3OlxcdFxcdGlmIChyZXQpIHtcXG4xMzA4OlxcdFxcdFxcdHJ0d19lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIGluaXQgVVNCIFJYXFxcXG5cXFwiKTtcXG4xMzA5OlxcdFxcdFxcdGdvdG8gZXJyX2Rlc3Ryb3lfdHh3cTtcXG4xMzEwOlxcdFxcdH1cXG4xMzExOlxcdFxcbjEzMTI6XFx0XFx0cmV0ID0gcnR3X2NoaXBfaW5mb19zZXR1cChydHdkZXYpO1xcbjEzMTM6XFx0XFx0aWYgKHJldCkge1xcbjEzMTQ6XFx0XFx0XFx0cnR3X2VycihydHdkZXYsIFxcXCJmYWlsZWQgdG8gc2V0dXAgY2hpcCBpbmZvcm1hdGlvblxcXFxuXFxcIik7XFxuMTMxNTpcXHRcXHRcXHRnb3RvIGVycl9kZXN0cm95X3J4d3E7XFxuMTMxNjpcXHRcXHR9XFxuMTMxNzpcXHRcXG4xMzE4OlxcdFxcdHJ0d191c2JfcGh5X2NmZyhydHdkZXYsIFVTQl9TUEVFRF9ISUdIKTtcXG4xMzE5OlxcdFxcdHJ0d191c2JfcGh5X2NmZyhydHdkZXYsIFVTQl9TUEVFRF9TVVBFUik7XFxuMTMyMDpcXHRcXG4xMzIxOlxcdFxcdHJldCA9IHJ0d191c2Jfc3dpdGNoX21vZGUocnR3ZGV2KTtcXG4xMzIyOlxcdFxcdGlmIChyZXQpIHtcXG4xMzIzOlxcdFxcdFxcdC8qIE5vdCBhIGZhaWwsIGJ1dCB3ZSBkbyBuZWVkIHRvIHNraXAgcnR3X3JlZ2lzdGVyX2h3LiAqL1xcbjEzMjQ6XFx0XFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfVVNCLCBcXFwic3dpdGNoaW5nIHRvIFVTQiAzIG1vZGVcXFxcblxcXCIpO1xcbjEzMjU6XFx0XFx0XFx0cmV0ID0gMDtcXG4xMzI2OlxcdFxcdFxcdGdvdG8gZXJyX2Rlc3Ryb3lfcnh3cTtcXG4xMzI3OlxcdFxcdH1cXG4xMzI4OlxcdFxcbjEzMjk6XFx0XFx0cmV0ID0gcnR3X3JlZ2lzdGVyX2h3KHJ0d2RldiwgcnR3ZGV2LVxcdTAwM2Vodyk7XFxuMTMzMDpcXHRcXHRpZiAocmV0KSB7XFxuMTMzMTpcXHRcXHRcXHRydHdfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byByZWdpc3RlciBod1xcXFxuXFxcIik7XFxuMTMzMjpcXHRcXHRcXHRnb3RvIGVycl9kZXN0cm95X3J4d3E7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjEwLjIyNTYxMDI5NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NjAyMzU4ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjaGlwJ3MgZUZ1c2UgaW5mb3JtYXRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBydHc4OCBmYW1pbHkuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgc2V0dXAgZnVuY3Rpb24uIFNvLCBJJ20gaGVhZGluZyBzdHJhaWdodCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYC4gVGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gZUZ1c2UgaW5mbywgZ2l2ZW4gdGhlIGRyaXZlciBzdHJ1Y3R1cmUgYW5kIGNvbW1vbiBjb2RpbmcgcHJhY3RpY2VzLCBpcyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBpdHNlbGYgaXMgYSBwcmV0dHkgc3Ryb25nIGluZGljYXRvciwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIExldCdzIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZC4gSSBleHBlY3QgdG8gZmluZCB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHBvc3NpYmx5IHRoZSBsb2FkaW5nIG9yIHBhcnNpbmcgb2YgdGhlIGVGdXNlIGRhdGEgaGFwcGVuaW5nIGhlcmUuIEZyb20gdGhlcmUgSSBjYW4gdHJhY2sgd2hlcmUgdGhlIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kIGZvciB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NTcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjE2LjgyNzk3MjQ4NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEwMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjAwNSxcbiAgXCJMaW5lQ291bnRcIjogNzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjAwNTpcXHRcXHRydHdfaGNpX3N0b3AocnR3ZGV2KTtcXG4yMDA2OlxcdFxcdHJ0d19tYWNfcG93ZXJfb2ZmKHJ0d2Rldik7XFxuMjAwNzpcXHR9XFxuMjAwODpcXHRcXG4yMDA5OlxcdHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbjIwMTA6XFx0e1xcbjIwMTE6XFx0XFx0c3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VlZnVzZTtcXG4yMDEyOlxcdFxcdGludCByZXQ7XFxuMjAxMzpcXHRcXG4yMDE0OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnJ0d2Rldi1cXHUwMDNlbXV0ZXgpO1xcbjIwMTU6XFx0XFxuMjAxNjpcXHRcXHQvKiBwb3dlciBvbiBtYWMgdG8gcmVhZCBlZnVzZSAqL1xcbjIwMTc6XFx0XFx0cmV0ID0gcnR3X2NoaXBfZWZ1c2VfZW5hYmxlKHJ0d2Rldik7XFxuMjAxODpcXHRcXHRpZiAocmV0KVxcbjIwMTk6XFx0XFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbjIwMjA6XFx0XFxuMjAyMTpcXHRcXHRyZXQgPSBydHdfcGFyc2VfZWZ1c2VfbWFwKHJ0d2Rldik7XFxuMjAyMjpcXHRcXHRpZiAocmV0KVxcbjIwMjM6XFx0XFx0XFx0Z290byBvdXRfZGlzYWJsZTtcXG4yMDI0OlxcdFxcbjIwMjU6XFx0XFx0cmV0ID0gcnR3X2R1bXBfaHdfZmVhdHVyZShydHdkZXYpO1xcbjIwMjY6XFx0XFx0aWYgKHJldClcXG4yMDI3OlxcdFxcdFxcdGdvdG8gb3V0X2Rpc2FibGU7XFxuMjAyODpcXHRcXG4yMDI5OlxcdFxcdHJldCA9IHJ0d19jaGVja19zdXBwb3J0ZWRfcmZlKHJ0d2Rldik7XFxuMjAzMDpcXHRcXHRpZiAocmV0KVxcbjIwMzE6XFx0XFx0XFx0Z290byBvdXRfZGlzYWJsZTtcXG4yMDMyOlxcdFxcbjIwMzM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VjcnlzdGFsX2NhcCA9PSAweGZmKVxcbjIwMzQ6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZWNyeXN0YWxfY2FwID0gMDtcXG4yMDM1OlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlcGFfdHlwZV8yZyA9PSAweGZmKVxcbjIwMzY6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXBhX3R5cGVfMmcgPSAwO1xcbjIwMzc6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VwYV90eXBlXzVnID09IDB4ZmYpXFxuMjAzODpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlcGFfdHlwZV81ZyA9IDA7XFxuMjAzOTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzJnID09IDB4ZmYpXFxuMjA0MDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlbG5hX3R5cGVfMmcgPSAwO1xcbjIwNDE6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VsbmFfdHlwZV81ZyA9PSAweGZmKVxcbjIwNDI6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnID0gMDtcXG4yMDQzOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlY2hhbm5lbF9wbGFuID09IDB4ZmYpXFxuMjA0NDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlY2hhbm5lbF9wbGFuID0gMHg3ZjtcXG4yMDQ1OlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlcmZfYm9hcmRfb3B0aW9uID09IDB4ZmYpXFxuMjA0NjpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlcmZfYm9hcmRfb3B0aW9uID0gMDtcXG4yMDQ3OlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlYnRfc2V0dGluZyBcXHUwMDI2IEJJVCgwKSlcXG4yMDQ4OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VzaGFyZV9hbnQgPSB0cnVlO1xcbjIwNDk6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VyZWdkID09IDB4ZmYpXFxuMjA1MDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlcmVnZCA9IDA7XFxuMjA1MTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPT0gMHhmZilcXG4yMDUyOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzJnID0gMDtcXG4yMDUzOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9PSAweGZmKVxcbjIwNTQ6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfNWcgPSAwO1xcbjIwNTU6XFx0XFxuMjA1NjpcXHRcXHRlZnVzZS1cXHUwMDNlYnRjb2V4ID0gKGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gXFx1MDAyNiAweGUwKSA9PSAweDIwO1xcbjIwNTc6XFx0XFx0ZWZ1c2UtXFx1MDAzZWV4dF9wYV8yZyA9IGVmdXNlLVxcdTAwM2VwYV90eXBlXzJnIFxcdTAwMjYgQklUKDQpID8gMSA6IDA7XFxuMjA1ODpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X2xuYV8yZyA9IGVmdXNlLVxcdTAwM2VsbmFfdHlwZV8yZyBcXHUwMDI2IEJJVCgzKSA/IDEgOiAwO1xcbjIwNTk6XFx0XFx0ZWZ1c2UtXFx1MDAzZWV4dF9wYV81ZyA9IGVmdXNlLVxcdTAwM2VwYV90eXBlXzVnIFxcdTAwMjYgQklUKDApID8gMSA6IDA7XFxuMjA2MDpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVxcdTAwM2VsbmFfdHlwZV81ZyBcXHUwMDI2IEJJVCgzKSA/IDEgOiAwO1xcbjIwNjE6XFx0XFxuMjA2MjpcXHRcXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuMjA2MzpcXHRcXHRcXHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXFx1MDAzZWRldiwgZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuMjA2NDpcXHRcXHRcXHRcXHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpO1xcbjIwNjU6XFx0XFx0XFx0XFx0ZGV2X3dhcm4ocnR3ZGV2LVxcdTAwM2VkZXYsXFxuMjA2NjpcXHRcXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcXFxuXFxcIik7XFxuMjA2NzpcXHRcXHRcXHR9XFxuMjA2ODpcXHRcXHR9XFxuMjA2OTpcXHRcXG4yMDcwOlxcdG91dF9kaXNhYmxlOlxcbjIwNzE6XFx0XFx0cnR3X2NoaXBfZWZ1c2VfZGlzYWJsZShydHdkZXYpO1xcbjIwNzI6XFx0XFxuMjA3MzpcXHRvdXRfdW5sb2NrOlxcbjIwNzQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZydHdkZXYtXFx1MDAzZW11dGV4KTtcXG4yMDc1OlxcdFxcdHJldHVybiByZXQ7XFxuMjA3NjpcXHR9XFxuMjA3NzpcXHRcXG4yMDc4OlxcdHN0YXRpYyBpbnQgcnR3X2NoaXBfYm9hcmRfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbjIwNzk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxODoxNi44MjgxMjUxMTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU4OTg5NTU5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmUsIHVzaW5nIGEgZmlyc3QtcGVyc29uIG5hcnJhdGl2ZSBhbmQgYSBib2xkZWQgaGVhZGVyOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSVFc4OCBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIE15IGluc3RpbmN0IGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIEtjb25maWcgZmlsZXMuIFdpdGggc29tZXRoaW5nIGxpa2UgUlRXODgsIHRoZSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIG5hdmlnYXRlIHRoZSBLY29uZmlnIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBlbmFibGVkLCB3aGF0IGl0cyBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgd2hhdCBjb25maWd1cmFibGUgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBUaGlzIGxpa2VseSBtZWFucyB0cmFjaW5nIHRocm91Z2ggdGhlIGRlcGVuZGVuY3kgY2hhaW5zLCBzdGFydGluZyB3aXRoIGEgZ2VuZXJhbCB3aXJlbGVzcyBvciBuZXR3b3JraW5nIEtjb25maWcsIGFuZCBkcmlsbGluZyBkb3duIHVudGlsIEkgcmVhY2ggdGhlIFJUVzg4LXNwZWNpZmljIG9wdGlvbnMuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBzeW1ib2wgdGhhdCBhY3RpdmF0ZXMgdGhlIFJUVzg4IHN1cHBvcnQsIGFuZCB0aGVuIGhvdyBpdCB0aWVzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBGaW5kaW5nIHRoZSByaWdodCBjb25maWcgb3B0aW9ucyBpcyBrZXkgdG8gdHJvdWJsZXNob290aW5nIGFueSBwcm9ibGVtcyBvciBpZiBJIG5lZWQgdG8gYnVpbGQgYSBjdXN0b20ga2VybmVsLCBJIG5lZWQgdG8ga25vdyB3aGF0IHRvIGVuYWJsZS4gTGV04oCZcyBnZXQgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxOTUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjMyLjcyNzA4MzgyNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMxNTMwMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnPTExPWlmIFJUVzg4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzpjb25maWcgUlRXODhfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNzpjb25maWcgUlRXODhfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDpjb25maWcgUlRXODhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM6Y29uZmlnIFJUVzg4X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjY6Y29uZmlnIFJUVzg4Xzg4MjJCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOTpjb25maWcgUlRXODhfODgyMkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzAtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OF84NzIzWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MzU6Y29uZmlnIFJUVzg4Xzg3MDNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM5OmNvbmZpZyBSVFc4OF84NzIzRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0Mzpjb25maWcgUlRXODhfODgyMUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ2OmNvbmZpZyBSVFc4OF84OFhYQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDk6Y29uZmlnIFJUVzg4Xzg4MjFBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjUzOmNvbmZpZyBSVFc4OF84ODEyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo1Nzpjb25maWcgUlRXODhfODgxNEFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjYwOmNvbmZpZyBSVFc4OF84ODIyQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjcxOmNvbmZpZyBSVFc4OF84ODIyQlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo4Mjpjb25maWcgUlRXODhfODgyMkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo5Mzpjb25maWcgUlRXODhfODgyMkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTA0OmNvbmZpZyBSVFc4OF84ODIyQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTA1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEyNjpjb25maWcgUlRXODhfODcyM0RFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEyNy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEzNzpjb25maWcgUlRXODhfODcyM0RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEzOC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzRFMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNDg6Y29uZmlnIFJUVzg4Xzg3MjNDU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNDktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0NTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTYyOmNvbmZpZyBSVFc4OF84NzIzRFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg3MjNEVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTczOmNvbmZpZyBSVFc4OF84ODIxQ0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTc0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OF84ODIxQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE5NTpjb25maWcgUlRXODhfODgyMUNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE5Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIwNjpjb25maWcgUlRXODhfODgyMUFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIwNy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQVUvODgxMUFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMTc6Y29uZmlnIFJUVzg4Xzg4MTJBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMTgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMjg6Y29uZmlnIFJUVzg4Xzg4MTRBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMzk6Y29uZmlnIFJUVzg4Xzg4MTRBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDAtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTA6Y29uZmlnIFJUVzg4X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1MS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg4IGRlYnVnIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTg6Y29uZmlnIFJUVzg4X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU5LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODggZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjY2OmNvbmZpZyBSVFc4OF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2Ny1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjMzLjI1ODYyMzI2NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzExNzcwOTQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgRGVlcCBpbnRvIHRoZSBgUlRXODhgIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIHJlYWxseSBzY3J1dGluaXplIHRoZSBgUlRXODhgIEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiBldmVyeSBjb25maWd1cmF0aW9uIG9wdGlvbiBhdmFpbGFibGUgZm9yIHRoaXMgd2lyZWxlc3MgZHJpdmVyLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgdGhyb3VnaCBlYWNoIG9wdGlvbiBpbmRpdmlkdWFsbHksIGRpc3NlY3RpbmcgaXRzIHB1cnBvc2UsIGRlcGVuZGVuY2llcywgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgYXJlYXMgb2YgaW50ZXJlc3Qgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyDigJMgcGVyaGFwcyBzb21lIHBvb3JseSBkb2N1bWVudGVkIGRlZmF1bHRzIG9yIGNvbmZpZ3VyYXRpb24gaW50ZXJhY3Rpb25zIHRoYXQgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBtYXBwZWQgb250byB0aGUgS2NvbmZpZyBvcHRpb25zOyB3aGljaCBmZWF0dXJlcyBhcmUgbWFuZGF0b3J5LCBhbmQgd2hpY2ggYXJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSSB3YW50IHRvIGJ1aWxkIGEgdmVyeSBjbGVhciBtZW50YWwgbW9kZWwgb2YgaG93IHRoZSBkcml2ZXIgaXMgc3RydWN0dXJlZCBhbmQgaG93IGRpZmZlcmVudCBoYXJkd2FyZSB2YXJpYW50cyBhcmUgc3VwcG9ydGVkIHRocm91Z2ggdGhpcyBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZm9yIG9wdGltaXphdGlvbiwgYXJlYXMgd2hlcmUgZGVmYXVsdCB2YWx1ZXMgc2VlbSBzdWJvcHRpbWFsLCBvciBvcHBvcnR1bml0aWVzIHRvIGV4cG9zZSBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIHRvIHRoZSBlbmQtdXNlci4gRXNzZW50aWFsbHksIEknbSBkaWdnaW5nIGZvciBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlIHRvIGVuc3VyZSB0aGlzIGRyaXZlciBpcyB0dW5lZCBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgZmxleGliaWxpdHksIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZ3JlYXRlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTc2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTg6NTAuMzc2MzkxNjg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogOTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgUlRXODhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWFjIHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XFxuICAgNzpcXHRcXHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWFjIHdpcmVsZXNzIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBydHc4OC5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0aWYgUlRXODhcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFJUVzg4X0NPUkVcXG4gIDE0OlxcdFxcdHRyaXN0YXRlXFxuICAxNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFJUVzg4X1BDSVxcbiAgMTg6XFx0XFx0dHJpc3RhdGVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFJUVzg4X1NESU9cXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBSVFc4OF9VU0JcXG4gIDI0OlxcdFxcdHRyaXN0YXRlXFxuICAyNTpcXHRcXG4gIDI2OlxcdGNvbmZpZyBSVFc4OF84ODIyQlxcbiAgMjc6XFx0XFx0dHJpc3RhdGVcXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIFJUVzg4Xzg4MjJDXFxuICAzMDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgUlRXODhfODcyM1hcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBSVFc4OF84NzAzQlxcbiAgMzY6XFx0XFx0dHJpc3RhdGVcXG4gIDM3OlxcdFxcdHNlbGVjdCBSVFc4OF84NzIzWFxcbiAgMzg6XFx0XFxuICAzOTpcXHRjb25maWcgUlRXODhfODcyM0RcXG4gIDQwOlxcdFxcdHRyaXN0YXRlXFxuICA0MTpcXHRcXHRzZWxlY3QgUlRXODhfODcyM1hcXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIFJUVzg4Xzg4MjFDXFxuICA0NDpcXHRcXHR0cmlzdGF0ZVxcbiAgNDU6XFx0XFxuICA0NjpcXHRjb25maWcgUlRXODhfODhYWEFcXG4gIDQ3OlxcdFxcdHRyaXN0YXRlXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBSVFc4OF84ODIxQVxcbiAgNTA6XFx0XFx0dHJpc3RhdGVcXG4gIDUxOlxcdFxcdHNlbGVjdCBSVFc4OF84OFhYQVxcbiAgNTI6XFx0XFxuICA1MzpcXHRjb25maWcgUlRXODhfODgxMkFcXG4gIDU0OlxcdFxcdHRyaXN0YXRlXFxuICA1NTpcXHRcXHRzZWxlY3QgUlRXODhfODhYWEFcXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29uZmlnIFJUVzg4Xzg4MTRBXFxuICA1ODpcXHRcXHR0cmlzdGF0ZVxcbiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgUlRXODhfODgyMkJFXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gIDYyOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA2MzpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAgNjQ6XFx0XFx0c2VsZWN0IFJUVzg4X1BDSVxcbiAgNjU6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJCXFxuICA2NjpcXHRcXHRoZWxwXFxuICA2NzpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQkUgY2hpcHNldFxcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHQgIDgwMi4xMWFjIFBDSWUgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuICA3MDpcXHRcXG4gIDcxOlxcdGNvbmZpZyBSVFc4OF84ODIyQlNcXG4gIDcyOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gIDczOlxcdFxcdGRlcGVuZHMgb24gTU1DXFxuICA3NDpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAgNzU6XFx0XFx0c2VsZWN0IFJUVzg4X1NESU9cXG4gIDc2OlxcdFxcdHNlbGVjdCBSVFc4OF84ODIyQlxcbiAgNzc6XFx0XFx0aGVscFxcbiAgNzg6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkJTIGNoaXBzZXRcXG4gIDc5OlxcdFxcbiAgODA6XFx0XFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAgODE6XFx0XFxuICA4MjpcXHRjb25maWcgUlRXODhfODgyMkJVXFxuICA4MzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gIDg0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICA4NTpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAgODY6XFx0XFx0c2VsZWN0IFJUVzg4X1VTQlxcbiAgODc6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJCXFxuICA4ODpcXHRcXHRoZWxwXFxuICA4OTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQlUgY2hpcHNldFxcbiAgOTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE4OjUwLjM3NjY3NDQ5NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTQ0MTAzMzQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBVU0IgRW51bWVyYXRpb24gUGF0aCBvZiBydHc4OCoqXG5cbk9rYXksIGxldCdzIHRyYWNlIHRoaXMuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGUgVVNCIHByb2JlIGZvciBydHc4OCAqYWN0dWFsbHkqIGhpdHMgYHJ0d19jaGlwX2luZm9fc2V0dXBgIGR1cmluZyBkZXZpY2UgZW51bWVyYXRpb24uIFJpZ2h0LCBzbyB3ZSBzdGFydCBpbiBgcnR3X3VzYl9wcm9iZWAuIFdlJ3JlIGFsbG9jYXRpbmcgc29tZSBkYXRhIHN0cnVjdHVyZXM6IHRoZSBgcnR3X2RldmAgYW5kIGBydHdfdXNiYCBzdHJ1Y3R1cmVzLiBXZSdyZSBzZXR0aW5nIHVwIHRoZSBgaWVlZTgwMjExX2h3YCBhbmQgbGlua2luZyBpdCB0byBvdXIgcHJpdmF0ZSBkYXRhLiBUaGUgYHJ0d2Rldi1cdTAwM2VjaGlwYCBwb2ludGVyLCBpbXBvcnRhbnRseSwgaXMgcG9wdWxhdGVkIHdpdGggYGlkLVx1MDAzZWRyaXZlcl9pbmZvYC4gVGhhdCdzIHdoZXJlIHRoZSBjaGlwLXNwZWNpZmljIGluZm9ybWF0aW9uIGNvbWVzIGZyb20uXG5cblRoZW4sIHdlIGFsbG9jYXRlIFJYIGJ1ZmZlcnMsIGluaXRpYWxpemUgdGhlIGNvcmUsIFVTQiBpbnRlcmZhY2UgYW5kIFJYL1RYIGZ1bmN0aW9ucy4gTm93IGhlcmUgaXQgaXM6IHRoZSBjYWxsIHRvIGBydHdfY2hpcF9pbmZvX3NldHVwKHJ0d2RldilgLiBQZXJmZWN0LCBzbyBmYXIsIHNvIGdvb2QuIFRoYXQncyB0aGUgZnVuY3Rpb24gSSB3YW50ZWQgdG8gdmVyaWZ5IHdhcyBjYWxsZWQuXG5cbk5vdywgbGV0J3Mgc2VlIHdoYXQncyAqaW5zaWRlKiBgcnR3X2NoaXBfaW5mb19zZXR1cGAuIEFoLCBpdCBjYWxscyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChydHdkZXYpYC4gT2suIExvb2tpbmcgaW50byB0aGF0IGZ1bmN0aW9uIG5vdy4gVGhpcyBpcyB3aGVyZSB3ZSBtaWdodCBleHBlY3QgdG8gc2VlIGVGdXNlIGNvbmZpZ3VyYXRpb24gaGFwcGVuaW5nLiBXZSBzZWUgY2FsbHMgdG8gZW5hYmxlIHRoZSBlRnVzZSwgcGFyc2UgdGhlIG1hcCwgZHVtcCBoYXJkd2FyZSBmZWF0dXJlcywgY2hlY2sgZm9yIHN1cHBvcnRlZCByYWRpbyBmcmVxdWVuY3kgZWxlbWVudC5cblxuSG9sZCBvbiwgdGhlcmUncyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaGVyZS4gSXQgbG9va3MgbGlrZSBpdCB0cmllcyB0byByZXRyaWV2ZSB0aGUgTUFDIGFkZHJlc3MuIFNwZWNpZmljYWxseSwgaWYgdGhlIHJldHJpZXZlZCBNQUMgaXMgaW52YWxpZCwgaXQgdHJpZXMgdG8gZ2V0IHRoZSBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2Ugd2l0aCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AuIE90aGVyd2lzZSwgaWYgdGhlIGNhbGwgZmFpbHMsIHdlJ3JlIGdlbmVyYXRpbmcgYSByYW5kb20gTUFDIGFkZHJlc3MgYW5kIGlzc3VpbmcgYSB3YXJuaW5nLiBJIG5lZWQgdG8gY2hlY2sgd2hhdCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgYWN0dWFsbHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5OTgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxOTowNS44MTc3MTE3MDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc2OTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZpY2VfZ2V0X21hY19hZGRyZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGxhdGZvcm0uYz0xNTA9c3RhdGljIGludCB4Z2JlX3BsYXRmb3JtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBsYXRmb3JtLmMtMjU0LVxcdC8qIFJldHJpZXZlIHRoZSBNQUMgYWRkcmVzcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGxhdGZvcm0uYzoyNTU6XFx0cmV0ID0gZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhkZXYsIHBkYXRhLVxcdTAwM2VtYWNfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1wbGF0Zm9ybS5jLTI1Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNzAzOT1zdGF0aWMgaW50IHRnM19nZXRfZGV2aWNlX2FkZHJlc3Moc3RydWN0IHRnMyAqdHAsIHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTcxMTMtXFx0aWYgKHRnM19pc19kZWZhdWx0X21hY19hZGRyZXNzKGFkZHIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3MTE0OlxcdFxcdHJldHVybiBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKFxcdTAwMjZ0cC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzExNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTEwODQ9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy0xMDk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjEwOTg6XFx0aWYgKCFkZXZpY2VfZ2V0X21hY19hZGRyZXNzKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIG1hY19hZGRyKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEwOTktXFx0XFx0ZXRoZXJfYWRkcl9jb3B5KGxhbjk2NngtXFx1MDAzZWJhc2VfbWFjLCBtYWNfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmM9MjM3OT1zdGF0aWMgaW50IHNtc2M5MTF4X3Byb2JlX2NvbmZpZyhzdHJ1Y3Qgc21zYzkxMXhfcGxhdGZvcm1fY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmMtMjM5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmM6MjM5MTpcXHRkZXZpY2VfZ2V0X21hY19hZGRyZXNzKGRldiwgY29uZmlnLVxcdTAwM2VtYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2Mvc21zYzkxMXguYy0yMzkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM9MzM1Mz1zdGF0aWMgaW50IGF0aDEwa19jb3JlX3Byb2JlX2Z3KHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtMzQ1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYzozNDUyOlxcdGRldmljZV9nZXRfbWFjX2FkZHJlc3MoYXItXFx1MDAzZWRldiwgYXItXFx1MDAzZW1hY19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0zNDUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDY5Mz1pbnQgYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDcxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwNzEyOlxcdGRldmljZV9nZXRfbWFjX2FkZHJlc3MoYWItXFx1MDAzZWRldiwgbWFjX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3MTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMDA5PXN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA2Mi1cXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjA2MzpcXHRcXHRpZiAoZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhydHdkZXYtXFx1MDAzZWRldiwgZWZ1c2UtXFx1MDAzZWFkZHIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA2NC1cXHRcXHRcXHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXFx1MDAzZWFkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxOTowNS45NjY0ODY3MThaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjczNzE0ODQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIHBpbiBkb3duIHdoZXJlIHRoZSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24gbGl2ZXMuIFRoZSBpbml0aWFsIGluc3RpbmN0IHBvaW50cyB0byBgbmV0L2V0aGVybmV0L2V0aC5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZSBhbmQgZ2VuZXJhbCBwdXJwb3NlLiBOb3csIGxldCdzIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCByZXRyaWV2ZXMgdGhpcyBNQUMgYWRkcmVzcy4gSSdtIGVzcGVjaWFsbHkgY3VyaW91cyBhYm91dCB3aGV0aGVyIGl0IGRpcmVjdGx5IHF1ZXJpZXMgdGhlIGhhcmR3YXJlLCByZWxpZXMgb24gY2FjaGVkIHZhbHVlcywgb3IgaWYgdGhlcmUncyBhbnkgc29waGlzdGljYXRlZCBsb2dpYyB3aXRoaW4gdGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBkaWZmZXJlbnQgbmV0d29yayBpbnRlcmZhY2VzIG9yIGVkZ2UgY2FzZXMuIFRpbWUgdG8gZXhhbWluZSB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MjQzNDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxOTowOC43MDM2Mzc5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc3MTQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZXRoZXJuZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aGVybmV0L2V0aC5jPTYwND1FWFBPUlRfU1lNQk9MKGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MpO1xcbi0tXFxubmV0L2V0aGVybmV0L2V0aC5jLTYxMC0gKi9cXG5uZXQvZXRoZXJuZXQvZXRoLmM6NjExOmludCBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgY2hhciAqYWRkcilcXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjEyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTk6MDguNzUzNDE2OTA2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcwODY5MTM5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBSZWFsdGVrIFJUVzg4IFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIGRlYWQgZW5kLiBIb3dldmVyLCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgaXMgZXhwb3J0ZWQgYW5kIGNhbGxlZCBieSBgcnR3X3BjaV9wcm9iZWAsIGBydHdfc2Rpb19wcm9iZWAsIGFuZCBpbXBvcnRhbnRseSwgYHJ0d191c2JfcHJvYmVgLiAgVGhlIGtleSBxdWVzdGlvbiBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIE15IGluaXRpYWwgdGhvdWdodCBpcyB5ZXMsIGxldCdzIHJldmlldyB0aGUgcHJvbXB0LlxuXG5UaGUgcHJvbXB0IG91dGxpbmVzIHNwZWNpZmljIHNjZW5hcmlvcyB3aGVyZSBhIHBhdGNoIGlzbid0IGZ1enphYmxlLCBhbmQgaXQgZmVlbHMgbGlrZSB0aGlzIG1pZ2h0IGJlIHJlYWNoYWJsZSB3aXRoaW4gYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQuIExldCdzIGRpZyBkZWVwZXIuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHdlIHNob3VsZCBjb25zaWRlciB3aGV0aGVyIHRoaXMgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBwcm9tcHQgbm90ZXMgdGhhdCB0aGUgZnV6emluZyBzaG91bGRuJ3QgaW5jbHVkZSB0ZWFyZG93biBmdW5jdGlvbnMuXG5cbkFoYSEgVVNCIHdpcmVsZXNzIGRvbmdsZXMgYXJlIHN1cHBvcnRlZCBieSBgcnR3ODhgLCBhbmQgdGhlc2UgKmNhbiogYmUgZW11bGF0ZWQgdmlhIFVTQiBSYXcgR2FkZ2V0IG9yIGBkdW1teV9oY2RgLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBwaWVjZS4gV2hlbiB0aGUgZHJpdmVyIHByb2JlcywgYHJ0d191c2JfcHJvYmVgIHJ1bnMgYHJ0d19jaGlwX2luZm9fc2V0dXBgLCB3aGljaCBwYXJzZXMgdGhlIGVmdXNlIGRhdGEuIElmIHRoZSBFdGhlcm5ldCBNQUMgYWRkcmVzcyBpcyBpbnZhbGlkIChgIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcilgKSwgd2hpY2ggaXMgKmhpZ2hseSogcHJvYmFibGUgd2l0aCBlbXVsYXRlZCBvciBmdXp6ZWQgVVNCIGRlc2NyaXB0b3JzLCBpdCB0aGVuIGNhbGxzIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGBldGhfcmFuZG9tX2FkZHJgLiBUaGlzIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiBwYXRoIHRoYXQncyBpbnRlcmVzdGluZyBmb3IgZnV6emluZy5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiAgSSBuZWVkIHRvIGNoZWNrIGBSVFc4OF84ODIyQlVgLCBgUlRXODhfODgyMkNVYCwgYFJUVzg4Xzg3MjNEVWAsIGBSVFc4OF84ODIxQ1VgLCBgUlRXODhfODgyMUFVYCwgYFJUVzg4Xzg4MTJBVWAsIGBSVFc4OF84ODE0QVVgLCBgUlRXODhfQ09SRWAsIGFuZCBgUlRXODhfVVNCYCwgYW5kIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyB0byBlbnN1cmUgdGhlc2UgZHJpdmVycyBhcmUgZW5hYmxlZCBhbmQgY2FuIGJlIGluY2x1ZGVkIGZvciB0ZXN0aW5nLiBHaXZlbiB0aGF0IHRoZXNlIFVTQiBkZXZpY2VzIGFyZSBsaXN0ZWQgYnkgbmFtZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuXG5cbkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIEknbSBnb2luZyB0byBkZXRlcm1pbmUgKipXb3J0aEZ1enppbmc9dHJ1ZSoqLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY3MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoxOToxNS44NDAzNDAyNDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MTMwNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qcnR3ODhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnPTE3PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZzoxODpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWctMTktc291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjE1LjkyNTQ3ODQxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1OTY3NTYxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnMuIEkga25vdyBJIG5lZWQgdG8gZXhhbWluZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnYCBhbmQsIG1vcmUgYnJvYWRseSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBUaGVzZSBhcmUgdGhlIGZpbGVzIHdoZXJlIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0gZGVmaW5lcyB0aGUgc2VsZWN0YWJsZSBmZWF0dXJlcyBhbmQgb3B0aW9ucyBmb3IgdGhlc2UgbmV0d29yayBpbnRlcmZhY2VzLiBCeSBleHBsb3JpbmcgdGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcywgSSBzaG91bGQgYmUgYWJsZSB0byB1bmRlcnN0YW5kIHdoaWNoIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkgYXJlIGRlcGVuZGVudCBvbiBlYWNoIG90aGVyLCBhbmQgcG9zc2libHksIHdoYXQgc3BlY2lmaWMgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyB3aXRoaW4gdGhlc2UgS2NvbmZpZyBmaWxlcyB0byBjb25maWd1cmUgdGhlIHdpcmVsZXNzIGRyaXZlcnMgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTM1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTk6MjIuNTIyMjM3MzM1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcXG4gICAzOlxcdFxcdGJvb2wgXFxcIlJlYWx0ZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9SRUFMVEVLXFxuICAxNDpcXHRcXG4gIDE1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdcXFwiXFxuICAxNjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9LY29uZmlnXFxcIlxcbiAgMTc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L0tjb25maWdcXFwiXFxuICAxODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1xcXCJcXG4gIDE5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXFxcIlxcbiAgMjA6XFx0XFxuICAyMTpcXHRlbmRpZiAjIFdMQU5fVkVORE9SX1JFQUxURUtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MTk6MjIuNTIyMzA3NzQ1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMDAyNDcwODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyLiBJJ20gZ29pbmcgdG8gcG9yZSBvdmVyIGV2ZXJ5IGxpbmUsIGV2ZXJ5IGBjb25maWdgIHN5bWJvbCwgZXZlcnkgYGRlcGVuZHMgb25gIGNsYXVzZSwgYW5kIGV2ZXJ5IGRlZmF1bHQgdmFsdWUuIEknbGwgYmUgbG9va2luZyBmb3IgbnVhbmNlczsgcGVyaGFwcyBzb21lIHN1YnRsZSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5LiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiB0aGlzIG1vZHVsZSwgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgaG93IGV2ZXJ5dGhpbmcgdGllcyB0b2dldGhlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdyYXNwIHRoZSBpbnRlbnQgb2YgdGhlIGRlc2lnbmVycy4gVGhpcyB3aWxsIGdpdmUgbWUgd2hhdCBJIG5lZWQgdG8gYWR2aXNlIG9uIGEgcmVsYXRlZCB0b3BpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2OTcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjQ1LjUyNDc4MTM4OVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg4XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODguXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg4XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OF9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OF9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OF9TRElPXFxuICAyMTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjI6XFx0XFxuICAyMzpcXHRjb25maWcgUlRXODhfVVNCXFxuICAyNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgUlRXODhfODgyMkJcXG4gIDI3OlxcdFxcdHRyaXN0YXRlXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBSVFc4OF84ODIyQ1xcbiAgMzA6XFx0XFx0dHJpc3RhdGVcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIFJUVzg4Xzg3MjNYXFxuICAzMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgUlRXODhfODcwM0JcXG4gIDM2OlxcdFxcdHRyaXN0YXRlXFxuICAzNzpcXHRcXHRzZWxlY3QgUlRXODhfODcyM1hcXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIFJUVzg4Xzg3MjNEXFxuICA0MDpcXHRcXHR0cmlzdGF0ZVxcbiAgNDE6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MjNYXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBSVFc4OF84ODIxQ1xcbiAgNDQ6XFx0XFx0dHJpc3RhdGVcXG4gIDQ1OlxcdFxcbiAgNDY6XFx0Y29uZmlnIFJUVzg4Xzg4WFhBXFxuICA0NzpcXHRcXHR0cmlzdGF0ZVxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgUlRXODhfODgyMUFcXG4gIDUwOlxcdFxcdHRyaXN0YXRlXFxuICA1MTpcXHRcXHRzZWxlY3QgUlRXODhfODhYWEFcXG4gIDUyOlxcdFxcbiAgNTM6XFx0Y29uZmlnIFJUVzg4Xzg4MTJBXFxuICA1NDpcXHRcXHR0cmlzdGF0ZVxcbiAgNTU6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4WFhBXFxuICA1NjpcXHRcXG4gIDU3OlxcdGNvbmZpZyBSVFc4OF84ODE0QVxcbiAgNTg6XFx0XFx0dHJpc3RhdGVcXG4gIDU5OlxcdFxcbiAgNjA6XFx0Y29uZmlnIFJUVzg4Xzg4MjJCRVxcbiAgNjE6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuICA2MjpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNjM6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gIDY0OlxcdFxcdHNlbGVjdCBSVFc4OF9QQ0lcXG4gIDY1OlxcdFxcdHNlbGVjdCBSVFc4OF84ODIyQlxcbiAgNjY6XFx0XFx0aGVscFxcbiAgNjc6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkJFIGNoaXBzZXRcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0ICA4MDIuMTFhYyBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAgNzA6XFx0XFxuICA3MTpcXHRjb25maWcgUlRXODhfODgyMkJTXFxuICA3MjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQlMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIE1NQ1xcbiAgNzQ6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gIDc1OlxcdFxcdHNlbGVjdCBSVFc4OF9TRElPXFxuICA3NjpcXHRcXHRzZWxlY3QgUlRXODhfODgyMkJcXG4gIDc3OlxcdFxcdGhlbHBcXG4gIDc4OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJCUyBjaGlwc2V0XFxuICA3OTpcXHRcXG4gIDgwOlxcdFxcdCAgODAyLjExYWMgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gIDgxOlxcdFxcbiAgODI6XFx0Y29uZmlnIFJUVzg4Xzg4MjJCVVxcbiAgODM6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuICA4NDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgODU6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gIDg2OlxcdFxcdHNlbGVjdCBSVFc4OF9VU0JcXG4gIDg3OlxcdFxcdHNlbGVjdCBSVFc4OF84ODIyQlxcbiAgODg6XFx0XFx0aGVscFxcbiAgODk6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkJVIGNoaXBzZXRcXG4gIDkwOlxcdFxcbiAgOTE6XFx0XFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuICA5MjpcXHRcXG4gIDkzOlxcdGNvbmZpZyBSVFc4OF84ODIyQ0VcXG4gIDk0OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAgOTU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDk2OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuICA5NzpcXHRcXHRzZWxlY3QgUlRXODhfUENJXFxuICA5ODpcXHRcXHRzZWxlY3QgUlRXODhfODgyMkNcXG4gIDk5OlxcdFxcdGhlbHBcXG4gMTAwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDRSBjaGlwc2V0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjQ1LjUyNDg3ODY4OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDk5MTg5NjAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgcnR3ODggS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBkaXZlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdgIGZpbGUuIEknbSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZXNlIEtjb25maWcgZmlsZXMsIHNvIEkgaGF2ZSBhIHByZXR0eSBnb29kIGlkZWEgb2Ygd2hhdCBJJ20gbG9va2luZyBmb3IuIEkgbmVlZCB0byBzZWUgaG93IFJlYWx0ZWsncyBydHc4OCBkcml2ZXIgaXMgY29uZmlndXJlZCwgcGFydGljdWxhcmx5IHRoZSBkZXBlbmRlbmNpZXMsIG9wdGlvbnMsIGFuZCBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgb3IgaGFyZHdhcmUgc3VwcG9ydCB0aGV5J3JlIGV4cG9zaW5nLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBhIGhpZXJhcmNoaWNhbCBvcmdhbml6YXRpb24sIHdpdGggdG9wLWxldmVsIG9wdGlvbnMgZW5jb21wYXNzaW5nIGJyb2FkZXIgZHJpdmVyIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGVuIG5lc3RlZCBjb25maWd1cmF0aW9ucyBmb3IgdGhpbmdzIGxpa2Ugc3BlY2lmaWMgY2hpcHNldHMsIHBvd2VyIG1hbmFnZW1lbnQgZmVhdHVyZXMsIGRlYnVnZ2luZyBvcHRpb25zLCBhbmQgcmVndWxhdG9yeSBkb21haW4gY2hvaWNlcy5cblxuTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXNuJ3QganVzdCB0byAqdW5kZXJzdGFuZCogaXQ7IEknbSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIGl0IGFnYWluc3QgdGhlIGV4aXN0aW5nIHdpcmVsZXNzIHN0YWNrLCBhbmQgaG93IEknZCBhcHByb2FjaCBpbnRlZ3JhdGluZyBvciBtb2RpZnlpbmcgaXQgaWYgSSBuZWVkZWQgdG8uIFNwZWNpZmljYWxseSwgSeKAmWxsIGxvb2sgZm9yIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgc3BlY2lhbCBhdHRlbnRpb24gZHVyaW5nIGJ1aWxkLCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcy4gSSdsbCBiZSBub3RpbmcgZG93biBhbnkgbm9uLW9idmlvdXMgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgdHJpcCBtZSB1cCBsYXRlci4gSSdtIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBiZSB1bm5lY2Vzc2FyaWx5IGNvbXBsZXggb3IgdGhhdCBkZXZpYXRlcyBmcm9tIGNvbW1vbiBLY29uZmlnIGNvbnZlbnRpb25zLCBhcyB0aG9zZSBhcmUgcG90ZW50aWFsIHJlZCBmbGFncyBmb3IgZnV0dXJlIG1haW50ZW5hbmNlIGlzc3Vlcy4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgaXMgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBmb2xsb3dzIGJlc3QgcHJhY3RpY2VzOyBhIGNsZWFuIGFuZCByZWFkYWJsZSBLY29uZmlnIG1ha2VzIGV2ZXJ5dGhpbmcgbXVjaCBlYXNpZXIgZG93biB0aGUgcm9hZCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjgyMDgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjU2LjUxNjc3ODQ4MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMTpcXHRcXG4gMTAyOlxcdFxcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTAzOlxcdFxcbiAxMDQ6XFx0Y29uZmlnIFJUVzg4Xzg4MjJDU1xcbiAxMDU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkNTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMDY6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gMTA3OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDEwODpcXHRcXHRzZWxlY3QgUlRXODhfU0RJT1xcbiAxMDk6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJDXFxuIDExMDpcXHRcXHRoZWxwXFxuIDExMTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1MgY2hpcHNldFxcbiAxMTI6XFx0XFxuIDExMzpcXHRcXHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDExNDpcXHRcXG4gMTE1OlxcdGNvbmZpZyBSVFc4OF84ODIyQ1VcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMTc6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gMTE4OlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDExOTpcXHRcXHRzZWxlY3QgUlRXODhfVVNCXFxuIDEyMDpcXHRcXHRzZWxlY3QgUlRXODhfODgyMkNcXG4gMTIxOlxcdFxcdGhlbHBcXG4gMTIyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDVSBjaGlwc2V0XFxuIDEyMzpcXHRcXG4gMTI0OlxcdFxcdCAgODAyLjExYWMgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxMjU6XFx0XFxuIDEyNjpcXHRjb25maWcgUlRXODhfODcyM0RFXFxuIDEyNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzREUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTI4OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDEyOTpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxMzA6XFx0XFx0c2VsZWN0IFJUVzg4X1BDSVxcbiAxMzE6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MjNEXFxuIDEzMjpcXHRcXHRoZWxwXFxuIDEzMzpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4NzIzREUgY2hpcHNldFxcbiAxMzQ6XFx0XFxuIDEzNTpcXHRcXHQgIDgwMi4xMW4gUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTM2OlxcdFxcbiAxMzc6XFx0Y29uZmlnIFJUVzg4Xzg3MjNEU1xcbiAxMzg6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0RTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxMzk6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gMTQwOlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDE0MTpcXHRcXHRzZWxlY3QgUlRXODhfU0RJT1xcbiAxNDI6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MjNEXFxuIDE0MzpcXHRcXHRoZWxwXFxuIDE0NDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4NzIzRFMgY2hpcHNldFxcbiAxNDU6XFx0XFxuIDE0NjpcXHRcXHQgIDgwMi4xMW4gU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTQ3OlxcdFxcbiAxNDg6XFx0Y29uZmlnIFJUVzg4Xzg3MjNDU1xcbiAxNDk6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0NTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAxNTA6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gMTUxOlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDE1MjpcXHRcXHRzZWxlY3QgUlRXODhfU0RJT1xcbiAxNTM6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MDNCXFxuIDE1NDpcXHRcXHRoZWxwXFxuIDE1NTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBlbmFibGUgc3VwcG9ydCBmb3IgODcyM0NTIGNoaXBzZXQgKEVYUEVSSU1FTlRBTClcXG4gMTU2OlxcdFxcbiAxNTc6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSA4NzIzQ1MgODAyLjExbiBTRElPXFxuIDE1ODpcXHRcXHQgIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlci5cXG4gMTU5OlxcdFxcbiAxNjA6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODhfODcyM2NzLlxcbiAxNjE6XFx0XFxuIDE2MjpcXHRjb25maWcgUlRXODhfODcyM0RVXFxuIDE2MzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzRFUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTY0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDE2NTpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxNjY6XFx0XFx0c2VsZWN0IFJUVzg4X1VTQlxcbiAxNjc6XFx0XFx0c2VsZWN0IFJUVzg4Xzg3MjNEXFxuIDE2ODpcXHRcXHRoZWxwXFxuIDE2OTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4NzIzRFUgY2hpcHNldFxcbiAxNzA6XFx0XFxuIDE3MTpcXHRcXHQgIDgwMi4xMW4gVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxNzI6XFx0XFxuIDE3MzpcXHRjb25maWcgUlRXODhfODgyMUNFXFxuIDE3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTc1OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDE3NjpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxNzc6XFx0XFx0c2VsZWN0IFJUVzg4X1BDSVxcbiAxNzg6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjFDXFxuIDE3OTpcXHRcXHRoZWxwXFxuIDE4MDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIxQ0UgY2hpcHNldFxcbiAxODE6XFx0XFxuIDE4MjpcXHRcXHQgIDgwMi4xMWFjIFBDSWUgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDE4MzpcXHRcXG4gMTg0OlxcdGNvbmZpZyBSVFc4OF84ODIxQ1NcXG4gMTg1OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTg2OlxcdFxcdGRlcGVuZHMgb24gTU1DXFxuIDE4NzpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxODg6XFx0XFx0c2VsZWN0IFJUVzg4X1NESU9cXG4gMTg5OlxcdFxcdHNlbGVjdCBSVFc4OF84ODIxQ1xcbiAxOTA6XFx0XFx0aGVscFxcbiAxOTE6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMUNTIGNoaXBzZXRcXG4gMTkyOlxcdFxcbiAxOTM6XFx0XFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxOTQ6XFx0XFxuIDE5NTpcXHRjb25maWcgUlRXODhfODgyMUNVXFxuIDE5NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTk3OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDE5ODpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxOTk6XFx0XFx0c2VsZWN0IFJUVzg4X1VTQlxcbiAyMDA6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjFDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjE5OjU2LjUxNjg3MDYzMVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTM5MDM3MDk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIgY29uZmlndXJhdGlvbi4gTGV0J3MgZ2V0IHNwZWNpZmljIGFuZCB6ZXJvIGluIG9uIGxpbmVzIDIwMSB0aHJvdWdoIDI3MCBvZiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ2AgZmlsZS4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBmdW5jdGlvbmFsaXRpZXMgb2YgdGhpcyBkcml2ZXIgYXJlIGRlZmluZWQgYW5kIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSSB3YW50IHRvIHNlZSB3aGljaCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyLCB0aGUgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZSBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cywgYW5kIGhvdyB0aGUgZGV2ZWxvcGVycyBoYXZlIHN0cnVjdHVyZWQgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIG92ZXJhbGwgZGVzaWduIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIGN1c3RvbWl6YXRpb24gb3IgZGVidWdnaW5nLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBtaXggb2YgZ2VuZXJhbCBvcHRpb25zIHJlbGF0ZWQgdG8gUEhZIHBhcmFtZXRlcnMsIHBvd2VyIG1hbmFnZW1lbnQsIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLCBhbmQgcG9zc2libHkgc29tZSBzcGVjaWZpYyBoYXJkd2FyZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRpbmcgb24gdGhlIFJlYWx0ZWsgY2hpcHNldHMgc3VwcG9ydGVkIHdpdGhpbiB0aGlzIEtjb25maWcgc2VjdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGtleSBoZXJl4oCUd2hpY2ggb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgZm9yIGEgZ2l2ZW4gUmVhbHRlay1zcGVjaWZpYyBvcHRpb24gdG8gd29yaz8gSSdtIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgY2VydGFpbiBvcHRpb25zIHdpbGwgYmUgZ3VhcmRlZCBieSBzcGVjaWZpYyBgaWZkZWZgIHN0YXRlbWVudHMgb3IgYHNlbGVjdGAgZGlyZWN0aXZlcywgdG8gc3VwcG9ydCBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHdpbGwgaG9wZWZ1bGx5IHNoZWQgc29tZSBsaWdodCBvbiB0aGUgZGVzaWduIGNob2ljZXMgbWFkZSB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IGFjcm9zcyB2YXJpb3VzIFJlYWx0ZWsgd2lyZWxlc3MgZGV2aWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMTQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIwOjE3LjkwNzI0NTEzN1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAxLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAxOlxcdFxcdGhlbHBcXG4gMjAyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjFDVSBjaGlwc2V0XFxuIDIwMzpcXHRcXG4gMjA0OlxcdFxcdCAgODAyLjExYWMgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAyMDU6XFx0XFxuIDIwNjpcXHRjb25maWcgUlRXODhfODgyMUFVXFxuIDIwNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQVUvODgxMUFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuIDIwODpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAyMDk6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gMjEwOlxcdFxcdHNlbGVjdCBSVFc4OF9VU0JcXG4gMjExOlxcdFxcdHNlbGVjdCBSVFc4OF84ODIxQVxcbiAyMTI6XFx0XFx0aGVscFxcbiAyMTM6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMUFVIGFuZCA4ODExQVUgY2hpcHNldFxcbiAyMTQ6XFx0XFxuIDIxNTpcXHRcXHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMjE2OlxcdFxcbiAyMTc6XFx0Y29uZmlnIFJUVzg4Xzg4MTJBVVxcbiAyMTg6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuIDIxOTpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAyMjA6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gMjIxOlxcdFxcdHNlbGVjdCBSVFc4OF9VU0JcXG4gMjIyOlxcdFxcdHNlbGVjdCBSVFc4OF84ODEyQVxcbiAyMjM6XFx0XFx0aGVscFxcbiAyMjQ6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgxMkFVIGNoaXBzZXRcXG4gMjI1OlxcdFxcbiAyMjY6XFx0XFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDIyNzpcXHRcXG4gMjI4OlxcdGNvbmZpZyBSVFc4OF84ODE0QUVcXG4gMjI5OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MTRBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbiAyMzA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gMjMxOlxcdFxcdHNlbGVjdCBSVFc4OF9DT1JFXFxuIDIzMjpcXHRcXHRzZWxlY3QgUlRXODhfUENJXFxuIDIzMzpcXHRcXHRzZWxlY3QgUlRXODhfODgxNEFcXG4gMjM0OlxcdFxcdGhlbHBcXG4gMjM1OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MTRBRSBjaGlwc2V0XFxuIDIzNjpcXHRcXG4gMjM3OlxcdFxcdCAgODAyLjExYWMgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMjM4OlxcdFxcbiAyMzk6XFx0Y29uZmlnIFJUVzg4Xzg4MTRBVVxcbiAyNDA6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgxNEFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuIDI0MTpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAyNDI6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG4gMjQzOlxcdFxcdHNlbGVjdCBSVFc4OF9VU0JcXG4gMjQ0OlxcdFxcdHNlbGVjdCBSVFc4OF84ODE0QVxcbiAyNDU6XFx0XFx0aGVscFxcbiAyNDY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgxNEFVIGNoaXBzZXRcXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0ICA4MDIuMTFhYyBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxuIDI0OTpcXHRcXG4gMjUwOlxcdGNvbmZpZyBSVFc4OF9ERUJVR1xcbiAyNTE6XFx0XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OCBkZWJ1ZyBzdXBwb3J0XFxcIlxcbiAyNTI6XFx0XFx0ZGVwZW5kcyBvbiBSVFc4OF9DT1JFXFxuIDI1MzpcXHRcXHRoZWxwXFxuIDI1NDpcXHRcXHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0XFxuIDI1NTpcXHRcXG4gMjU2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBzaW1wbGlmeSBkZWJ1ZyBwcm9ibGVtc1xcbiAyNTc6XFx0XFxuIDI1ODpcXHRjb25maWcgUlRXODhfREVCVUdGU1xcbiAyNTk6XFx0XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OCBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuIDI2MDpcXHRcXHRkZXBlbmRzIG9uIFJUVzg4X0NPUkVcXG4gMjYxOlxcdFxcdGhlbHBcXG4gMjYyOlxcdFxcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnRcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIHNpbXBsaWZ5IGRlYnVnIHByb2JsZW1zXFxuIDI2NTpcXHRcXG4gMjY2OlxcdGNvbmZpZyBSVFc4OF9MRURTXFxuIDI2NzpcXHRcXHRib29sXFxuIDI2ODpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuIDI2OTpcXHRcXHRkZWZhdWx0IHlcXG4gMjcwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMDoxNy45MDczMzUwMjdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk5MzY1MTIxMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZvY3VzU3ltYm9scywgRW5hYmxlQ29uZmlncywgYW5kIFdvcnRoRnV6emluZyBmb3IgUlRXODggRHJpdmVyIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBrZXkgcG9pbnRzIGZvciBmdXp6aW5nIHRoZSBSVFc4OCBkcml2ZXIuXG5cbkZpcnN0LCB0aGUgKkZvY3VzU3ltYm9scyouIEkgc2VlIGBydHdfY2hpcF9pbmZvX3NldHVwYCBpcyBhIGNyaXRpY2FsIGV4cG9ydGVkIHN5bWJvbC4gSXQncyB0aGUgb25lIHRoYXQgY2FsbHMgdGhlIHN0YXRpYyBmdW5jdGlvbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAuIE5vdywgYHJ0d191c2JfcHJvYmVgIGNhbGxzIGBydHdfY2hpcF9pbmZvX3NldHVwYCwgYnV0IHRoZXJlIGFyZSBvdGhlciBwcm9iZXMgdG8gY29uc2lkZXIgc3VjaCBhcyBgcnR3X3BjaV9wcm9iZWAsIGFuZCBgcnR3X3NkaW9fcHJvYmVgLiBIb3dldmVyLCBgcnR3X2NoaXBfaW5mb19zZXR1cGAgYXBwZWFycyB0byBiZSB0aGUgY2VudHJhbCBlbnRyeSBwb2ludC4gVGhlIGZhY3QgdGhhdCBpdCdzIGBFWFBPUlRfU1lNQk9MYCBtZWFucyBpdCdzICpub3QqIGlubGluZWQsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0LiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaXMgc3RhdGljLCBjYWxsZWQgb25seSBvbmNlIHdpdGhpbiBgcnR3X2NoaXBfaW5mb19zZXR1cGAsIHdoaWNoIGlzIGV4cGVjdGVkLiBTbywgZm9jdXNpbmcgb24gYHJ0d19jaGlwX2luZm9fc2V0dXBgIGFuZCBieSBleHRlbnNpb24sIGBydHdfdXNiX3Byb2JlYCBzZWVtcyBsaWtlIGEgZ29vZCBhcHByb2FjaC5cblxuTmV4dCwgdGhlICpFbmFibGVDb25maWdzKi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQuIFRoZSBsaXN0IHNob3dzIGBSVFc4OGAsIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBzcGVjaWZpYyBjaGlwc2V0cyBsaWtlIGBSVFc4OF84ODIyQlVgLCBgUlRXODhfODgyMkNVYCwgZXRjLiBBbHNvLCBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgZXNzZW50aWFsIGZvciB0aGlzIHRvIHdvcmsuXG5cbkZpbmFsbHksIGlzIHRoaXMgY29kZSAqV29ydGhGdXp6aW5nKj8gTGV0J3MgZ28gdGhyb3VnaCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuXG5cbjEuICBJcyBpdCBqdXN0IGRvY3VtZW50YXRpb24gb3IgS2NvbmZpZyBjaGFuZ2VzPyBObywgaXQncyBtb2RpZnlpbmcgdGhlIGNvcmUgZHJpdmVyIGZpbGU6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AuIFRoaXMgaXMgZ29vZC5cbjIuICBBcmUgdGhlc2UganVzdCBsb2dnaW5nIGNoYW5nZXM/IE5vLCBpdCdzIGFkZGluZyBhIGNhbGwgdG8gYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgLCBhbmQgdGhlIGNvZGUgKmludGVyYWN0cyB3aXRoIGZpcm13YXJlIGFuZCBkZXZpY2UgcHJvcGVydGllcyogYW5kLCBpbXBvcnRhbnRseSwgYWx0ZXJzIHRoZSBNQUMgYWRkcmVzcyByZXNvbHV0aW9uIGlmIHRoZSBlZnVzZSBNQUMgaXMgYmFkLlxuMy4gIEFyZSB0aGVzZSBzaW1wbGUgY29uc3RhbnQgY2hhbmdlcz8gTm9wZS5cbjQuICBDYW4gdGhpcyBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBZZXMsIHZpYSBVU0IgZW11bGF0aW9uIHVzaW5nIGR1bW15XFxfaGNkIG9yIFJhdyBHYWRnZXQuXG41LiAgSXMgdGhpcyBzb21lIGVzb3RlcmljIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcj8gTm8sIGl0IHN1cHBvcnRzIFVTQiBkZXZpY2VzLlxuNi4gIEFyZSB0aGVzZSB0ZWFyZG93biBjYWxsYmFja3M/IE5vLlxuXG5UaGVyZWZvcmUsICpXb3J0aEZ1enppbmcqIGlzIGluZGVlZCB0cnVlLCBhbmQgdGhpcyBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGJ1aWxkcyBjbGVhbmx5IGFuZCB0aGVuIEknbGwgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTQ2NCwiT3V0cHV0VG9rZW5zIjoyNzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMTowNy44NDM4NTAwNzVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDMxNTM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODhcIixcbiAgICBcIlJUVzg4X0NPUkVcIixcbiAgICBcIlJUVzg4X1VTQlwiLFxuICAgIFwiUlRXODhfODgyMkJVXCIsXG4gICAgXCJSVFc4OF84ODIyQ1VcIixcbiAgICBcIlJUVzg4Xzg3MjNEVVwiLFxuICAgIFwiUlRXODhfODgyMUNVXCIsXG4gICAgXCJSVFc4OF84ODIxQVVcIixcbiAgICBcIlJUVzg4Xzg4MTJBVVwiLFxuICAgIFwiUlRXODhfODgxNEFVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3X2NoaXBfaW5mb19zZXR1cFwiLFxuICAgIFwicnR3X3VzYl9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQUMgYWRkcmVzcyBzZXR1cCBsb2dpYyBpbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCAoY2FsbGVkIGR1cmluZyBjaGlwIGluZm8gc2V0dXApIHRvIGF0dGVtcHQgZmV0Y2hpbmcgYSBNQUMgYWRkcmVzcyB2aWEgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBnZW5lcmF0aW5nIGEgcmFuZG9tIE1BQyBhZGRyZXNzLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgaW5jbHVkaW5nIGZvciBVU0ItYmFzZWQgcnR3ODggV2lGaSBkZXZpY2VzIHRoYXQgY2FuIGJlIGVtdWxhdGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQvUmF3IEdhZGdldCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF9DT1JFXCIsXG4gICAgXCJSVFc4OF9VU0JcIixcbiAgICBcIlJUVzg4Xzg4MjJCVVwiLFxuICAgIFwiUlRXODhfODgyMkNVXCIsXG4gICAgXCJSVFc4OF84NzIzRFVcIixcbiAgICBcIlJUVzg4Xzg4MjFDVVwiLFxuICAgIFwiUlRXODhfODgyMUFVXCIsXG4gICAgXCJSVFc4OF84ODEyQVVcIixcbiAgICBcIlJUVzg4Xzg4MTRBVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0d19jaGlwX2luZm9fc2V0dXBcIixcbiAgICBcInJ0d191c2JfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUFDIGFkZHJlc3Mgc2V0dXAgbG9naWMgaW4gYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgKGNhbGxlZCBkdXJpbmcgY2hpcCBpbmZvIHNldHVwKSB0byBhdHRlbXB0IGZldGNoaW5nIGEgTUFDIGFkZHJlc3MgdmlhIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gZ2VuZXJhdGluZyBhIHJhbmRvbSBNQUMgYWRkcmVzcy4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGluY2x1ZGluZyBmb3IgVVNCLWJhc2VkIHJ0dzg4IFdpRmkgZGV2aWNlcyB0aGF0IGNhbiBiZSBlbXVsYXRlZCBhbmQgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0L1JhdyBHYWRnZXQgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjE6MDcuOTI0MTc0MzdaIiwiU2VxIjozNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMzMwMDc4Njc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIxOjA3LjkyNDczNzE0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzEzMzAwMjE5ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgIG1vZGlmaWVzIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgIHNvIHRoYXQgd2hlbiBhbiBpbnZhbGlkIE1BQyBhZGRyZXNzIGlzIHJlYWQgZnJvbSB0aGUgZWZ1c2UsIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdG8gZmV0Y2ggYSB2YWxpZCBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSAvIGZpcm13YXJlIG5vZGUgb3IgTlZNRU0gdXNpbmcgYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgYmVmb3JlIGZhbGxpbmcgYmFjayB0byBgZXRoX3JhbmRvbV9hZGRyKClgLiBCb3RoIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIChvbiBzdWNjZXNzKSBhbmQgYGV0aF9yYW5kb21fYWRkcigpYCAob24gZmFsbGJhY2spIGNvbXBsZXRlbHkgb3ZlcndyaXRlIGFuZCBpbml0aWFsaXplIGFsbCBgRVRIX0FMRU5gIGJ5dGVzIG9mIGBlZnVzZS1cXHUwMDNlYWRkcmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaCBjb25kaXRpb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWI4OTJiOGMzMDI1NzhlNTIxMjc3YjI5YmZiZmQ3ZTliZTNmYTMzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTQ6MTU6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG5pbmRleCBjZDkyNTQzNzBmY2M3Li4wZjIzNDk4YjVjOTZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXG5AQCAtMjA2MCw4ICsyMDYwLDExIEBAIHN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuIFx0ZWZ1c2UtXHUwMDNlZXh0X2xuYV81ZyA9IGVmdXNlLVx1MDAzZWxuYV90eXBlXzVnIFx1MDAyNiBCSVQoMykgPyAxIDogMDtcbiBcbiBcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cdTAwM2VhZGRyKSkge1xuLVx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4tXHRcdGRldl93YXJuKHJ0d2Rldi1cdTAwM2VkZXYsIFwiZWZ1c2UgTUFDIGludmFsaWQsIHVzaW5nIHJhbmRvbVxcblwiKTtcbitcdFx0aWYgKGRldmljZV9nZXRfbWFjX2FkZHJlc3MocnR3ZGV2LVx1MDAzZWRldiwgZWZ1c2UtXHUwMDNlYWRkcikpIHtcbitcdFx0XHRldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7XG4rXHRcdFx0ZGV2X3dhcm4ocnR3ZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdCBcImZhaWxlZCB0byBnZXQgdmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbVxcblwiKTtcbitcdFx0fVxuIFx0fVxuIFxuIG91dF9kaXNhYmxlOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjE6MDcuOTI0NzM4MDFaIiwiU2VxIjozOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQzNTkzMDQ5NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXQgYXBwZWFycyB3ZSdyZSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW52YWxpZCBNQUMgYWRkcmVzc2VzIHJlYWQgZnJvbSB0aGUgZUZ1c2UuIEJlZm9yZSwgaXQgd291bGQgc2ltcGx5IGdlbmVyYXRlIGEgcmFuZG9tIE1BQy4gTm93LCBpdCdzIGF0dGVtcHRpbmcgdG8gb2J0YWluIGEgdmFsaWQgTUFDIGFkZHJlc3MgdXNpbmcgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGJlZm9yZSByZXNvcnRpbmcgdG8gYSByYW5kb20gZ2VuZXJhdGlvbi5cblxuTXkgZmlyc3QgaW1wdWxzZSBpcyB0byBjb25maXJtIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2hhbmdlIGluIHRoZSBmaWxlLiBJIHdhbnQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcuIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIHNlY3Rpb24gb2YgY29kZSBhcm91bmQgbGluZSAyMDYwIGluIHRoYXQgZmlsZS4gSSB0aGluayBJJ2xsIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gcXVpY2tseSBnZXQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCBjbGFyaWZ5IGFueSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgZmFjdG9ycyBhdCBwbGF5IHdpdGggdGhpcyBwYXRjaC4gVGhpcyBhcHByb2FjaCB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgY2hhbmdlJ3MgaW50ZW50IGFuZCBwb3RlbnRpYWwgaW1wYWN0IG1vcmUgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMjowMi4yODQwNDk4NjFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwNDUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIwNDU6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPT0gMHhmZilcXG4yMDQ2OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xcbjIwNDc6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VidF9zZXR0aW5nIFxcdTAwMjYgQklUKDApKVxcbjIwNDg6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXNoYXJlX2FudCA9IHRydWU7XFxuMjA0OTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXJlZ2QgPT0gMHhmZilcXG4yMDUwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZWdkID0gMDtcXG4yMDUxOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9PSAweGZmKVxcbjIwNTI6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPSAwO1xcbjIwNTM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID09IDB4ZmYpXFxuMjA1NDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9IDA7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdGVmdXNlLVxcdTAwM2VidGNvZXggPSAoZWZ1c2UtXFx1MDAzZXJmX2JvYXJkX29wdGlvbiBcXHUwMDI2IDB4ZTApID09IDB4MjA7XFxuMjA1NzpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzJnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfMmcgXFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcXG4yMDU4OlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzJnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzJnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA1OTpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzVnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfNWcgXFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcXG4yMDYwOlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzVnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA2MTpcXHRcXG4yMDYyOlxcdFxcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDYzOlxcdFxcdFxcdGlmIChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cXHUwMDNlZGV2LCBlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDY0OlxcdFxcdFxcdFxcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cXHUwMDNlYWRkcik7XFxuMjA2NTpcXHRcXHRcXHRcXHRkZXZfd2FybihydHdkZXYtXFx1MDAzZWRldixcXG4yMDY2OlxcdFxcdFxcdFxcdFxcdCBcXFwiZmFpbGVkIHRvIGdldCB2YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tXFxcXG5cXFwiKTtcXG4yMDY3OlxcdFxcdFxcdH1cXG4yMDY4OlxcdFxcdH1cXG4yMDY5OlxcdFxcbjIwNzA6XFx0b3V0X2Rpc2FibGU6XFxuMjA3MTpcXHRcXHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XFxuMjA3MjpcXHRcXG4yMDczOlxcdG91dF91bmxvY2s6XFxuMjA3NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnJ0d2Rldi1cXHUwMDNlbXV0ZXgpO1xcbjIwNzU6XFx0XFx0cmV0dXJuIHJldDtcXG4yMDc2OlxcdH1cXG4yMDc3OlxcdFxcbjIwNzg6XFx0c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuMjA3OTpcXHR7XFxuMjA4MDpcXHRcXHRzdHJ1Y3QgcnR3X2hhbCAqaGFsID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlaGFsO1xcbjIwODE6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0d19yZmVfZGVmICpyZmVfZGVmID0gcnR3X2dldF9yZmVfZGVmKHJ0d2Rldik7XFxuMjA4MjpcXHRcXG4yMDgzOlxcdFxcdGlmICghcmZlX2RlZilcXG4yMDg0OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMjowMi4yODQyMjkxNTJaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzcwNDM0NDgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHdpdGggdGhpcyBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24uIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQncyBpbXBsZW1lbnRlZCBhbmQgd2hlcmUgaXQncyB1c2VkLiBTaW5jZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGlzIGNvZGViYXNlLCB0aGUgcXVpY2tlc3Qgd2F5IHRvIGZpbmQgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIGEgZnVuY3Rpb24gbGlrZSB0aGlzIGlzIHRvIHNpbXBseSB1c2UgZ3JlcCB0byBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgb2YgaXQuIFRoYXQncyB1c3VhbGx5IHRoZSBmYXN0ZXN0IHdheSB0byBnZXQgYW4gaW5pdGlhbCBvdmVydmlldyBvZiBpdHMgY29udGV4dC4gQSBzaW1wbGUgZ3JlcCB3aWxsIHRlbGwgbWUgd2hlcmUgaXQncyBkZWZpbmVkLCB3aGVyZSBpdCdzIGNhbGxlZCwgYW5kIHdoYXQga2luZCBvZiBkYXRhIGl0J3Mgb3BlcmF0aW5nIG9uLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgc29tZXRoaW5nIG5ldyB0aGF0IEkgYW0gbG9va2luZyBpbnRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMjowOS45ODg1NzcwNDlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTY5NDk5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oPTM0PWludCBudm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICphZGRyYnVmKTtcXG5pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmg6MzU6aW50IGRldmljZV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICphZGRyKTtcXG5pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgtMzYtaW50IGRldmljZV9nZXRfZXRoZGV2X2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbm5ldC9ldGhlcm5ldC9ldGguYz02MDQ9RVhQT1JUX1NZTUJPTChmd25vZGVfZ2V0X21hY19hZGRyZXNzKTtcXG4tLVxcbm5ldC9ldGhlcm5ldC9ldGguYy02MTAtICovXFxubmV0L2V0aGVybmV0L2V0aC5jOjYxMTppbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpXFxubmV0L2V0aGVybmV0L2V0aC5jLTYxMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIyOjEyLjA0NTUzNzg4NloiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzA1MTcyNTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDIEFkZHJlc3MgUmV0cmlldmFsKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlJ3JlIHB1bGxpbmcgdGhlIE1BQyBhZGRyZXNzIGZyb20gYSBkZXZpY2UsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgcHJvYmFibHkgaGFuZGxlZCBzb21ld2hlcmUgaW4gdGhlIEV0aGVybmV0IGRyaXZlciBjb2RlLCBzbyBteSBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBvdmVyIHRvIGBuZXQvZXRoZXJuZXQvZXRoLmNgLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gdGhlcmUuIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXRzZWxmLCBhbmQgdGhlbiBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSBoYXJkd2FyZS4gSSB3YW50IHRvIHNlZSBob3cgd2UncmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgTklDLCB3aGV0aGVyIHdlJ3JlIHVzaW5nIHJlZ2lzdGVycywgb3IgRE1BLCBhbmQgd2hhdCBhYnN0cmFjdGlvbiBsYXllciBpcyBiZWluZyB1c2VkIHRvIG1ha2UgdGhpcyBoYXBwZW4uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgaW4gaG93IHdlJ3JlIGZldGNoaW5nIHRoZSBhZGRyZXNzLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMjoyNS4wOTcyNjc4NTZaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGhlcm5ldC9ldGguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDU6XFx0XFxuIDYwNjpcXHQvKipcXG4gNjA3OlxcdCAqIGRldmljZV9nZXRfbWFjX2FkZHJlc3MgLSBHZXQgdGhlIE1BQyBmb3IgYSBnaXZlbiBkZXZpY2VcXG4gNjA4OlxcdCAqIEBkZXY6XFx0UG9pbnRlciB0byB0aGUgZGV2aWNlXFxuIDYwOTpcXHQgKiBAYWRkcjpcXHRBZGRyZXNzIG9mIGJ1ZmZlciB0byBzdG9yZSB0aGUgTUFDIGluXFxuIDYxMDpcXHQgKi9cXG4gNjExOlxcdGludCBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgY2hhciAqYWRkcilcXG4gNjEyOlxcdHtcXG4gNjEzOlxcdFxcdGlmICghZndub2RlX2dldF9tYWNfYWRkcmVzcyhkZXZfZndub2RlKGRldiksIGFkZHIpKVxcbiA2MTQ6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDYxNTpcXHRcXG4gNjE2OlxcdFxcdHJldHVybiBudm1lbV9nZXRfbWFjX2FkZHJlc3MoZGV2LCBhZGRyKTtcXG4gNjE3OlxcdH1cXG4gNjE4OlxcdEVYUE9SVF9TWU1CT0woZGV2aWNlX2dldF9tYWNfYWRkcmVzcyk7XFxuIDYxOTpcXHRcXG4gNjIwOlxcdC8qKlxcbiA2MjE6XFx0ICogZGV2aWNlX2dldF9ldGhkZXZfYWRkcmVzcyAtIFNldCBuZXRkZXYncyBNQUMgYWRkcmVzcyBmcm9tIGEgZ2l2ZW4gZGV2aWNlXFxuIDYyMjpcXHQgKiBAZGV2OlxcdFBvaW50ZXIgdG8gdGhlIGRldmljZVxcbiA2MjM6XFx0ICogQG5ldGRldjpcXHRQb2ludGVyIHRvIG5ldGRldiB0byB3cml0ZSB0aGUgYWRkcmVzcyB0b1xcbiA2MjQ6XFx0ICpcXG4gNjI1OlxcdCAqIFdyYXBwZXIgYXJvdW5kIGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKSB3aGljaCB3cml0ZXMgdGhlIGFkZHJlc3NcXG4gNjI2OlxcdCAqIGRpcmVjdGx5IHRvIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIuXFxuIDYyNzpcXHQgKi9cXG4gNjI4OlxcdGludCBkZXZpY2VfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4gNjI5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjI6MjUuMDk3Mzg2OTQ2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNjc5MjgwOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1BQyBBZGRyZXNzIFJldHJpZXZhbCoqXG5cbk9rYXksIHNvIHRoZSBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24uLi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGxvZ2ljLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uIHRoZSBzdXJmYWNlLCBidXQgdGhlcmUgYXJlIGFsd2F5cyBudWFuY2VzLiBNeSBwcmltYXJ5IHRob3VnaHQgaXMgdGhhdCBpdCdzIGRlc2lnbmVkIHRvIGZldGNoIHRoZSBNQUMgYWRkcmVzcywgYW5kIGl0J3MgZG9pbmcgc28gd2l0aCBhIHdlbGwtZGVmaW5lZCBmYWxsYmFjayBtZWNoYW5pc20uIEZpcnN0IGl0J3MgdHJ5aW5nIHRoZSBGVyBub2RlIG9yIE5WbWVtIGFuZCwgc2hvdWxkIHRob3NlIGZhaWwsIGl0J3MgYXR0ZW1wdGluZyB0byBvYnRhaW4gYSByYW5kb20gYWRkcmVzcy5cblxuVGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgaXMgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIGBlZnVzZS1cdTAwM2VhZGRyYCBvbiBzdWNjZXNzLCBpbmRpY2F0aW5nIHRoZSByZXRyaWV2ZWQgTUFDIGFkZHJlc3MgaXMgKnBsYWNlZCogaW4gdGhpcyBzdHJ1Y3QgdmFyaWFibGUuIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgemVybyB2YWx1ZSBvbiBzdWNjZXNzLCB3aGljaCB3b3VsZCBjb25maXJtIHRoaXMgd3JpdGUgb3BlcmF0aW9uLiBHaXZlbiB0aGF0LCB0aGUgYGVmdXNlLVx1MDAzZWFkZHJgIGlzIHdoZXJlIHRoZSByZXN1bHQgaXMgZm91bmQsIGFzc3VtaW5nIHRoZSBvcGVyYXRpb24gY29tcGxldGVzIHdpdGhvdXQgYSBuZWdhdGl2ZSB2YWx1ZSByZXR1cm5lZCwgc28gaXQncyBwb3B1bGF0ZWQgd2l0aCBFVEhfQUxFTiBieXRlcy5cblxuTm93LCBJIG5lZWQgdG8gbG9vayBjbG9zZXIgYXQgdGhlIGBzdHJ1Y3QgcnR3X2VmdXNlYC4gSSBzaG91bGQgdW5kZXJzdGFuZCB3aGF0IGBlZnVzZWAgaXMsIGluIHRoaXMgY29udGV4dCwgYW5kIGVuc3VyZSB0aGF0IHRoZSBtZW1vcnkgbGF5b3V0IGlzIHN1aXRhYmxlIGZvciB0aGlzIHR5cGUgb2Ygb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjM6MTguNzc2NjczMDI2WiIsIlNlcSI6NDYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODY5NjczNTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBydHdfZWZ1c2UgXFxcXHtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmg9MTcxMT1zdHJ1Y3QgcnR3X2RtX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmgtMTc5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDoxNzkyOnN0cnVjdCBydHdfZWZ1c2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTE3OTMtXFx0dTMyIHNpemU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIzOjIxLjY0NjM1OTAwMloiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MDM1NTYzMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBydHc4OCBEcml2ZXIncyBNYWluIEhlYWRlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaGAgZmlsZS4gSSdtIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgMTc5Mi4gSSBrbm93IHRoaXMgY29kZSBiYXNlLCBJIGNhbiBwcm9iYWJseSBndWVzcyB3aGF0IGtpbmQgb2YgZGF0YSBzdHJ1Y3R1cmUgb3IgbWFjcm8gZGVmaW5pdGlvbiBJIHNob3VsZCBmaW5kIGF0IHRoYXQgbG9jYXRpb24gYW5kIHdoYXQgaXMgdGhlIGNvbnRleHQuIExldCdzIHNlZSB3aGF0IHJldmVhbHMgaXRzZWxmIGF0IHRoYXQgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEzMSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIzOjI4LjY4MTkyNjE3WiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxNzkwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzkwOlxcdH07XFxuMTc5MTpcXHRcXG4xNzkyOlxcdHN0cnVjdCBydHdfZWZ1c2Uge1xcbjE3OTM6XFx0XFx0dTMyIHNpemU7XFxuMTc5NDpcXHRcXHR1MzIgcGh5c2ljYWxfc2l6ZTtcXG4xNzk1OlxcdFxcdHUzMiBsb2dpY2FsX3NpemU7XFxuMTc5NjpcXHRcXHR1MzIgcHJvdGVjdF9zaXplO1xcbjE3OTc6XFx0XFxuMTc5ODpcXHRcXHR1OCBhZGRyW0VUSF9BTEVOXTtcXG4xNzk5OlxcdFxcdHU4IGNoYW5uZWxfcGxhbjtcXG4xODAwOlxcdFxcdHU4IGNvdW50cnlfY29kZVsyXTtcXG4xODAxOlxcdFxcdHU4IHJmX2JvYXJkX29wdGlvbjtcXG4xODAyOlxcdFxcdHU4IHJmZV9vcHRpb247XFxuMTgwMzpcXHRcXHR1OCBwb3dlcl90cmFja190eXBlO1xcbjE4MDQ6XFx0XFx0dTggdGhlcm1hbF9tZXRlcltSVFdfUkZfUEFUSF9NQVhdO1xcbjE4MDU6XFx0XFx0dTggdGhlcm1hbF9tZXRlcl9rO1xcbjE4MDY6XFx0XFx0dTggY3J5c3RhbF9jYXA7XFxuMTgwNzpcXHRcXHR1OCBhbnRfZGl2X2NmZztcXG4xODA4OlxcdFxcdHU4IGFudF9kaXZfdHlwZTtcXG4xODA5OlxcdFxcdHU4IHJlZ2Q7XFxuMTgxMDpcXHRcXHR1OCBhZmU7XFxuMTgxMTpcXHRcXG4xODEyOlxcdFxcdHU4IGxuYV90eXBlXzJnO1xcbjE4MTM6XFx0XFx0dTggbG5hX3R5cGVfNWc7XFxuMTgxNDpcXHRcXHR1OCBnbG5hX3R5cGU7XFxuMTgxNTpcXHRcXHR1OCBhbG5hX3R5cGU7XFxuMTgxNjpcXHRcXHRib29sIGV4dF9sbmFfMmc7XFxuMTgxNzpcXHRcXHRib29sIGV4dF9sbmFfNWc7XFxuMTgxODpcXHRcXHR1OCBwYV90eXBlXzJnO1xcbjE4MTk6XFx0XFx0dTggcGFfdHlwZV81ZztcXG4xODIwOlxcdFxcdHU4IGdwYV90eXBlO1xcbjE4MjE6XFx0XFx0dTggYXBhX3R5cGU7XFxuMTgyMjpcXHRcXHRib29sIGV4dF9wYV8yZztcXG4xODIzOlxcdFxcdGJvb2wgZXh0X3BhXzVnO1xcbjE4MjQ6XFx0XFx0dTggdHhfYmJfc3dpbmdfc2V0dGluZ18yZztcXG4xODI1OlxcdFxcdHU4IHR4X2JiX3N3aW5nX3NldHRpbmdfNWc7XFxuMTgyNjpcXHRcXG4xODI3OlxcdFxcdGJvb2wgYnRjb2V4O1xcbjE4Mjg6XFx0XFx0LyogYnQgc2hhcmUgYW50ZW5uYSB3aXRoIHdpZmkgKi9cXG4xODI5OlxcdFxcdGJvb2wgc2hhcmVfYW50O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMzoyOC42ODIwNjU3M1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTg3OTMxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBlZnVzZSBJbml0aWFsaXphdGlvbiBpbiBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBlZnVzZWAgZGF0YSBzdHJ1Y3R1cmUgaXMgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBgZWZ1c2VgIGRhdGEgaXMgYWN0dWFsbHkgKmFsbG9jYXRlZCogYW5kICppbml0aWFsaXplZCouIEFyZSB3ZSBzZWVpbmcgYSBzdGF0aWNhbGx5IGRlZmluZWQgYGVmdXNlYCBzb21ld2hlcmUsIG9yIGlzIGl0IGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8gQXJlIHRoZXJlIGFueSBjb25zdHJ1Y3RvcnMgb3IgaW5pdCBmdW5jdGlvbnMgaW52b2x2ZWQ/IFdoZXJlJ3MgdGhlIHByaW1hcnkgc2V0dXAgaGFwcGVuaW5nLCBhbmQgd2hhdCdzIHRoZSB0eXBpY2FsIHdvcmtmbG93PyBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZmxhc2ggaW50ZXJmYWNlIGlzIHN1cHBvc2VkIHRvIGJlIHdvcmtpbmcsIGFuZCBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgcG9pbnRzIG9mIGZhaWx1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MDQsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjIzOjMyLjI2OTk5OTk5M1oiLCJTZXEiOjUwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MjY0NTQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIwMDM9c3RhdGljIHZvaWQgcnR3X2NoaXBfZWZ1c2VfZGlzYWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDA5OnN0YXRpYyBpbnQgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjA5Nz1pbnQgcnR3X2NoaXBfaW5mb19zZXR1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMTA3OlxcdHJldCA9IHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTA4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYz0xMDA3PWludCBydHc4OHh4YV9wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jOjEwMTg6XFx0LyogT3ZlcnJpZGUgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEwMTktXFx0aWYgKGNoaXAtXFx1MDAzZWlkID09IFJUV19DSElQX1RZUEVfODgyMUEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTAyMzpcXHQvKiBPdmVycmlkZSBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMTAyNC1cXHRpZiAoY2hpcC1cXHUwMDNlaWQgPT0gUlRXX0NISVBfVFlQRV84ODEyQSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjM6MzMuOTQyNjUyOTc5WiIsIlNlcSI6NTEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk2NTk3NjA2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgZnVuY3Rpb24sIGZvY3VzaW5nIG9uIHRoZSBjb250ZXh0IGFuZCBsaWtlbHkgZGVzaWduIGNvbnNpZGVyYXRpb25zLCBhcyBpZiBpdCdzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXBgKipcblxuT2theSwgbGV0J3MgZGlzc2VjdCBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cGAgaW4gdGhlIFJlYWx0ZWsgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGF0IGl0IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmNgLiBUaGUgZmFjdCB0aGF0IGl0J3MgZGVhbGluZyB3aXRoIHRoZSBcImVmdXNlXCIgc3VnZ2VzdHMgaXQncyBhIGNyaXRpY2FsIGVhcmx5LXN0YWdlIGZ1bmN0aW9uLCBsaWtlbHkgaW52b2x2ZWQgaW4gcmV0cmlldmluZyBhbmQgc2V0dGluZyB1cCBpbml0aWFsIGNoaXAgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20gbm9uLXZvbGF0aWxlIG1lbW9yeS4gVGhhdCdzIGEga2V5IHByb2Nlc3MuXG5cbkknZCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZSByZXNwb25zaWJsZSBmb3IgcmVhZGluZyB2aXRhbCBpbmZvcm1hdGlvbiBzdG9yZWQgb24gdGhlIGNoaXAncyBpbnRlcm5hbCBlbGVjdHJvbmljIGZ1c2UsIG9mdGVuIHVzZWQgZm9yIGZhY3RvcnkgY2FsaWJyYXRpb24gZGF0YSwgY2hpcCByZXZpc2lvbiBpbmZvcm1hdGlvbiwgTUFDIGFkZHJlc3NlcywgcmVndWxhdG9yeSBkb21haW4gc2V0dGluZ3MsIGFuZCBwb3NzaWJseSBldmVuIHNvbWUgYmFzaWMgZmlybXdhcmUgY29uZmlndXJhdGlvbiBkZWZhdWx0cy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gYmVnaW5zLlxuXG5JJ20gdGhpbmtpbmcgaXTigJlzIHByb2JhYmx5IHN0cnVjdHVyZWQgdG8gaGFuZGxlIHBvdGVudGlhbCByZWFkIGVycm9ycyBmcm9tIHRoZSBlRnVzZSwgd2l0aCBzb21lIGtpbmQgb2YgZmFsbGJhY2sgb3IgZXJyb3IgaGFuZGxpbmcgaW4gcGxhY2UuIEkgd291bGQgZXhwZWN0IGl0IHRvIGRldGVybWluZSB0aGUgY2hpcCdzIGhhcmR3YXJlIHJldmlzaW9uIGJhc2VkIG9uIHRoZSBlRnVzZSBkYXRhLCBhcyB0aGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yIGZlYXR1cmUgZW5hYmxpbmcgb3IgZGlzYWJsaW5nLiBJdCB3b3VsZCBhbHNvIG5lZWQgdG8gYWRkcmVzcyBwb3NzaWJsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGRpZmZlcmVudCBjaGlwIHJldmlzaW9ucy5cblxuVGhpcyBmdW5jdGlvbiB3b3VsZCBhbG1vc3QgY2VydGFpbmx5IGludGVyYWN0IGNsb3NlbHkgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBEYXRhIHJldHJpZXZlZCBoZXJlIHdpbGwgZGljdGF0ZSB3aGF0IGdldHMgbG9hZGVkIGxhdGVyLCBob3cgdGhlIHBvd2VyIG1hbmFnZW1lbnQgaXMgc3RydWN0dXJlZCwgYW5kIHdoaWNoIHJlZ3VsYXRvcnkgY29uc3RyYWludHMgYXJlIGFwcGxpZWQuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgaXMgdml0YWwgYmVjYXVzZSBhIGNvcnJ1cHRlZCBvciBpbmNvcnJlY3RseSBjb25maWd1cmVkIGVGdXNlIGNhbiBsZWFkIHRvIGNvbXBsZXRlIGZhaWx1cmUgb3Igc2V2ZXJlIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIG9mIHRoZSB3aXJlbGVzcyBpbnRlcmZhY2UuIEknbSBpbWFnaW5pbmcgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGxvd2VyIGxldmVsIGhhcmR3YXJlIGFic3RyYWN0aW9uIHRvIHJlYWQgYml0cyBmcm9tIHRoZSBlRnVzZSBhbmQgdGhlbiB0cmFuc2xhdGVzIHRoZSBkYXRhIHRvIG1vcmUgdXNhYmxlIHZhcmlhYmxlcyB0aGF0IGxhdGVyIGZ1bmN0aW9ucyBtYXkgdXRpbGl6ZS5cblxuTXkgY29uY2VybiBpcyB0aGF0LCB3aGlsZSBlRnVzZSBpcyByZWxpYWJsZSwgZXJyb3JzIGluIHRoZSByZWFkaW5nIHByb2Nlc3MgY2FuIHN0aWxsIGhhcHBlbiwgdGhlcmVmb3JlIEkgd2lsbCBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgZXJyb3IgaGFuZGxpbmcgdG8gYXNzdXJlIHRoZSBjaGlwIHJ1bnMgYXMgaXQgc2hvdWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzU4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjM6NDMuNjAyNDE2MjUxWiIsIlNlcSI6NTIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDA4LFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDA4OlxcdFxcbjIwMDk6XFx0c3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuMjAxMDpcXHR7XFxuMjAxMTpcXHRcXHRzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWVmdXNlO1xcbjIwMTI6XFx0XFx0aW50IHJldDtcXG4yMDEzOlxcdFxcbjIwMTQ6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cnR3ZGV2LVxcdTAwM2VtdXRleCk7XFxuMjAxNTpcXHRcXG4yMDE2OlxcdFxcdC8qIHBvd2VyIG9uIG1hYyB0byByZWFkIGVmdXNlICovXFxuMjAxNzpcXHRcXHRyZXQgPSBydHdfY2hpcF9lZnVzZV9lbmFibGUocnR3ZGV2KTtcXG4yMDE4OlxcdFxcdGlmIChyZXQpXFxuMjAxOTpcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuMjAyMDpcXHRcXG4yMDIxOlxcdFxcdHJldCA9IHJ0d19wYXJzZV9lZnVzZV9tYXAocnR3ZGV2KTtcXG4yMDIyOlxcdFxcdGlmIChyZXQpXFxuMjAyMzpcXHRcXHRcXHRnb3RvIG91dF9kaXNhYmxlO1xcbjIwMjQ6XFx0XFxuMjAyNTpcXHRcXHRyZXQgPSBydHdfZHVtcF9od19mZWF0dXJlKHJ0d2Rldik7XFxuMjAyNjpcXHRcXHRpZiAocmV0KVxcbjIwMjc6XFx0XFx0XFx0Z290byBvdXRfZGlzYWJsZTtcXG4yMDI4OlxcdFxcbjIwMjk6XFx0XFx0cmV0ID0gcnR3X2NoZWNrX3N1cHBvcnRlZF9yZmUocnR3ZGV2KTtcXG4yMDMwOlxcdFxcdGlmIChyZXQpXFxuMjAzMTpcXHRcXHRcXHRnb3RvIG91dF9kaXNhYmxlO1xcbjIwMzI6XFx0XFxuMjAzMzpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZWNyeXN0YWxfY2FwID09IDB4ZmYpXFxuMjAzNDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlY3J5c3RhbF9jYXAgPSAwO1xcbjIwMzU6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VwYV90eXBlXzJnID09IDB4ZmYpXFxuMjAzNjpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlcGFfdHlwZV8yZyA9IDA7XFxuMjAzNzpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXBhX3R5cGVfNWcgPT0gMHhmZilcXG4yMDM4OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VwYV90eXBlXzVnID0gMDtcXG4yMDM5OlxcdFxcdGlmIChlZnVzZS1cXHUwMDNlbG5hX3R5cGVfMmcgPT0gMHhmZilcXG4yMDQwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VsbmFfdHlwZV8yZyA9IDA7XFxuMjA0MTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnID09IDB4ZmYpXFxuMjA0MjpcXHRcXHRcXHRlZnVzZS1cXHUwMDNlbG5hX3R5cGVfNWcgPSAwO1xcbjIwNDM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VjaGFubmVsX3BsYW4gPT0gMHhmZilcXG4yMDQ0OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VjaGFubmVsX3BsYW4gPSAweDdmO1xcbjIwNDU6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPT0gMHhmZilcXG4yMDQ2OlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZl9ib2FyZF9vcHRpb24gPSAwO1xcbjIwNDc6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2VidF9zZXR0aW5nIFxcdTAwMjYgQklUKDApKVxcbjIwNDg6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXNoYXJlX2FudCA9IHRydWU7XFxuMjA0OTpcXHRcXHRpZiAoZWZ1c2UtXFx1MDAzZXJlZ2QgPT0gMHhmZilcXG4yMDUwOlxcdFxcdFxcdGVmdXNlLVxcdTAwM2VyZWdkID0gMDtcXG4yMDUxOlxcdFxcdGlmIChlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ18yZyA9PSAweGZmKVxcbjIwNTI6XFx0XFx0XFx0ZWZ1c2UtXFx1MDAzZXR4X2JiX3N3aW5nX3NldHRpbmdfMmcgPSAwO1xcbjIwNTM6XFx0XFx0aWYgKGVmdXNlLVxcdTAwM2V0eF9iYl9zd2luZ19zZXR0aW5nXzVnID09IDB4ZmYpXFxuMjA1NDpcXHRcXHRcXHRlZnVzZS1cXHUwMDNldHhfYmJfc3dpbmdfc2V0dGluZ181ZyA9IDA7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdGVmdXNlLVxcdTAwM2VidGNvZXggPSAoZWZ1c2UtXFx1MDAzZXJmX2JvYXJkX29wdGlvbiBcXHUwMDI2IDB4ZTApID09IDB4MjA7XFxuMjA1NzpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzJnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfMmcgXFx1MDAyNiBCSVQoNCkgPyAxIDogMDtcXG4yMDU4OlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzJnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzJnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA1OTpcXHRcXHRlZnVzZS1cXHUwMDNlZXh0X3BhXzVnID0gZWZ1c2UtXFx1MDAzZXBhX3R5cGVfNWcgXFx1MDAyNiBCSVQoMCkgPyAxIDogMDtcXG4yMDYwOlxcdFxcdGVmdXNlLVxcdTAwM2VleHRfbG5hXzVnID0gZWZ1c2UtXFx1MDAzZWxuYV90eXBlXzVnIFxcdTAwMjYgQklUKDMpID8gMSA6IDA7XFxuMjA2MTpcXHRcXG4yMDYyOlxcdFxcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDYzOlxcdFxcdFxcdGlmIChkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cXHUwMDNlZGV2LCBlZnVzZS1cXHUwMDNlYWRkcikpIHtcXG4yMDY0OlxcdFxcdFxcdFxcdGV0aF9yYW5kb21fYWRkcihlZnVzZS1cXHUwMDNlYWRkcik7XFxuMjA2NTpcXHRcXHRcXHRcXHRkZXZfd2FybihydHdkZXYtXFx1MDAzZWRldixcXG4yMDY2OlxcdFxcdFxcdFxcdFxcdCBcXFwiZmFpbGVkIHRvIGdldCB2YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tXFxcXG5cXFwiKTtcXG4yMDY3OlxcdFxcdFxcdH1cXG4yMDY4OlxcdFxcdH1cXG4yMDY5OlxcdFxcbjIwNzA6XFx0b3V0X2Rpc2FibGU6XFxuMjA3MTpcXHRcXHRydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHJ0d2Rldik7XFxuMjA3MjpcXHRcXG4yMDczOlxcdG91dF91bmxvY2s6XFxuMjA3NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnJ0d2Rldi1cXHUwMDNlbXV0ZXgpO1xcbjIwNzU6XFx0XFx0cmV0dXJuIHJldDtcXG4yMDc2OlxcdH1cXG4yMDc3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyMzo0My42MDI1Njg5MjFaIiwiU2VxIjo1MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI4NTU2NzE2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgU3RydWN0dXJlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBgZWZ1c2UtXHUwMDNlYWRkcmAgYmFjayB0byBpdHMgb3JpZ2luLiBGcm9tIHdoYXQgSSByZWNhbGwsIGBlZnVzZS1cdTAwM2VhZGRyYCBpcyBuZXN0bGVkIHdpdGhpbiBgcnR3ZGV2LVx1MDAzZWVmdXNlYC4gQW5kLCBpZiBteSBtZW1vcnkgaXMgc2VydmluZyBtZSByaWdodCwgYHJ0d2RldmAgaXRzZWxmIGlzIGFuIGludGVncmFsIHBhcnQgb2YgdGhlIGxhcmdlciBgcnR3ZGV2YCBzdHJ1Y3R1cmUuIEkgYmVsaWV2ZSB0aGF0IHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQsIHR5cGljYWxseSB0aHJvdWdoIGBremFsbG9jYCwgYGFsbG9jX2V0aGVyZGV2YCwgb3IgcGVyaGFwcyBldmVuIHNvbWV0aGluZyBsaWtlIGBpZWVlODAyMTFfYWxsb2NfaHdgIGRlcGVuZGluZyBvbiB0aGUgZXhhY3QgY29udGV4dC5cblxuU28sIHRoZSBjcnVjaWFsIG5leHQgc3RlcCBpcyBwaW5wb2ludGluZyBwcmVjaXNlbHkgKndoZXJlKiB0aGUgYHN0cnVjdCBydHdfZGV2YCBpcyBhbGxvY2F0ZWQgd2l0aGluIHRoaXMgY29kZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbGlmZWN5Y2xlIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvZiBgZWZ1c2UtXHUwMDNlYWRkcmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MzcsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjA2LjQ1ODI0NDEzNFoiLCJTZXEiOjU0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzOTU2NjA3MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3X2NvcmVfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyNDowOC4wOTc4MTkxODdaIiwiU2VxIjo1NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Nzc5MzAxMTk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIHlvdXIgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKlRyYWNpbmcgdGhlIENvcmUgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGBydHdfY29yZWAgc3R1ZmYgaXMgaW5pdGlhbGl6ZWQuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGxvY2F0ZSBlaXRoZXIgdGhlIGBydHdfY29yZV9pbml0YCBmdW5jdGlvbiBpdHNlbGYsIG9yIGZhaWxpbmcgdGhhdCwgSSdsbCB0cnkgdG8gZmluZCB3aGVyZSB0aGUgYHJ0d19kZXZgIHZhcmlhYmxlIGlzIGJlaW5nIGFsbG9jYXRlZC4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIOKAkyB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMgY3J1Y2lhbCBmb3IgZGVlcGVyIGFuYWx5c2lzLiBJJ2xsIHN0YXJ0IHdpdGggdGhvc2UgdHdvIGVudHJ5IHBvaW50cyBhbmQgc2VlIHdoZXJlIHRoZSB0cmFpbCBsZWFkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgyNCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjE1Ljg5MDgzNDMwOFoiLCJTZXEiOjU2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4OTk5MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3X2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNjY9c3RydWN0IHJ0d193YXRjaF9kb2dfaXRlcl9kYXRhIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjc6XFx0c3RydWN0IHJ0d19kZXYgKnJ0d2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjgtXFx0c3RydWN0IHJ0d192aWYgKnJ0d3ZpZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzE6c3RhdGljIHZvaWQgcnR3X2R5bmFtaWNfY3NpX3JhdGUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0d192aWYgKnJ0d3ZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTg5PXN0YXRpYyB2b2lkIHJ0d192aWZfd2F0Y2hfZG9nX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMDY6c3RhdGljIHZvaWQgcnR3X3N3X2JlYWNvbl9sb3NzX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0d192aWYgKnJ0d3ZpZiwgaW50IHJlY2VpdmVkX2JlYWNvbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMjQ9c3RhdGljIHZvaWQgcnR3X3dhdGNoX2RvZ193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMjUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIyNjpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHdfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyNy1cXHRcXHRcXHRcXHRcXHQgICAgICB3YXRjaF9kb2dfd29yay53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTMxMj1zdGF0aWMgdm9pZCBydHdfYzJoX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMxMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzE0OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsIGMyaF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zMTUtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKnRtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTMyND1zdGF0aWMgdm9pZCBydHdfaXBzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMyNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzI2OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsIGlwc193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zMjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0zMzQ9c3RhdGljIHZvaWQgcnR3X3N0YV9yY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMzNy1cXHRcXHRcXHRcXHRcXHQgICAgICAgcmNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzM4OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBzaS1cXHUwMDNlcnR3ZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTMzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTM0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzozNDU6aW50IHJ0d19zdGFfYWRkKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMzQ2LVxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MzgwOnZvaWQgcnR3X3N0YV9yZW1vdmUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0zODEtXFx0XFx0ICAgIGJvb2wgZndfZXhpc3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz00MDQ9c3RydWN0IHJ0d19md2NkX2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NDExOnN0YXRpYyBpbnQgcnR3X2Z3Y2RfcHJlcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQxMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NDM2OnN0YXRpYyB1OCAqcnR3X2Z3Y2RfbmV4dChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgaXRlbSwgdTMyIHNpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNDM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo0NjM6c3RhdGljIHZvaWQgcnR3X2Z3Y2RfZHVtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NDc3OnN0YXRpYyB2b2lkIHJ0d19md2NkX2ZyZWUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBmcmVlX3NlbGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNDc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo0OTA6c3RhdGljIGludCBydHdfZndfZHVtcF9jcmFzaF9sb2coc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy00OTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjUyMDppbnQgcnR3X2R1bXBfZncoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3QgdTMyIG9jcF9zcmMsIHUzMiBzaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTUyMS1cXHRcXHR1MzIgZndjZF9pdGVtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NTU5PUVYUE9SVF9TWU1CT0wocnR3X2R1bXBfZncpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTU2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo1NjE6aW50IHJ0d19kdW1wX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCB1MzIgYWRkciwgY29uc3QgdTMyIHNpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTU5OT1zdGF0aWMgdm9pZCBydHdfcmVzZXRfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjYwNTpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MDYtXFx0c3RydWN0IHJ0d19zZWNfZGVzYyAqc2VjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlc2VjO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9NjExPXN0YXRpYyB2b2lkIHJ0d19yZXNldF9zdGFfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYxMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NjEzOlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSAoc3RydWN0IHJ0d19kZXYgKilkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTYxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTYyMj1zdGF0aWMgdm9pZCBydHdfcmVzZXRfdmlmX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjYyNDpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MjUtXFx0c3RydWN0IHJ0d192aWYgKnJ0d3ZpZiA9IChzdHJ1Y3QgcnR3X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NjM0OnZvaWQgcnR3X2Z3X3JlY292ZXJ5KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTYzOT1FWFBPUlRfU1lNQk9MKHJ0d19md19yZWNvdmVyeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjY0MTpzdGF0aWMgdm9pZCBfX2Z3X3JlY292ZXJ5X3dvcmsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9Njc0PXN0YXRpYyB2b2lkIHJ0d19md19yZWNvdmVyeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy02NzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjY3NjpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHdfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTY3Ny1cXHRcXHRcXHRcXHRcXHQgICAgICBmd19yZWNvdmVyeV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTcxMj1zdGF0aWMgdm9pZCBydHdfdHhxX2JhX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTcxMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NzE0OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHJ0d19kZXYsIGJhX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTcxNS1cXHRzdHJ1Y3QgcnR3X3R4cV9iYV9pdGVyX2RhdGEgZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTczMT1FWFBPUlRfU1lNQk9MKHJ0d19zZXRfcnhfZnJlcV9iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6NzMzOnZvaWQgcnR3X3NldF9kdGltX3BlcmlvZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBkdGltX3BlcmlvZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtNzM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjczOTp2b2lkIHJ0d191cGRhdGVfY2hhbm5lbChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBjZW50ZXJfY2hhbm5lbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy03NDAtXFx0XFx0XFx0dTggcHJpbWFyeV9jaGFubmVsLCBlbnVtIHJ0d19zdXBwb3J0ZWRfYmFuZCBiYW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9ODIyPXZvaWQgcnR3X2dldF9jaGFubmVsX3BhcmFtcyhzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy04NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6ODcxOnZvaWQgcnR3X3NldF9jaGFubmVsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtODcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MTU6dm9pZCBydHdfY2hpcF9wcmVwYXJlX3R4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MjU6c3RhdGljIHZvaWQgcnR3X3ZpZl93cml0ZV9hZGRyKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBzdGFydCwgdTggKmFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTkzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5MzM6dm9pZCBydHdfdmlmX3BvcnRfY29uZmlnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTM0LVxcdFxcdFxcdCBzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9OTY0PXN0YXRpYyB1OCBod19id19jYXBfdG9fYml0YW1wKHU4IGJ3X2NhcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTk4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzo5ODQ6c3RhdGljIHZvaWQgcnR3X2h3X2NvbmZpZ19yZl9hbnRfbnVtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IGh3X2FudF9udW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtOTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTExNTk9c3RhdGljIHU2NCBydHdfcmF0ZV9tYXNrX3JlY292ZXIodTY0IHJhX21hc2ssIHU2NCByYV9tYXNrX2JhaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTExNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTE3MDpzdGF0aWMgdTY0IHJ0d19yYXRlX21hc2tfY2ZnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBydHdfc3RhX2luZm8gKnNpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTExNzEtXFx0XFx0XFx0ICAgICB1NjQgcmFfbWFzaywgYm9vbCBpc192aHRfZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTIxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxMjEyOnZvaWQgcnR3X3VwZGF0ZV9zdGFfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3X3N0YV9pbmZvICpzaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMjEzLVxcdFxcdFxcdCBib29sIHJlc2V0X3JhX21hc2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzMzI6aW50IHJ0d193YWl0X2Zpcm13YXJlX2NvbXBsZXRpb24oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTEzNTI9RVhQT1JUX1NZTUJPTChydHdfd2FpdF9maXJtd2FyZV9jb21wbGV0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzNTQ6c3RhdGljIGVudW0gcnR3X2xwc19kZWVwX21vZGUgcnR3X3VwZGF0ZV9scHNfZGVlcF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTM1NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHJ0d19md19zdGF0ZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xMzczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjEzNzQ6aW50IHJ0d19wb3dlcl9vbihzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTEzNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTQ0Mz1FWFBPUlRfU1lNQk9MKHJ0d19wb3dlcl9vbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQ0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNDQ1OnZvaWQgcnR3X2NvcmVfZndfc2Nhbl9ub3RpZnkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBzdGFydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTQ2MTp2b2lkIHJ0d19jb3JlX3NjYW5fc3RhcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0d192aWYgKnJ0d3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDYyLVxcdFxcdFxcdCBjb25zdCB1OCAqbWFjX2FkZHIsIGJvb2wgaHdfc2NhbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE0ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTQ5MDp2b2lkIHJ0d19jb3JlX3NjYW5fY29tcGxldGUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDkxLVxcdFxcdFxcdCAgICBib29sIGh3X3NjYW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE1MTU6aW50IHJ0d19jb3JlX3N0YXJ0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTUxNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE1Mzk6dm9pZCBydHdfcG93ZXJfb2ZmKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNTQ1PUVYUE9SVF9TWU1CT0wocnR3X3Bvd2VyX29mZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNTQ3OnZvaWQgcnR3X2NvcmVfc3RvcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE1NDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTU3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNTczOnN0YXRpYyB2b2lkIHJ0d19pbml0X2h0X2NhcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE1NzQtXFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhX2h0X2NhcCAqaHRfY2FwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTYwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjA1OnN0YXRpYyB2b2lkIHJ0d19pbml0X3ZodF9jYXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjA2LVxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE2NDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTY0OTpzdGF0aWMgdTE2IHJ0d19nZXRfbWF4X3NjYW5faWVfbGVuKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTY1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xNjY0PXN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjY1OnJ0d19zYmFuZF9kdXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjY2LVxcdCAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTY5MT1zdGF0aWMgdm9pZCBydHdfc2V0X3N1cHBvcnRlZF9iYW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTY5NC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNjk1OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBody1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNjk2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTcyMz1zdGF0aWMgdm9pZCBydHdfdmlmX3NtcHNfaXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTcyNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTcyNjpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gKHN0cnVjdCBydHdfZGV2ICopZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzI3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTczNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzM3OnZvaWQgcnR3X3NldF90eHJ4XzFzcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIHR4cnhfMXNzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE3Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzU0OnN0YXRpYyB2b2lkIF9fdXBkYXRlX2Zpcm13YXJlX2ZlYXR1cmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzU1LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzY5OnN0YXRpYyB2b2lkIF9fdXBkYXRlX2Zpcm13YXJlX2luZm8oc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNzcwLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzgzOnN0YXRpYyB2b2lkIF9fdXBkYXRlX2Zpcm13YXJlX2luZm9fbGVnYWN5KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc4NC1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxNzk1OnN0YXRpYyB2b2lkIHVwZGF0ZV9maXJtd2FyZV9pbmZvKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTc5Ni1cXHRcXHRcXHRcXHQgc3RydWN0IHJ0d19md19zdGF0ZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0xODA0PXN0YXRpYyB2b2lkIHJ0d19sb2FkX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xODA2LVxcdHN0cnVjdCBydHdfZndfc3RhdGUgKmZ3ID0gY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxODA3OlxcdHN0cnVjdCBydHdfZGV2ICpydHdkZXYgPSBmdy1cXHUwMDNlcnR3ZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE4MDgtXFx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IHJ0d2Rldi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTgyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxODMwOnN0YXRpYyBpbnQgcnR3X2xvYWRfZmlybXdhcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgZW51bSBydHdfZndfdHlwZSB0eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE4MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTg2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoxODY2OnN0YXRpYyBpbnQgcnR3X2NoaXBfcGFyYW1ldGVyX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTg2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE5MTk6c3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9lbmFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTE5NTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MTk2MDpzdGF0aWMgaW50IHJ0d19kdW1wX2h3X2ZlYXR1cmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xOTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIwMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjAwMzpzdGF0aWMgdm9pZCBydHdfY2hpcF9lZnVzZV9kaXNhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwMDk6c3RhdGljIGludCBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjAxMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwNzg6c3RhdGljIGludCBydHdfY2hpcF9ib2FyZF9pbmZvX3NldHVwKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjA3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIwOTc6aW50IHJ0d19jaGlwX2luZm9fc2V0dXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMDk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIxMjQ9RVhQT1JUX1NZTUJPTChydHdfY2hpcF9pbmZvX3NldHVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIxMjY6c3RhdGljIHZvaWQgcnR3X3N0YXRzX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMTI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjE0MTppbnQgcnR3X2NvcmVfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIxNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjIyMj1FWFBPUlRfU1lNQk9MKHJ0d19jb3JlX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjIyNDp2b2lkIHJ0d19jb3JlX2RlaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIyMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjI1Nj1FWFBPUlRfU1lNQk9MKHJ0d19jb3JlX2RlaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMjU4OmludCBydHdfcmVnaXN0ZXJfaHcoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjI1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYz0yMzUxPUVYUE9SVF9TWU1CT0wocnR3X3JlZ2lzdGVyX2h3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMzUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjIzNTM6dm9pZCBydHdfdW5yZWdpc3Rlcl9odyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yMzU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzNjE9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjM2Mjp2b2lkIHJ0d19zd2FwX3JlZ19uYnl0ZXMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3Qgc3RydWN0IHJ0d19od19yZWcgKnJlZzEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjM2My1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHJ0d19od19yZWcgKnJlZzIsIHU4IG5ieXRlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzNzY9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjM3Nzp2b2lkIHJ0d19zd2FwX3JlZ19tYXNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGNvbnN0IHN0cnVjdCBydHdfaHdfcmVnICpyZWcxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzNzgtXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydHdfaHdfcmVnICpyZWcyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjM4OD1zdHJ1Y3QgcnR3X2l0ZXJfcG9ydF9zd2l0Y2hfZGF0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjM4OTpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzOTAtXFx0c3RydWN0IHJ0d192aWYgKnJ0d3ZpZl9hcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jPTIzOTM9c3RhdGljIHZvaWQgcnR3X3BvcnRfc3dpdGNoX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzOTUtXFx0c3RydWN0IHJ0d19pdGVyX3BvcnRfc3dpdGNoX2RhdGEgKml0ZXJfZGF0YSA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM6MjM5NjpcXHRzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2ID0gaXRlcl9kYXRhLVxcdTAwM2VydHdkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjM5Ny1cXHRzdHJ1Y3QgcnR3X3ZpZiAqcnR3dmlmX3RhcmdldCA9IChzdHJ1Y3QgcnR3X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjI0MzI6dm9pZCBydHdfY29yZV9wb3J0X3N3aXRjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjQ0NT1zdGF0aWMgdm9pZCBydHdfY2hlY2tfc3RhX2FjdGl2ZV9pdGVyKHZvaWQgKmRhdGEsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjI0NjA6Ym9vbCBydHdfY29yZV9jaGVja19zdGFfYWN0aXZlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjQ2MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjI0Njk6dm9pZCBydHdfY29yZV9lbmFibGVfYmVhY29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTI0NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjQ4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyNDgzOnZvaWQgcnR3X3NldF9hbXBkdV9mYWN0b3Ioc3RydWN0IHJ0d19kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0yNDg0LVxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjE1LjkzODc0MDIxNFoiLCJTZXEiOjU3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODAyOTk5ODQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQyBBZGRyZXNzIEluaXRpYWxpemF0aW9uIGluIHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2UuIEluIGBydHdfY2hpcF9lZnVzZV9pbmZvX3NldHVwKClgLCBpdCdzIGNsZWFyIHRoZSBwcmltYXJ5IGdvYWwgaXMgdG8gZW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBNQUMgYWRkcmVzcy4gVGhlIGNvcmUgbG9naWMgaGluZ2VzIG9uIGBlZnVzZS1cdTAwM2VhZGRyYC4gIFByZXZpb3VzbHksIGlmIGBlZnVzZS1cdTAwM2VhZGRyYCB3YXMgZGVlbWVkIGludmFsaWQgYmFzZWQgb24gYGlzX3ZhbGlkX2V0aGVyX2FkZHIoKWAsIGEgcmFuZG9tIE1BQyBhZGRyZXNzIHdhcyBpbW1lZGlhdGVseSBnZW5lcmF0ZWQgYW5kIGFzc2lnbmVkLiBUaGF0J3MgdGhlIGJhc2VsaW5lLlxuXG5Ob3csIGhvd2V2ZXIsIGJlZm9yZSByZXNvcnRpbmcgdG8gYSByYW5kb20gTUFDLCBpdCdzIGNoZWNraW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKHJ0d2Rldi1cdTAwM2VkZXYsIGVmdXNlLVx1MDAzZWFkZHIpYC4gIEVzc2VudGlhbGx5LCB0aGUgY29kZSBpcyBzYXlpbmcsIFwiTGV0J3MgKnRyeSogdG8gZ2V0IGEgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIGl0c2VsZiBiZWZvcmUgcmFuZG9tbHkgZ2VuZXJhdGluZyBvbmUuXCIgIElmIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIHN1Y2NlZWRzIChyZXR1cm5zIDApLCB0aGUgYXNzdW1wdGlvbiBpcyBpdCBwb3B1bGF0ZXMgYGVmdXNlLVx1MDAzZWFkZHJgIHdpdGggYSB2YWxpZCBNQUMuIElmIGl0IGZhaWxzIChyZXR1cm5zIG5vbi16ZXJvKSwgKnRoZW4qIHRoZSByYW5kb20gTUFDIGdlbmVyYXRpb24gaXMgdHJpZ2dlcmVkIHZpYSBgZXRoX3JhbmRvbV9hZGRyKClgLiBUaGlzIGlzIGdvb2QsIGl0IGFsbG93cyB0aGUgZGV2aWNlIHRvIGhhdmUgcHJlZmVyZW5jZSBpbiBwcm92aWRpbmcgYSB2YWxpZCBNQUMsIGFzIGl0IHNob3VsZC5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIHdoYXQgYGRldmljZV9nZXRfbWFjX2FkZHJlc3NgIGFjdHVhbGx5IGRvZXMuICBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IGlmIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzYCAqYWx3YXlzKiB3cml0ZXMgYSBNQUMgdG8gYGVmdXNlLVx1MDAzZWFkZHJgIG9uIHN1Y2Nlc3MsIG9yIGlmIGl0IGNhbiBwb3RlbnRpYWxseSBsZWF2ZSBpdCB1bmluaXRpYWxpemVkIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gTXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBmd25vZGVfZ2V0X21hY19hZGRyZXNzYCBhbmQgYG52bWVtX2dldF9tYWNfYWRkcmVzc2AsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBNQUMgYWRkcmVzcyByZWFkaW5nIHByb2Nlc3MuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIHZhbGlkYXRpb24gb2YgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTk2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjQzLjk2ODc0MzAwM1oiLCJTZXEiOjU4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxODE5MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZndub2RlX2dldF9tYWNfYWRkcmVzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZXRoZXJuZXQvZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2V0aGVybmV0L2V0aC5jPTU1OT1zdGF0aWMgaW50IGZ3bm9kZV9nZXRfbWFjX2FkZHIoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4tLVxcbm5ldC9ldGhlcm5ldC9ldGguYy01NzMtLyoqXFxubmV0L2V0aGVybmV0L2V0aC5jOjU3NDogKiBmd25vZGVfZ2V0X21hY19hZGRyZXNzIC0gR2V0IHRoZSBNQUMgZnJvbSB0aGUgZmlybXdhcmUgbm9kZVxcbm5ldC9ldGhlcm5ldC9ldGguYy01NzUtICogQGZ3bm9kZTpcXHRQb2ludGVyIHRvIHRoZSBmaXJtd2FyZSBub2RlXFxuLS1cXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTk0LSAqL1xcbm5ldC9ldGhlcm5ldC9ldGguYzo1OTU6aW50IGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwgY2hhciAqYWRkcilcXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTk2LXtcXG4tLVxcbm5ldC9ldGhlcm5ldC9ldGguYy02MDMtfVxcbm5ldC9ldGhlcm5ldC9ldGguYzo2MDQ6RVhQT1JUX1NZTUJPTChmd25vZGVfZ2V0X21hY19hZGRyZXNzKTtcXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjA1LVxcbi0tXFxubmV0L2V0aGVybmV0L2V0aC5jPTYxMT1pbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpXFxubmV0L2V0aGVybmV0L2V0aC5jLTYxMi17XFxubmV0L2V0aGVybmV0L2V0aC5jOjYxMzpcXHRpZiAoIWZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MoZGV2X2Z3bm9kZShkZXYpLCBhZGRyKSlcXG5uZXQvZXRoZXJuZXQvZXRoLmMtNjE0LVxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyNDo0NC4wMTY5MzIwNloiLCJTZXEiOjU5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNzY3Nzc1MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHNwZWNpZmljIHNlY3Rpb24gb2YgdGhlIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGxpbmVzIDU1OSB0aHJvdWdoIDYwNCBpbiBgbmV0L2V0aGVybmV0L2V0aC5jYC4gTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoaXMgYmxvY2sgbGlrZWx5IGRlYWxzIHdpdGggYSBjcml0aWNhbCBhc3BlY3Qgb2YgRXRoZXJuZXQgb3BlcmF0aW9uLiBJJ20gZ3Vlc3NpbmcgaXQgbWlnaHQgYmUgcmVsYXRlZCB0byBmcmFtZSB0cmFuc21pc3Npb24sIHJlY2VwdGlvbiBoYW5kbGluZywgb3IgcGVyaGFwcyBzb21lIGxvdy1sZXZlbCBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gS25vd2luZyB0aGUgbnVhbmNlcyBvZiBFdGhlcm5ldCBpcyBzZWNvbmQgbmF0dXJlIGF0IHRoaXMgcG9pbnQsIHNvIEknbSBleHBlY3RpbmcgdGhpcyBzZWdtZW50IHRvIGJlIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHRvIHBhcnNlLCBldmVuIHdpdGhvdXQgY29udGV4dC4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gdW5lYXJ0aCBhbmQgd2hhdCBzcGVjaWZpYyBvcGVyYXRpb24gb2YgdGhlIEV0aGVybmV0IGNhcmQgaXQgaXMgcmVsYXRlZCB0by5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNjMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyNDo0Ny43ODQ3MTE1OFoiLCJTZXEiOjYwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvZXRoZXJuZXQvZXRoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTU5LFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTU5OlxcdHN0YXRpYyBpbnQgZndub2RlX2dldF9tYWNfYWRkcihzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbiA1NjA6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKmFkZHIpXFxuIDU2MTpcXHR7XFxuIDU2MjpcXHRcXHRpbnQgcmV0O1xcbiA1NjM6XFx0XFxuIDU2NDpcXHRcXHRyZXQgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91OF9hcnJheShmd25vZGUsIG5hbWUsIGFkZHIsIEVUSF9BTEVOKTtcXG4gNTY1OlxcdFxcdGlmIChyZXQpXFxuIDU2NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1Njc6XFx0XFxuIDU2ODpcXHRcXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoYWRkcikpXFxuIDU2OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTcwOlxcdFxcdHJldHVybiAwO1xcbiA1NzE6XFx0fVxcbiA1NzI6XFx0XFxuIDU3MzpcXHQvKipcXG4gNTc0OlxcdCAqIGZ3bm9kZV9nZXRfbWFjX2FkZHJlc3MgLSBHZXQgdGhlIE1BQyBmcm9tIHRoZSBmaXJtd2FyZSBub2RlXFxuIDU3NTpcXHQgKiBAZndub2RlOlxcdFBvaW50ZXIgdG8gdGhlIGZpcm13YXJlIG5vZGVcXG4gNTc2OlxcdCAqIEBhZGRyOlxcdEFkZHJlc3Mgb2YgYnVmZmVyIHRvIHN0b3JlIHRoZSBNQUMgaW5cXG4gNTc3OlxcdCAqXFxuIDU3ODpcXHQgKiBTZWFyY2ggdGhlIGZpcm13YXJlIG5vZGUgZm9yIHRoZSBiZXN0IE1BQyBhZGRyZXNzIHRvIHVzZS4gICdtYWMtYWRkcmVzcycgaXNcXG4gNTc5OlxcdCAqIGNoZWNrZWQgZmlyc3QsIGJlY2F1c2UgdGhhdCBpcyBzdXBwb3NlZCB0byBjb250YWluIHRvIFxcXCJtb3N0IHJlY2VudFxcXCIgTUFDXFxuIDU4MDpcXHQgKiBhZGRyZXNzLiBJZiB0aGF0IGlzbid0IHNldCwgdGhlbiAnbG9jYWwtbWFjLWFkZHJlc3MnIGlzIGNoZWNrZWQgbmV4dCxcXG4gNTgxOlxcdCAqIGJlY2F1c2UgdGhhdCBpcyB0aGUgZGVmYXVsdCBhZGRyZXNzLiAgSWYgdGhhdCBpc24ndCBzZXQsIHRoZW4gdGhlIG9ic29sZXRlXFxuIDU4MjpcXHQgKiAnYWRkcmVzcycgaXMgY2hlY2tlZCwganVzdCBpbiBjYXNlIHdlJ3JlIHVzaW5nIGFuIG9sZCBkZXZpY2UgdHJlZS5cXG4gNTgzOlxcdCAqXFxuIDU4NDpcXHQgKiBOb3RlIHRoYXQgdGhlICdhZGRyZXNzJyBwcm9wZXJ0eSBpcyBzdXBwb3NlZCB0byBjb250YWluIGEgdmlydHVhbCBhZGRyZXNzIG9mXFxuIDU4NTpcXHQgKiB0aGUgcmVnaXN0ZXIgc2V0LCBidXQgc29tZSBEVFMgZmlsZXMgaGF2ZSByZWRlZmluZWQgdGhhdCBwcm9wZXJ0eSB0byBiZSB0aGVcXG4gNTg2OlxcdCAqIE1BQyBhZGRyZXNzLlxcbiA1ODc6XFx0ICpcXG4gNTg4OlxcdCAqIEFsbC16ZXJvIE1BQyBhZGRyZXNzZXMgYXJlIHJlamVjdGVkLCBiZWNhdXNlIHRob3NlIGNvdWxkIGJlIHByb3BlcnRpZXMgdGhhdFxcbiA1ODk6XFx0ICogZXhpc3QgaW4gdGhlIGZpcm13YXJlIHRhYmxlcywgYnV0IHdlcmUgbm90IHVwZGF0ZWQgYnkgdGhlIGZpcm13YXJlLiAgRm9yXFxuIDU5MDpcXHQgKiBleGFtcGxlLCB0aGUgRFRTIGNvdWxkIGRlZmluZSAnbWFjLWFkZHJlc3MnIGFuZCAnbG9jYWwtbWFjLWFkZHJlc3MnLCB3aXRoXFxuIDU5MTpcXHQgKiB6ZXJvIE1BQyBhZGRyZXNzZXMuICBTb21lIG9sZGVyIFUtQm9vdHMgb25seSBpbml0aWFsaXplZCAnbG9jYWwtbWFjLWFkZHJlc3MnLlxcbiA1OTI6XFx0ICogSW4gdGhpcyBjYXNlLCB0aGUgcmVhbCBNQUMgaXMgaW4gJ2xvY2FsLW1hYy1hZGRyZXNzJywgYW5kICdtYWMtYWRkcmVzcydcXG4gNTkzOlxcdCAqIGV4aXN0cyBidXQgaXMgYWxsIHplcm9zLlxcbiA1OTQ6XFx0ICovXFxuIDU5NTpcXHRpbnQgZndub2RlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLCBjaGFyICphZGRyKVxcbiA1OTY6XFx0e1xcbiA1OTc6XFx0XFx0aWYgKCFmd25vZGVfZ2V0X21hY19hZGRyKGZ3bm9kZSwgXFxcIm1hYy1hZGRyZXNzXFxcIiwgYWRkcikgfHxcXG4gNTk4OlxcdFxcdCAgICAhZndub2RlX2dldF9tYWNfYWRkcihmd25vZGUsIFxcXCJsb2NhbC1tYWMtYWRkcmVzc1xcXCIsIGFkZHIpIHx8XFxuIDU5OTpcXHRcXHQgICAgIWZ3bm9kZV9nZXRfbWFjX2FkZHIoZndub2RlLCBcXFwiYWRkcmVzc1xcXCIsIGFkZHIpKVxcbiA2MDA6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDYwMTpcXHRcXG4gNjAyOlxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiA2MDM6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNDoyNDo0Ny43ODQ4MDUwMVoiLCJTZXEiOjYxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzg0OTgyNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIE1BQyBBZGRyZXNzIFJldHJpZXZhbCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGUgTUFDIGFkZHJlc3MgcmV0cmlldmFsIHByb2Nlc3MsIGFuZCBJIHRoaW5rIHdlIG1pZ2h0IGhhdmUgbWlzc2VkIGEgc3BvdC4gTXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgd2Ugc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYG52bWVtX2dldF9tYWNfYWRkcmVzc2AgZnVuY3Rpb24gYXMgd2VsbC4gV2Uga25vdyB0aGUgZ2VuZXJhbCBmbG93LCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHdlIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgZGV0YWlscyBzcGVjaWZpYyB0byB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlvbi4gSXQncyBwb3NzaWJsZSB0aGVyZSBhcmUgc3VidGxlIGRpZmZlcmVuY2VzIG9yIGVkZ2UgY2FzZXMgcmVsYXRlZCB0byBub24tdm9sYXRpbGUgbWVtb3J5IHRoYXQgd2UgbmVlZCB0byBhY2NvdW50IGZvci4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgcGFydCBvZiB0aGUgcHJvY2VzcyBpcyBzb2xpZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxOTksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjUxLjE2OTc5MDM2N1oiLCJTZXEiOjYyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5MTA2MTYxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgbnZtZW1fZ2V0X21hY19hZGRyZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaD0zMz11bnNpZ25lZCBjaGFyICphcmNoX2dldF9wbGF0Zm9ybV9tYWNfYWRkcmVzcyh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmg6MzQ6aW50IG52bWVtX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHJidWYpO1xcbmluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaC0zNS1pbnQgZGV2aWNlX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmFkZHIpO1xcbi0tXFxubmV0L2V0aGVybmV0L2V0aC5jPTUyMT1FWFBPUlRfU1lNQk9MKHBsYXRmb3JtX2dldF9ldGhkZXZfYWRkcmVzcyk7XFxuLS1cXG5uZXQvZXRoZXJuZXQvZXRoLmMtNTMxLSAqL1xcbm5ldC9ldGhlcm5ldC9ldGguYzo1MzI6aW50IG52bWVtX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHJidWYpXFxubmV0L2V0aGVybmV0L2V0aC5jLTUzMy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI0OjUzLjA2MDg3MDQ4MVoiLCJTZXEiOjYzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTAzOTU0MDgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDIEFkZHJlc3MgUmV0cmlldmFsKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgbnZtZW1fZ2V0X21hY19hZGRyZXNzYCBmdW5jdGlvbiBhY3R1YWxseSB3b3Jrcy4gVGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0J3Mgc2VlIGhvdyBpdCdzIHdyaXR0ZW4gYW5kIHdoYXQncyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGluZ3MgbGlrZSBlcnJvciBoYW5kbGluZywgYW55IHBsYXRmb3JtLXNwZWNpZmljIHF1aXJrcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgbm9uLXZvbGF0aWxlIG1lbW9yeSBpdHNlbGYuIEFyZSB0aGV5IHVzaW5nIGEgc3RhbmRhcmQgTlZNRU0gaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgY3VzdG9tPyBXaGF0IGFib3V0IGF0b21pY2l0eSDigJMgaXMgdGhlIHJlYWQgb3BlcmF0aW9uIHRocmVhZC1zYWZlLCBvciBhcmUgdGhleSByZWx5aW5nIG9uIHNvbWUgaGlnaGVyLWxldmVsIHN5bmNocm9uaXphdGlvbj8gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGFyZWFzIHdoZXJlIGEgcG93ZXIgZmFpbHVyZSBjb3VsZCBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQgc3RhdGUuIEhvcGVmdWxseSwgaXQncyB3ZWxsLWRvY3VtZW50ZWQuLi4gYnV0IEknbSBwcmVwYXJlZCBmb3IgYW55dGhpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTc2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjU6MjQuMTAwNDE1MzU1WiIsIlNlcSI6NjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGhlcm5ldC9ldGguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MzAsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MzA6XFx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cXG4gNTMxOlxcdCAqL1xcbiA1MzI6XFx0aW50IG52bWVtX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmFkZHJidWYpXFxuIDUzMzpcXHR7XFxuIDUzNDpcXHRcXHRzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDtcXG4gNTM1OlxcdFxcdGNvbnN0IHZvaWQgKm1hYztcXG4gNTM2OlxcdFxcdHNpemVfdCBsZW47XFxuIDUzNzpcXHRcXG4gNTM4OlxcdFxcdGNlbGwgPSBudm1lbV9jZWxsX2dldChkZXYsIFxcXCJtYWMtYWRkcmVzc1xcXCIpO1xcbiA1Mzk6XFx0XFx0aWYgKElTX0VSUihjZWxsKSlcXG4gNTQwOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGNlbGwpO1xcbiA1NDE6XFx0XFxuIDU0MjpcXHRcXHRtYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgXFx1MDAyNmxlbik7XFxuIDU0MzpcXHRcXHRudm1lbV9jZWxsX3B1dChjZWxsKTtcXG4gNTQ0OlxcdFxcbiA1NDU6XFx0XFx0aWYgKElTX0VSUihtYWMpKVxcbiA1NDY6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWFjKTtcXG4gNTQ3OlxcdFxcbiA1NDg6XFx0XFx0aWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7XFxuIDU0OTpcXHRcXHRcXHRrZnJlZShtYWMpO1xcbiA1NTA6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU1MTpcXHRcXHR9XFxuIDU1MjpcXHRcXG4gNTUzOlxcdFxcdGV0aGVyX2FkZHJfY29weShhZGRyYnVmLCBtYWMpO1xcbiA1NTQ6XFx0XFx0a2ZyZWUobWFjKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTQ6MjU6MjQuMTAwNTAzMTA0WiIsIlNlcSI6NjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3MTI0NDE5ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDIEFkZHJlc3MgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzc2AgaXMgZXhwZWN0ZWQgdG8gcG9wdWxhdGUgYWxsIHNpeCBieXRlcyBvZiB0aGUgTUFDIGFkZHJlc3MgKGBFVEhfQUxFTmApIGlmIGl0IHN1Y2NlZWRzLCByZXR1cm5pbmcgMC4gSWYgaXQgZmFpbHMsIHRoZSBwYXRjaCBmYWxscyBiYWNrIHRvIGBldGhfcmFuZG9tX2FkZHIoZWZ1c2UtXHUwMDNlYWRkcik7YCDigJMgd2hpY2gsIGFnYWluLCBmdWxseSBpbml0aWFsaXplcyBgZWZ1c2UtXHUwMDNlYWRkcmAuXG5cbkFscmlnaHQsIGxldCdzIHJ1biB0aHJvdWdoIG91ciBjaGVja2xpc3QuIFRoaXMgaXMgcm91dGluZSwgYnV0IHRob3JvdWdobmVzcyBpcyBrZXkgaGVyZTpcblxuMS4gIERvZXMgaXQgZXhwb3NlIGFueSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8uIFRoZSBlbnRpcmUgYWRkcmVzcyBzcGFjZSBpcyBpbml0aWFsaXplZCBieSBlaXRoZXIgY2FsbC5cbjIuICBBbnkgcmlzayBvZiBpbmZvcm1hdGlvbiBsZWFrcyB2aWEgYGNvcHlfdG9fdXNlcmAgb3IgbmV0bGluayBjYWxscz8gQWJzb2x1dGVseSBub3QuIE5vdGhpbmcgaGVyZSBldmVuIHJlbW90ZWx5IHRvdWNoZXMgdGhvc2UgYXJlYXMuXG4zLiAgQXJlIHRoZXJlIGFueSBzdHJ1Y3R1cmUgZmllbGRzIGxlZnQgdW5pbml0aWFsaXplZCBhZnRlciB0aGlzIG9wZXJhdGlvbj8gTm9wZSwgYm90aCBwYXRocyBlbnN1cmUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIE1BQyBhZGRyZXNzIGZpZWxkLlxuNC4gIEFuZCwgY3JpdGljYWxseSwgaXMgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGJyYW5jaGluZyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGE/IE5vIHdheS4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCB0byAqZW5zdXJlKiB0aGUgZGF0YSBpcyBpbml0aWFsaXplZCAqYmVmb3JlKiBpdCdzIHVzZWQuXG5cbkdpdmVuIHRoaXMgYW5hbHlzaXMsIEknbSBjb25maWRlbnQgdGhhdCBLTVNBTiBpc24ndCBuZWNlc3NhcnkgaGVyZTsgYE5lZWRzS01TQU49ZmFsc2VgLiBUaGUgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBsaWtlIEtBU0FOIHNob3VsZCBiZSBtb3JlIHRoYW4gYWRlcXVhdGUgZm9yIHRoaXMuXG5cbk5vdywgbGV0J3MgbW92ZSBvbiBhbmQgY29uc3RydWN0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTc2LCJPdXRwdXRUb2tlbnMiOjE5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE0OjI2OjIxLjIyNDkyNjI5NloiLCJTZXEiOjY2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jYCBtb2RpZmllcyBgcnR3X2NoaXBfZWZ1c2VfaW5mb19zZXR1cCgpYCBzbyB0aGF0IHdoZW4gYW4gaW52YWxpZCBNQUMgYWRkcmVzcyBpcyByZWFkIGZyb20gdGhlIGVmdXNlLCB0aGUgZHJpdmVyIGF0dGVtcHRzIHRvIGZldGNoIGEgdmFsaWQgTUFDIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHRyZWUgLyBmaXJtd2FyZSBub2RlIG9yIE5WTUVNIHVzaW5nIGBkZXZpY2VfZ2V0X21hY19hZGRyZXNzKClgIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYGV0aF9yYW5kb21fYWRkcigpYC4gQm90aCBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCAob24gc3VjY2VzcykgYW5kIGBldGhfcmFuZG9tX2FkZHIoKWAgKG9uIGZhbGxiYWNrKSBjb21wbGV0ZWx5IG92ZXJ3cml0ZSBhbmQgaW5pdGlhbGl6ZSBhbGwgYEVUSF9BTEVOYCBieXRlcyBvZiBgZWZ1c2UtXFx1MDAzZWFkZHJgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBicmFuY2ggY29uZGl0aW9ucyBhcmUgaW50cm9kdWNlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uY2AgbW9kaWZpZXMgYHJ0d19jaGlwX2VmdXNlX2luZm9fc2V0dXAoKWAgc28gdGhhdCB3aGVuIGFuIGludmFsaWQgTUFDIGFkZHJlc3MgaXMgcmVhZCBmcm9tIHRoZSBlZnVzZSwgdGhlIGRyaXZlciBhdHRlbXB0cyB0byBmZXRjaCBhIHZhbGlkIE1BQyBhZGRyZXNzIGZyb20gdGhlIGRldmljZSB0cmVlIC8gZmlybXdhcmUgbm9kZSBvciBOVk1FTSB1c2luZyBgZGV2aWNlX2dldF9tYWNfYWRkcmVzcygpYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIGBldGhfcmFuZG9tX2FkZHIoKWAuIEJvdGggYGRldmljZV9nZXRfbWFjX2FkZHJlc3MoKWAgKG9uIHN1Y2Nlc3MpIGFuZCBgZXRoX3JhbmRvbV9hZGRyKClgIChvbiBmYWxsYmFjaykgY29tcGxldGVseSBvdmVyd3JpdGUgYW5kIGluaXRpYWxpemUgYWxsIGBFVEhfQUxFTmAgYnl0ZXMgb2YgYGVmdXNlLVxcdTAwM2VhZGRyYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnJhbmNoIGNvbmRpdGlvbnMgYXJlIGludHJvZHVjZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[1] Phase: Succeeded StartedAt: 2026-09-02 14:26:32 +0000 UTC FinishedAt: 2026-09-02 14:26:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-02 14:26:32 +0000 UTC FinishedAt: 2026-09-02 14:26:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2] Phase: Succeeded StartedAt: 2026-09-02 14:26:32 +0000 UTC FinishedAt: 2026-09-02 15:07:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-02 14:26:32 +0000 UTC FinishedAt: 2026-09-02 15:07:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-02 14:26:32 +0000 UTC FinishedAt: 2026-09-02 14:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-02 14:26:32 +0000 UTC FinishedAt: 2026-09-02 14:26:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9kg67/series-workflow9kg67-convert-artifact-2677103111/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-02 14:26:42 +0000 UTC FinishedAt: 2026-09-02 14:43:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-02 14:26:42 +0000 UTC FinishedAt: 2026-09-02 14:43:09 +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:*4241019f-4f10-43d2-9a05-8586a008746f,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-workflow9kg67/series-workflow9kg67-convert-artifact-2677103111/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": "5f9183fe-0e90-466c-b83b-0948cce536a2", "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-workflow9kg67/series-workflow9kg67-build-action-1736616093/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-02 14:26:42 +0000 UTC FinishedAt: 2026-09-02 14:42:59 +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:*4241019f-4f10-43d2-9a05-8586a008746f,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-workflow9kg67/series-workflow9kg67-convert-artifact-2677103111/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": "5f9183fe-0e90-466c-b83b-0948cce536a2", "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-workflow9kg67/series-workflow9kg67-build-action-1736616093/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-02 14:43:09 +0000 UTC FinishedAt: 2026-09-02 14:43:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-02 14:43:09 +0000 UTC FinishedAt: 2026-09-02 14:43:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-02 14:43:09 +0000 UTC FinishedAt: 2026-09-02 14:43:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-02 14:43:09 +0000 UTC FinishedAt: 2026-09-02 14:43:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9kg67/series-workflow9kg67-convert-artifact-128726070/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-02 14:43:19 +0000 UTC FinishedAt: 2026-09-02 14:45:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-02 14:43:19 +0000 UTC FinishedAt: 2026-09-02 14:45:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5f9183fe-0e90-466c-b83b-0948cce536a2,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-workflow9kg67/series-workflow9kg67-build-action-1736616093/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-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-02 14:45:12 +0000 UTC FinishedAt: 2026-09-02 14:45:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-02 14:45:12 +0000 UTC FinishedAt: 2026-09-02 14:45:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-02 14:45:12 +0000 UTC FinishedAt: 2026-09-02 15:02:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-02 14:45:12 +0000 UTC FinishedAt: 2026-09-02 15:02:28 +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:*4241019f-4f10-43d2-9a05-8586a008746f,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-workflow9kg67/series-workflow9kg67-convert-artifact-128726070/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": "abaee88f-8204-4575-a96a-7393cd5d487b", "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-workflow9kg67/series-workflow9kg67-build-action-1772386618/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-02 14:45:12 +0000 UTC FinishedAt: 2026-09-02 15:02:18 +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:*4241019f-4f10-43d2-9a05-8586a008746f,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-workflow9kg67/series-workflow9kg67-convert-artifact-128726070/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": "abaee88f-8204-4575-a96a-7393cd5d487b", "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-workflow9kg67/series-workflow9kg67-build-action-1772386618/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-02 15:02:28 +0000 UTC FinishedAt: 2026-09-02 15:02:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-02 15:02:28 +0000 UTC FinishedAt: 2026-09-02 15:02:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-02 15:02:28 +0000 UTC FinishedAt: 2026-09-02 15:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-02 15:02:28 +0000 UTC FinishedAt: 2026-09-02 15:04:38 +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:*abaee88f-8204-4575-a96a-7393cd5d487b,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-workflow9kg67/series-workflow9kg67-build-action-1772386618/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-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-02 15:04:48 +0000 UTC FinishedAt: 2026-09-02 15:07:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-02 15:04:48 +0000 UTC FinishedAt: 2026-09-02 15:07:53 +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":["rtw_chip_info_setup","rtw_usb_probe"],"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:*5f9183fe-0e90-466c-b83b-0948cce536a2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abaee88f-8204-4575-a96a-7393cd5d487b,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-workflow9kg67/series-workflow9kg67-build-action-1736616093/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-workflow9kg67/series-workflow9kg67-build-action-1772386618/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-02 15:04:48 +0000 UTC FinishedAt: 2026-09-02 15:04:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-02 15:04:48 +0000 UTC FinishedAt: 2026-09-02 15:04:52 +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":["rtw_chip_info_setup","rtw_usb_probe"],"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-workflow9kg67/series-workflow9kg67-convert-artifact-284212315/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-02 15:04:48 +0000 UTC FinishedAt: 2026-09-02 15:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-02 15:04:48 +0000 UTC FinishedAt: 2026-09-02 15:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-02 15:04:48 +0000 UTC FinishedAt: 2026-09-02 15:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-02 15:04:58 +0000 UTC FinishedAt: 2026-09-02 15:07:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9kg67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw_chip_info_setup","rtw_usb_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b78070aaef63512688aebfbc82365ef9d6660f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_CORE","RTW88_USB","RTW88_8822BU","RTW88_8822CU","RTW88_8723DU","RTW88_8821CU","RTW88_8821AU","RTW88_8812AU","RTW88_8814AU","MAC80211","USB"],"series_id":"440d1eb4-d512-48e4-a4f0-8bcb2fac961e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-02 15:04:58 +0000 UTC FinishedAt: 2026-09-02 15:07:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5f9183fe-0e90-466c-b83b-0948cce536a2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abaee88f-8204-4575-a96a-7393cd5d487b,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-workflow9kg67/series-workflow9kg67-build-action-1736616093/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-workflow9kg67/series-workflow9kg67-build-action-1772386618/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-workflow9kg67/series-workflow9kg67-convert-artifact-284212315/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,}