Name: series-workflowhxwxr Phase: Succeeded StartedAt: 2026-07-15 15:00:45 +0000 UTC FinishedAt: 2026-07-15 16:42:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxwxr[0] Phase: Succeeded StartedAt: 2026-07-15 15:00:45 +0000 UTC FinishedAt: 2026-07-15 15:50:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxwxr[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 15:00:45 +0000 UTC FinishedAt: 2026-07-15 15:50:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB" ], "series_id": "a95d32db-2d82-4c52-ade6-7a200007af71" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "brcmf_cfg80211_connect", "brcmf_set_key_mgmt", "brcmf_configure_wpaie", "brcmf_p2p_send_action_frame" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfc2V0X2tleV9tZ210JiMzNDssCiAgICAmIzM0O2JyY21mX2NvbmZpZ3VyZV93cGFpZSYjMzQ7LAogICAgJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgV0ZBIERQUCBBS00gc3VpdGUgYW5kIERQUCBwdWJsaWMgYWN0aW9uIGZyYW1lcyB0byB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgKGJyY21mbWFjKS4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBhbmQgQVAgc2V0dXAgcGF0aHMgdG8gcGFyc2UgdGhlIG5ldyBBS00gYW5kIGhhbmRsZSBTQUUvRldTVVAgY29ycmVjdGx5LCBhcyB3ZWxsIGFzIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBjb25uZWN0LCBzdGFydF9hcCwgbWdtdF90eCkgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NTYxZDVhMWY2ZmU1ZmFhM2ViYTdkNTUyY2Q1MGNlYjQ5MTU5YTE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTU6NDc6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuaW5kZXggNGI3MDg0NWUxYTI2NDMuLmQ2MWMzZTAzYTEwNmE1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRsaW5rLmhcdTAwM2VcbkBAIC0yMTU0LDYgJiM0MzsyMTU1LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcdFx0XHR2YWwgPSBXUEEyX0FVVEhfUFNLIHwgV1BBMl9BVVRIX0ZUO1xuIFx0XHRcdHByb2ZpbGUtXHUwMDNlaXNfZnQgPSB0cnVlO1xuIFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQOlxuJiM0MztcdFx0XHR2YWwgPSBXRkFfQVVUSF9EUFA7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O2ludmFsaWQgYWttIHN1aXRlICglZClcXG5cJiMzNDssXG4gXHRcdFx0XHQgc21lLVx1MDAzZWNyeXB0by5ha21fc3VpdGVzWzBdKTtcbkBAIC0yNDY2LDQzICYjNDM7MjQ3MCw1MCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRnb3RvIGRvbmU7XG4gXHR9XG4gXG4tXHRpZiAoc21lLVx1MDAzZWNyeXB0by5wc2sgXHUwMDI2XHUwMDI2XG4tXHQgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHtcbi1cdFx0aWYgKFdBUk5fT04ocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xuLVx0XHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdFx0Z290byBkb25lO1xuLVx0XHR9XG4tXHRcdGJyY21mX2RiZyhJTkZPLCBcJiMzNDt1c2luZyBQU0sgb2ZmbG9hZFxcblwmIzM0Oyk7XG4tXHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4tXHR9XG4tXG4tXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4tXHRcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xuLVx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwmIzM0O3N1cF93cGFcJiMzNDssIDEpO1xuLVx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4tXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XFxuXCYjMzQ7KTtcbi1cdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRldTVVApKSB7XG4mIzQzO1x0XHR1MzIgYWttID0gc21lLVx1MDAzZWNyeXB0by5uX2FrbV9zdWl0ZXMgPyBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gOiAwO1xuJiM0MztcdFx0Ym9vbCBpc19zYWVfYWttID0gYWttID09IFdMQU5fQUtNX1NVSVRFX1NBRSB8fFxuJiM0MztcdFx0XHRha20gPT0gV0xBTl9BS01fU1VJVEVfRlRfT1ZFUl9TQUU7XG4mIzQzO1xuJiM0MztcdFx0aWYgKHNtZS1cdTAwM2VjcnlwdG8ucHNrIFx1MDAyNlx1MDAyNiAhaXNfc2FlX2FrbSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICBwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuJiM0MztcdFx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPVxuJiM0MztcdFx0XHRcdCAgICBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XG4mIzQzO1x0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0YnJjbWZfZGJnKElORk8sIFwmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbiBcdFx0fVxuLVx0fVxuLVxuLVx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKVxuLVx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4tXHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4tXHRlbHNlIGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuLVx0XHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cbi1cdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXCYjMzQ7d3BhaWVcJiMzNDssIE5VTEwsIDApO1xuLVx0XHRpZiAoZXJyKSB7XG4tXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7ZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcblwmIzM0Oyk7XG4tXHRcdFx0Z290byBkb25lO1xuJiM0MztcdFx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkge1xuJiM0MztcdFx0XHQvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi9cbiYjNDM7XHRcdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcJiMzNDtzdXBfd3BhXCYjMzQ7LCAxKTtcbiYjNDM7XHRcdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O2ZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0Z290byBkb25lO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwmIzM0O3N1cF93cGFcJiMzNDssIDApO1xuIFx0XHR9XG4tXHRcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcdTAwMjZzbWUtXHUwMDNlY3J5cHRvKTtcbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHNtZS1cdTAwM2VjcnlwdG8ucHNrKVxuJiM0MztcdFx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKVxuIFx0XHRcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXHUwMDNlY3J5cHRvLnBzayxcbiBcdFx0XHRcdFx0ICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pO1xuJiM0MztcdFx0ZWxzZSBpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCBzbWUtXHUwMDNlY3J5cHRvLnNhZV9wd2QgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpIHtcbiYjNDM7XHRcdFx0LyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovXG4mIzQzO1x0XHRcdGlmIChicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcJiMzNDt3cGFpZVwmIzM0OywgTlVMTCwgMCkpIHtcbiYjNDM7XHRcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtmYWlsZWQgdG8gY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFx1MDAyNnNtZS1cdTAwM2VjcnlwdG8pO1xuJiM0MztcdFx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgc21lLVx1MDAzZWNyeXB0by5wc2spXG4mIzQzO1x0XHRcdFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cdTAwM2VjcnlwdG8ucHNrLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRnb3RvIGRvbmU7XG4gXHR9XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGRvbmU7XG4tXG4gXHQvKiBKb2luIHdpdGggc3BlY2lmaWMgQlNTSUQgYW5kIGNhY2hlZCBTU0lEXG4gXHQgKiBJZiBTU0lEIGlzIHplcm8gam9pbiBiYXNlZCBvbiBCU1NJRCBvbmx5XG4gXHQgKi9cbkBAIC00NTE5LDYgJiM0Mzs0NTMwLDExIEBAIHN0YXRpYyBib29sIGJyY21mX3ZhbGlkX3dwYV9vdWkodTggKm91aSwgYm9vbCBpc19yc25faWUpXG4gXHRyZXR1cm4gKG1lbWNtcChvdWksIFdQQV9PVUksIFRMVl9PVUlfTEVOKSA9PSAwKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGJyY21mX3ZhbGlkX2RwcF9zdWl0ZSh1OCAqb3VpKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGdldF91bmFsaWduZWRfYmUzMihvdWkpID09IFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHMzMlxuIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0ICAgICAgY29uc3Qgc3RydWN0IGJyY21mX3ZzX3RsdiAqd3BhX2llLFxuQEAgLTQ2MzIsNDIgJiM0Mzs0NjQ4LDQ3IEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY291bnQ7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGlmICghYnJjbWZfdmFsaWRfd3BhX291aShcdTAwMjZkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHtcbiYjNDM7XHRcdGlmIChicmNtZl92YWxpZF9kcHBfc3VpdGUoXHUwMDI2ZGF0YVtvZmZzZXRdKSkge1xuJiM0MztcdFx0XHR3cGFfYXV0aCB8PSBXRkFfQVVUSF9EUFA7XG4mIzQzO1x0XHRcdG9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47XG4mIzQzO1x0XHR9IGVsc2UgaWYgKGJyY21mX3ZhbGlkX3dwYV9vdWkoXHUwMDI2ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7XG4mIzQzO1x0XHRcdG9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47XG4mIzQzO1x0XHRcdHN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7XG4mIzQzO1x0XHRcdGNhc2UgUlNOX0FLTV9OT05FOlxuJiM0MztcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9OT05FXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XG4mIzQzO1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX1VOU1BFQ0lGSUVEXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRpc19yc25faWUgP1xuJiM0MztcdFx0XHRcdFx0KHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOlxuJiM0MztcdFx0XHRcdFx0KHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSBSU05fQUtNX1BTSzpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fUFNLXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxuJiM0MztcdFx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fTUZQX1BTS1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XG4mIzQzO1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX01GUF8xWFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSBSU05fQUtNX1NBRTpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fU0FFXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSztcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0ZGVmYXVsdDpcbiYjNDM7XHRcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtJbnZhbGlkIGtleSBtZ210IGluZm9cXG5cJiMzNDspO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9IGVsc2Uge1xuIFx0XHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7aW52YWxpZCBPVUlcXG5cJiMzNDspO1xuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuLVx0XHRvZmZzZXQgJiM0Mzs9IFRMVl9PVUlfTEVOO1xuLVx0XHRzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkge1xuLVx0XHRjYXNlIFJTTl9BS01fTk9ORTpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fTk9ORVxcblwmIzM0Oyk7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9VTlNQRUNJRklFRFxcblwmIzM0Oyk7XG4tXHRcdFx0aXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOlxuLVx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9QU0s6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX1BTS1xcblwmIzM0Oyk7XG4tXHRcdFx0aXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0spIDpcbi1cdFx0XHRcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfUFNLKTtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1NIQTI1Nl9QU0s6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX01GUF9QU0tcXG5cJiMzNDspO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0tfU0hBMjU2O1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9NRlBfMVhcXG5cJiMzNDspO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TQUU6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX1NBRVxcblwmIzM0Oyk7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBM19BVVRIX1NBRV9QU0s7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGRlZmF1bHQ6XG4tXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7SW52YWxpZCBrZXkgbWdtdCBpbmZvXFxuXCYjMzQ7KTtcbi1cdFx0fVxuIFx0XHRvZmZzZXQmIzQzOyYjNDM7O1xuIFx0fVxuIFxuQEAgLTQ2ODcsMTAgJiM0Mzs0NzA4LDEyIEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aWYgKCEod3BhX2F1dGggXHUwMDI2IChXUEEyX0FVVEhfUFNLX1NIQTI1NiB8XG4gXHRcdFx0XHRcdFx0ICBXUEEyX0FVVEhfMVhfU0hBMjU2IHxcbiYjNDM7XHRcdFx0XHRcdFx0ICBXRkFfQVVUSF9EUFAgfFxuIFx0XHRcdFx0XHRcdCAgV1BBM19BVVRIX1NBRV9QU0spKSkge1xuIFx0XHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdFx0XHR9XG4mIzQzO1xuIFx0XHRcdFx0LyogRmlybXdhcmUgaGFzIHJlcXVpcmVtZW50IHRoYXQgV1BBMl9BVVRIX1BTSy9cbiBcdFx0XHRcdCAqIFdQQTJfQVVUSF9VTlNQRUNJRklFRCBiZSBzZXQsIGlmIFNIQTI1NiBPVUlcbiBcdFx0XHRcdCAqIGlzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByc24gaWUuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5pbmRleCA2ZTBjOTBmNDcxOGI1OC4uNThhOTczOGU4MWFjZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuQEAgLTYsNiAmIzQzOzYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3J0bmV0bGluay5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2NmZzgwMjExLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2NicmNtdV93aWZpLmhcdTAwM2VcbkBAIC00NCw5ICYjNDM7NDUsNiBAQFxuIFxuICNkZWZpbmUgQlJDTUZfU0NCX1RJTUVPVVRfVkFMVUVcdDIwXG4gXG4tI2RlZmluZSBQMlBfVkVSXHRcdFx0OVx0LyogUDJQIHZlcnNpb246IDk9V2lGaSBQMlAgdjEuMCAqL1xuLSNkZWZpbmUgUDJQX1BVQl9BRl9DQVRFR09SWVx0MHgwNFxuLSNkZWZpbmUgUDJQX1BVQl9BRl9BQ1RJT05cdDB4MDlcbiAjZGVmaW5lIFAyUF9BRl9DQVRFR09SWVx0XHQweDdmXG4gI2RlZmluZSBQMlBfT1VJXHRcdFx0XCYjMzQ7XFx4NTBcXHg2RlxceDlBXCYjMzQ7XHQvKiBQMlAgT1VJICovXG4gI2RlZmluZSBQMlBfT1VJX0xFTlx0XHQzXHRcdC8qIFAyUCBPVUkgbGVuZ3RoICovXG5AQCAtMTQzLDEwICYjNDM7MTQxLDEwIEBAIHN0cnVjdCBicmNtZl9wMnBfc2Nhbl9sZSB7XG4gLyoqXG4gICogc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIC0gV2lGaSBQMlAgUHVibGljIEFjdGlvbiBGcmFtZVxuICAqXG4tICogQGNhdGVnb3J5OiBQMlBfUFVCX0FGX0NBVEVHT1JZXG4tICogQGFjdGlvbjogUDJQX1BVQl9BRl9BQ1RJT05cbiYjNDM7ICogQGNhdGVnb3J5OiBXTEFOX0NBVEVHT1JZX1BVQkxJQ1xuJiM0MzsgKiBAYWN0aW9uOiBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDXG4gICogQG91aTogUDJQX09VSVxuLSAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBQMlBfVkVSXG4mIzQzOyAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBXTEFOX09VSV9UWVBFX1dGQV9QMlBcbiAgKiBAc3VidHlwZTogT1VJIHN1YnR5cGUgLSBQMlBfVFlQRV8qXG4gICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcnNwIHRyYW5zYWN0aW9uXG4gICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy5cbkBAIC0xNjYsNyAmIzQzOzE2NCw3IEBAIHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSB7XG4gICpcbiAgKiBAY2F0ZWdvcnk6IFAyUF9BRl9DQVRFR09SWVxuICAqIEBvdWk6IE9VSSAtIFAyUF9PVUlcbi0gKiBAdHlwZTogT1VJIFR5cGUgLSBQMlBfVkVSXG4mIzQzOyAqIEB0eXBlOiBPVUkgVHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUFxuICAqIEBzdWJ0eXBlOiBPVUkgU3VidHlwZSAtIFAyUF9BRl8qXG4gICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcmVzcCB0cmFuYWN0aW9uXG4gICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy5cbkBAIC0yMjgsMTAgJiM0MzsyMjYsMzggQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4gXHRpZiAoZnJhbWVfbGVuIFx1MDAzYyBzaXplb2YoKnBhY3RfZnJtKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFAyUF9QVUJfQUZfQ0FURUdPUlkgXHUwMDI2XHUwMDI2XG4tXHQgICAgcGFjdF9mcm0tXHUwMDNlYWN0aW9uID09IFAyUF9QVUJfQUZfQUNUSU9OIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHBhY3RfZnJtLVx1MDAzZW91aV90eXBlID09IFAyUF9WRVIgXHUwMDI2XHUwMDI2XG4tXHQgICAgbWVtY21wKHBhY3RfZnJtLVx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXG4mIzQzO1x0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwYWN0X2ZybS1cdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tXHUwMDNlb3VpKSA9PSBXTEFOX09VSV9XRkEpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKCkgLSB0cnVlIGlmIGRwcCBwdWJsaWMgdHlwZSBmcmFtZS5cbiYjNDM7ICpcbiYjNDM7ICogQGZyYW1lOiBhY3Rpb24gZnJhbWUgZGF0YS5cbiYjNDM7ICogQGZyYW1lX2xlbjogbGVuZ3RoIG9mIGFjdGlvbiBmcmFtZSBkYXRhLlxuJiM0MzsgKlxuJiM0MzsgKiBEZXRlcm1pbmUgaWYgYWN0aW9uIGZyYW1lIGlzIGRwcCBwdWJsaWMgYWN0aW9uIHR5cGVcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBib29sIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAqcGFjdF9mcm07XG4mIzQzO1xuJiM0MztcdGlmICghZnJhbWUpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHBhY3RfZnJtID0gKHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAqKWZyYW1lO1xuJiM0MztcdGlmIChmcmFtZV9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUpIC0gMSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwYWN0X2ZybS1cdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfRFBQIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tXHUwMDNlb3VpKSA9PSBXTEFOX09VSV9XRkEpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0cmV0dXJuIGZhbHNlO1xuQEAgLTI1Nyw3ICYjNDM7MjgzLDcgQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmIChhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFAyUF9BRl9DQVRFR09SWSBcdTAwMjZcdTAwMjZcbi1cdCAgICBhY3RfZnJtLVx1MDAzZXR5cGUgID09IFAyUF9WRVIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGFjdF9mcm0tXHUwMDNldHlwZSAgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG1lbWNtcChhY3RfZnJtLVx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuQEAgLTE3ODksNyAmIzQzOzE4MTUsOSBAQCBib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuIFx0fSBlbHNlIGlmIChicmNtZl9wMnBfaXNfcDJwX2FjdGlvbihhY3Rpb25fZnJhbWUtXHUwMDNlZGF0YSxcbi1cdFx0XHRcdFx0ICAgYWN0aW9uX2ZyYW1lX2xlbikpIHtcbiYjNDM7XHRcdFx0XHRcdCAgIGFjdGlvbl9mcmFtZV9sZW4pIHx8XG4mIzQzO1x0XHQgICBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oYWN0aW9uX2ZyYW1lLVx1MDAzZWRhdGEsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgYWN0aW9uX2ZyYW1lX2xlbikpIHtcbiBcdFx0LyogZG8gbm90IGNvbmZpZ3VyZSBhbnl0aGluZy4gaXQgd2lsbCBiZSAqL1xuIFx0XHQvKiBzZW50IHdpdGggYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gICAgICovXG4gXHR9IGVsc2Uge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxuaW5kZXggNzU1MmJkYjkxOTkxY2UuLmM0NjUyMDhjNDMzMTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcbkBAIC0yMzMsNiAmIzQzOzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXG4gXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1x0MHg0MDAwMFx0LyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovXG4gXG4mIzQzOyNkZWZpbmUgV0ZBX0FVVEhfRFBQXHRcdDB4MjAwMDAwIC8qIFdGQSBEUFAgQVVUSCAqL1xuJiM0MztcbiAjZGVmaW5lIERPVDExX0RFRkFVTFRfUlRTX0xFTlx0XHQyMzQ3XG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX0ZSQUdfTEVOXHRcdDIzNDZcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticmNtZl9jZmc4MDIxMV9jb25uZWN0JiMzNDssCiAgICAmIzM0O2JyY21mX3NldF9rZXlfbWdtdCYjMzQ7LAogICAgJiMzNDticmNtZl9jb25maWd1cmVfd3BhaWUmIzM0OywKICAgICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFdGQSBEUFAgQUtNIHN1aXRlIGFuZCBEUFAgcHVibGljIGFjdGlvbiBmcmFtZXMgdG8gdGhlIEJyb2FkY29tIEZ1bGxNQUMgZHJpdmVyIChicmNtZm1hYykuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gYW5kIEFQIHNldHVwIHBhdGhzIHRvIHBhcnNlIHRoZSBuZXcgQUtNIGFuZCBoYW5kbGUgU0FFL0ZXU1VQIGNvcnJlY3RseSwgYXMgd2VsbCBhcyB0aGUgUDJQIGFjdGlvbiBmcmFtZSB0cmFuc21pc3Npb24gcGF0aC4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmw4MDIxMSBjb21tYW5kcyAoZS5nLiwgY29ubmVjdCwgc3RhcnRfYXAsIG1nbXRfdHgpIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhbiBlbXVsYXRlZCBVU0IgZGV2aWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NTYxZDVhMWY2ZmU1ZmFhM2ViYTdkNTUyY2Q1MGNlYjQ5MTU5YTE3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMTU6NDc6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCmluZGV4IDRiNzA4NDVlMWEyNjQzLi5kNjFjM2UwM2ExMDZhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aGVyZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3VuYWxpZ25lZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvY2ZnODAyMTEuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvbmV0bGluay5oJmd0OwpAQCAtMjE1NCw2ICYjNDM7MjE1NSw5IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpCiAJCQl2YWwgPSBXUEEyX0FVVEhfUFNLIHwgV1BBMl9BVVRIX0ZUOwogCQkJcHJvZmlsZS0mZ3Q7aXNfZnQgPSB0cnVlOwogCQkJYnJlYWs7CiYjNDM7CQljYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6CiYjNDM7CQkJdmFsID0gV0ZBX0FVVEhfRFBQOwomIzQzOwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtpbnZhbGlkIGFrbSBzdWl0ZSAoJWQpXG4mIzM0OywKIAkJCQkgc21lLSZndDtjcnlwdG8uYWttX3N1aXRlc1swXSk7CkBAIC0yNDY2LDQzICYjNDM7MjQ3MCw1MCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlnb3RvIGRvbmU7CiAJfQogCi0JaWYgKHNtZS0mZ3Q7Y3J5cHRvLnBzayAmYW1wOyZhbXA7Ci0JICAgIHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkgewotCQlpZiAoV0FSTl9PTihwcm9maWxlLSZndDt1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkgewotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gZG9uZTsKLQkJfQotCQlicmNtZl9kYmcoSU5GTywgJiMzNDt1c2luZyBQU0sgb2ZmbG9hZFxuJiMzNDspOwotCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSzsKLQl9Ci0KLQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkgewotCQkvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi8KLQkJZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCAmIzM0O3N1cF93cGEmIzM0OywgMSk7Ci0JCWlmIChlcnIgJmx0OyAwKSB7Ci0JCQlicGh5X2VycihkcnZyLCAmIzM0O2ZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxuJiMzNDspOwotCQkJZ290byBkb25lOwomIzQzOwlpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GV1NVUCkpIHsKJiM0MzsJCXUzMiBha20gPSBzbWUtJmd0O2NyeXB0by5uX2FrbV9zdWl0ZXMgPyBzbWUtJmd0O2NyeXB0by5ha21fc3VpdGVzWzBdIDogMDsKJiM0MzsJCWJvb2wgaXNfc2FlX2FrbSA9IGFrbSA9PSBXTEFOX0FLTV9TVUlURV9TQUUgfHwKJiM0MzsJCQlha20gPT0gV0xBTl9BS01fU1VJVEVfRlRfT1ZFUl9TQUU7CiYjNDM7CiYjNDM7CQlpZiAoc21lLSZndDtjcnlwdG8ucHNrICZhbXA7JmFtcDsgIWlzX3NhZV9ha20gJmFtcDsmYW1wOwomIzQzOwkJICAgIHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkgewomIzQzOwkJCWlmIChXQVJOX09OKHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPQomIzQzOwkJCQkgICAgQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkgewomIzQzOwkJCQllcnIgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIGRvbmU7CiYjNDM7CQkJfQomIzQzOwkJCWJyY21mX2RiZyhJTkZPLCAmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXG4mIzM0Oyk7CiYjNDM7CQkJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7CiAJCX0KLQl9Ci0KLQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKQotCQllcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLSZndDtjcnlwdG8ucHNrLAotCQkJCSAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTsKLQllbHNlIGlmIChwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHsKLQkJLyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovCi0JCWVyciA9IGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsICYjMzQ7d3BhaWUmIzM0OywgTlVMTCwgMCk7Ci0JCWlmIChlcnIpIHsKLQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7ZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxuJiMzNDspOwotCQkJZ290byBkb25lOwomIzQzOwkJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHsKJiM0MzsJCQkvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi8KJiM0MzsJCQllcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsICYjMzQ7c3VwX3dwYSYjMzQ7LCAxKTsKJiM0MzsJCQlpZiAoZXJyICZsdDsgMCkgewomIzQzOwkJCQlicGh5X2VycihkcnZyLCAmIzM0O2ZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxuJiMzNDspOwomIzQzOwkJCQlnb3RvIGRvbmU7CiYjNDM7CQkJfQomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQllcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsICYjMzQ7c3VwX3dwYSYjMzQ7LCAwKTsKIAkJfQotCQllcnIgPSBicmNtZl9md3ZpZF9zZXRfc2FlX3Bhc3N3b3JkKGlmcCwgJmFtcDtzbWUtJmd0O2NyeXB0byk7Ci0JCWlmICghZXJyICZhbXA7JmFtcDsgc21lLSZndDtjcnlwdG8ucHNrKQomIzQzOwkJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSykKIAkJCWVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtJmd0O2NyeXB0by5wc2ssCiAJCQkJCSAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTsKJiM0MzsJCWVsc2UgaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSAmYW1wOyZhbXA7CiYjNDM7CQkJIHNtZS0mZ3Q7Y3J5cHRvLnNhZV9wd2QgJmFtcDsmYW1wOwomIzQzOwkJCSBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpIHsKJiM0MzsJCQkvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi8KJiM0MzsJCQlpZiAoYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgJiMzNDt3cGFpZSYjMzQ7LCBOVUxMLCAwKSkgewomIzQzOwkJCQlicGh5X2VycihkcnZyLCAmIzM0O2ZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcbiYjMzQ7KTsKJiM0MzsJCQkJZ290byBkb25lOwomIzQzOwkJCX0KJiM0MzsJCQllcnIgPSBicmNtZl9md3ZpZF9zZXRfc2FlX3Bhc3N3b3JkKGlmcCwgJmFtcDtzbWUtJmd0O2NyeXB0byk7CiYjNDM7CQkJaWYgKCFlcnIgJmFtcDsmYW1wOyBzbWUtJmd0O2NyeXB0by5wc2spCiYjNDM7CQkJCWVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtJmd0O2NyeXB0by5wc2ssCiYjNDM7CQkJCQkJICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pOwomIzQzOwkJfQomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlnb3RvIGRvbmU7CiAJfQotCWlmIChlcnIpCi0JCWdvdG8gZG9uZTsKLQogCS8qIEpvaW4gd2l0aCBzcGVjaWZpYyBCU1NJRCBhbmQgY2FjaGVkIFNTSUQKIAkgKiBJZiBTU0lEIGlzIHplcm8gam9pbiBiYXNlZCBvbiBCU1NJRCBvbmx5CiAJICovCkBAIC00NTE5LDYgJiM0Mzs0NTMwLDExIEBAIHN0YXRpYyBib29sIGJyY21mX3ZhbGlkX3dwYV9vdWkodTggKm91aSwgYm9vbCBpc19yc25faWUpCiAJcmV0dXJuIChtZW1jbXAob3VpLCBXUEFfT1VJLCBUTFZfT1VJX0xFTikgPT0gMCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBicmNtZl92YWxpZF9kcHBfc3VpdGUodTggKm91aSkKJiM0Mzt7CiYjNDM7CXJldHVybiBnZXRfdW5hbGlnbmVkX2JlMzIob3VpKSA9PSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzMzIKIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAkJICAgICAgY29uc3Qgc3RydWN0IGJyY21mX3ZzX3RsdiAqd3BhX2llLApAQCAtNDYzMiw0MiAmIzQzOzQ2NDgsNDcgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQlnb3RvIGV4aXQ7CiAJfQogCWZvciAoaSA9IDA7IGkgJmx0OyBjb3VudDsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKCFicmNtZl92YWxpZF93cGFfb3VpKCZhbXA7ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7CiYjNDM7CQlpZiAoYnJjbWZfdmFsaWRfZHBwX3N1aXRlKCZhbXA7ZGF0YVtvZmZzZXRdKSkgewomIzQzOwkJCXdwYV9hdXRoIHw9IFdGQV9BVVRIX0RQUDsKJiM0MzsJCQlvZmZzZXQgJiM0Mzs9IFRMVl9PVUlfTEVOOwomIzQzOwkJfSBlbHNlIGlmIChicmNtZl92YWxpZF93cGFfb3VpKCZhbXA7ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7CiYjNDM7CQkJb2Zmc2V0ICYjNDM7PSBUTFZfT1VJX0xFTjsKJiM0MzsJCQlzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkgewomIzQzOwkJCWNhc2UgUlNOX0FLTV9OT05FOgomIzQzOwkJCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9OT05FXG4mIzM0Oyk7CiYjNDM7CQkJCXdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgUlNOX0FLTV9VTlNQRUNJRklFRDoKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fVU5TUEVDSUZJRURcbiYjMzQ7KTsKJiM0MzsJCQkJaXNfcnNuX2llID8KJiM0MzsJCQkJCSh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDoKJiM0MzsJCQkJCSh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgUlNOX0FLTV9QU0s6CiYjNDM7CQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX1BTS1xuJiMzNDspOwomIzQzOwkJCQlpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOgomIzQzOwkJCQkJICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQljYXNlIFJTTl9BS01fU0hBMjU2X1BTSzoKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fTUZQX1BTS1xuJiMzNDspOwomIzQzOwkJCQl3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBSU05fQUtNX1NIQTI1Nl8xWDoKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fTUZQXzFYXG4mIzM0Oyk7CiYjNDM7CQkJCXdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgUlNOX0FLTV9TQUU6CiYjNDM7CQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX1NBRVxuJiMzNDspOwomIzQzOwkJCQl3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSzsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJZGVmYXVsdDoKJiM0MzsJCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtJbnZhbGlkIGtleSBtZ210IGluZm9cbiYjMzQ7KTsKJiM0MzsJCQl9CiYjNDM7CQl9IGVsc2UgewogCQkJZXJyID0gLUVJTlZBTDsKIAkJCWJwaHlfZXJyKGRydnIsICYjMzQ7aW52YWxpZCBPVUlcbiYjMzQ7KTsKIAkJCWdvdG8gZXhpdDsKIAkJfQotCQlvZmZzZXQgJiM0Mzs9IFRMVl9PVUlfTEVOOwotCQlzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkgewotCQljYXNlIFJTTl9BS01fTk9ORToKLQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX05PTkVcbiYjMzQ7KTsKLQkJCXdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7Ci0JCQlicmVhazsKLQkJY2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fVU5TUEVDSUZJRURcbiYjMzQ7KTsKLQkJCWlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDoKLQkJCQkgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTsKLQkJCWJyZWFrOwotCQljYXNlIFJTTl9BS01fUFNLOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fUFNLXG4mIzM0Oyk7Ci0JCQlpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOgotCQkJCSAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfUFNLKTsKLQkJCWJyZWFrOwotCQljYXNlIFJTTl9BS01fU0hBMjU2X1BTSzoKLQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX01GUF9QU0tcbiYjMzQ7KTsKLQkJCXdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0tfU0hBMjU2OwotCQkJYnJlYWs7Ci0JCWNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6Ci0JCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9NRlBfMVhcbiYjMzQ7KTsKLQkJCXdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7Ci0JCQlicmVhazsKLQkJY2FzZSBSU05fQUtNX1NBRToKLQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX1NBRVxuJiMzNDspOwotCQkJd3BhX2F1dGggfD0gV1BBM19BVVRIX1NBRV9QU0s7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7SW52YWxpZCBrZXkgbWdtdCBpbmZvXG4mIzM0Oyk7Ci0JCX0KIAkJb2Zmc2V0JiM0MzsmIzQzOzsKIAl9CiAKQEAgLTQ2ODcsMTAgJiM0Mzs0NzA4LDEyIEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAkJCQkgKi8KIAkJCQlpZiAoISh3cGFfYXV0aCAmYW1wOyAoV1BBMl9BVVRIX1BTS19TSEEyNTYgfAogCQkJCQkJICBXUEEyX0FVVEhfMVhfU0hBMjU2IHwKJiM0MzsJCQkJCQkgIFdGQV9BVVRIX0RQUCB8CiAJCQkJCQkgIFdQQTNfQVVUSF9TQUVfUFNLKSkpIHsKIAkJCQkJZXJyID0gLUVJTlZBTDsKIAkJCQkJZ290byBleGl0OwogCQkJCX0KJiM0MzsKIAkJCQkvKiBGaXJtd2FyZSBoYXMgcmVxdWlyZW1lbnQgdGhhdCBXUEEyX0FVVEhfUFNLLwogCQkJCSAqIFdQQTJfQVVUSF9VTlNQRUNJRklFRCBiZSBzZXQsIGlmIFNIQTI1NiBPVUkKIAkJCQkgKiBpcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcnNuIGllLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCmluZGV4IDZlMGM5MGY0NzE4YjU4Li41OGE5NzM4ZTgxYWNlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwpAQCAtNiw2ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXRoZXJkZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ydG5ldGxpbmsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2NmZzgwMjExLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDticmNtdV93aWZpLmgmZ3Q7CkBAIC00NCw5ICYjNDM7NDUsNiBAQAogCiAjZGVmaW5lIEJSQ01GX1NDQl9USU1FT1VUX1ZBTFVFCTIwCiAKLSNkZWZpbmUgUDJQX1ZFUgkJCTkJLyogUDJQIHZlcnNpb246IDk9V2lGaSBQMlAgdjEuMCAqLwotI2RlZmluZSBQMlBfUFVCX0FGX0NBVEVHT1JZCTB4MDQKLSNkZWZpbmUgUDJQX1BVQl9BRl9BQ1RJT04JMHgwOQogI2RlZmluZSBQMlBfQUZfQ0FURUdPUlkJCTB4N2YKICNkZWZpbmUgUDJQX09VSQkJCSYjMzQ7XHg1MFx4NkZceDlBJiMzNDsJLyogUDJQIE9VSSAqLwogI2RlZmluZSBQMlBfT1VJX0xFTgkJMwkJLyogUDJQIE9VSSBsZW5ndGggKi8KQEAgLTE0MywxMCAmIzQzOzE0MSwxMCBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3NjYW5fbGUgewogLyoqCiAgKiBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgLSBXaUZpIFAyUCBQdWJsaWMgQWN0aW9uIEZyYW1lCiAgKgotICogQGNhdGVnb3J5OiBQMlBfUFVCX0FGX0NBVEVHT1JZCi0gKiBAYWN0aW9uOiBQMlBfUFVCX0FGX0FDVElPTgomIzQzOyAqIEBjYXRlZ29yeTogV0xBTl9DQVRFR09SWV9QVUJMSUMKJiM0MzsgKiBAYWN0aW9uOiBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDCiAgKiBAb3VpOiBQMlBfT1VJCi0gKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gUDJQX1ZFUgomIzQzOyAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBXTEFOX09VSV9UWVBFX1dGQV9QMlAKICAqIEBzdWJ0eXBlOiBPVUkgc3VidHlwZSAtIFAyUF9UWVBFXyoKICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3JzcCB0cmFuc2FjdGlvbgogICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy4KQEAgLTE2Niw3ICYjNDM7MTY0LDcgQEAgc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIHsKICAqCiAgKiBAY2F0ZWdvcnk6IFAyUF9BRl9DQVRFR09SWQogICogQG91aTogT1VJIC0gUDJQX09VSQotICogQHR5cGU6IE9VSSBUeXBlIC0gUDJQX1ZFUgomIzQzOyAqIEB0eXBlOiBPVUkgVHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUAogICogQHN1YnR5cGU6IE9VSSBTdWJ0eXBlIC0gUDJQX0FGXyoKICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3Jlc3AgdHJhbmFjdGlvbgogICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy4KQEAgLTIyOCwxMCAmIzQzOzIyNiwzOCBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbikKIAlpZiAoZnJhbWVfbGVuICZsdDsgc2l6ZW9mKCpwYWN0X2ZybSkpCiAJCXJldHVybiBmYWxzZTsKIAotCWlmIChwYWN0X2ZybS0mZ3Q7Y2F0ZWdvcnkgPT0gUDJQX1BVQl9BRl9DQVRFR09SWSAmYW1wOyZhbXA7Ci0JICAgIHBhY3RfZnJtLSZndDthY3Rpb24gPT0gUDJQX1BVQl9BRl9BQ1RJT04gJmFtcDsmYW1wOwotCSAgICBwYWN0X2ZybS0mZ3Q7b3VpX3R5cGUgPT0gUDJQX1ZFUiAmYW1wOyZhbXA7Ci0JICAgIG1lbWNtcChwYWN0X2ZybS0mZ3Q7b3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMCkKJiM0MzsJaWYgKHBhY3RfZnJtLSZndDtjYXRlZ29yeSA9PSBXTEFOX0NBVEVHT1JZX1BVQkxJQyAmYW1wOyZhbXA7CiYjNDM7CSAgICBwYWN0X2ZybS0mZ3Q7YWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgJmFtcDsmYW1wOwomIzQzOwkgICAgcGFjdF9mcm0tJmd0O291aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCAmYW1wOyZhbXA7CiYjNDM7CSAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tJmd0O291aSkgPT0gV0xBTl9PVUlfV0ZBKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKCkgLSB0cnVlIGlmIGRwcCBwdWJsaWMgdHlwZSBmcmFtZS4KJiM0MzsgKgomIzQzOyAqIEBmcmFtZTogYWN0aW9uIGZyYW1lIGRhdGEuCiYjNDM7ICogQGZyYW1lX2xlbjogbGVuZ3RoIG9mIGFjdGlvbiBmcmFtZSBkYXRhLgomIzQzOyAqCiYjNDM7ICogRGV0ZXJtaW5lIGlmIGFjdGlvbiBmcmFtZSBpcyBkcHAgcHVibGljIGFjdGlvbiB0eXBlCiYjNDM7ICovCiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKQomIzQzO3sKJiM0MzsJc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICpwYWN0X2ZybTsKJiM0MzsKJiM0MzsJaWYgKCFmcmFtZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcGFjdF9mcm0gPSAoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICopZnJhbWU7CiYjNDM7CWlmIChmcmFtZV9sZW4gJmx0OyBzaXplb2Yoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lKSAtIDEpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmIChwYWN0X2ZybS0mZ3Q7Y2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgJmFtcDsmYW1wOwomIzQzOwkgICAgcGFjdF9mcm0tJmd0O2FjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDICZhbXA7JmFtcDsKJiM0MzsJICAgIHBhY3RfZnJtLSZndDtvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9EUFAgJmFtcDsmYW1wOwomIzQzOwkgICAgZ2V0X3VuYWxpZ25lZF9iZTI0KHBhY3RfZnJtLSZndDtvdWkpID09IFdMQU5fT1VJX1dGQSkKIAkJcmV0dXJuIHRydWU7CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC0yNTcsNyAmIzQzOzI4Myw3IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wMnBfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoYWN0X2ZybS0mZ3Q7Y2F0ZWdvcnkgPT0gUDJQX0FGX0NBVEVHT1JZICZhbXA7JmFtcDsKLQkgICAgYWN0X2ZybS0mZ3Q7dHlwZSAgPT0gUDJQX1ZFUiAmYW1wOyZhbXA7CiYjNDM7CSAgICBhY3RfZnJtLSZndDt0eXBlICA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgJmFtcDsmYW1wOwogCSAgICBtZW1jbXAoYWN0X2ZybS0mZ3Q7b3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMCkKIAkJcmV0dXJuIHRydWU7CiAKQEAgLTE3ODksNyAmIzQzOzE4MTUsOSBAQCBib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLAogCQkJZ290byBleGl0OwogCQl9CiAJfSBlbHNlIGlmIChicmNtZl9wMnBfaXNfcDJwX2FjdGlvbihhY3Rpb25fZnJhbWUtJmd0O2RhdGEsCi0JCQkJCSAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7CiYjNDM7CQkJCQkgICBhY3Rpb25fZnJhbWVfbGVuKSB8fAomIzQzOwkJICAgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKGFjdGlvbl9mcmFtZS0mZ3Q7ZGF0YSwKJiM0MzsJCQkJCSAgICAgICBhY3Rpb25fZnJhbWVfbGVuKSkgewogCQkvKiBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLiBpdCB3aWxsIGJlICovCiAJCS8qIHNlbnQgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiAgICAgKi8KIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oCmluZGV4IDc1NTJiZGI5MTk5MWNlLi5jNDY1MjA4YzQzMzE4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaApAQCAtMjMzLDYgJiM0MzsyMzMsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWNfYml0bWFwX3RzdCh1OCBiaXRtYXAsIGludCBwcmVjKQogCiAjZGVmaW5lIFdQQTNfQVVUSF9TQUVfUFNLCTB4NDAwMDAJLyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovCiAKJiM0MzsjZGVmaW5lIFdGQV9BVVRIX0RQUAkJMHgyMDAwMDAgLyogV0ZBIERQUCBBVVRIICovCiYjNDM7CiAjZGVmaW5lIERPVDExX0RFRkFVTFRfUlRTX0xFTgkJMjM0NwogI2RlZmluZSBET1QxMV9ERUZBVUxUX0ZSQUdfTEVOCQkyMzQ2CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg4MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERQUCBTdXBwb3J0IFBhdGNoIGluIGJyY21mbWFjKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgYWRkcyBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIEFLTSBzdWl0ZSBzdXBwb3J0IGFuZCBwdWJsaWMgYWN0aW9uIGZyYW1lIGhhbmRsaW5nIHRvIHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9gIGRpcmVjdG9yeS4gSXQgYWxzbyBzZWVtcyB0byBiZSBtYWtpbmcgYWRqdXN0bWVudHMgdG8gYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIHRvIGJldHRlciBoYW5kbGUgU0FFIEFLTSBhbmQgdGhlIGZpcm13YXJlIHN1cHBsaWNhbnQgKEZXU1VQKSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gcmVhY2hhYmlsaXR5IGFuZCBmdXp6aW5nIHBvdGVudGlhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgcGF0Y2ggaXMgYWN0aXZhdGVkIGFuZCBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBub3cgbW9kaWZpZWQgb3IgaW50cm9kdWNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgdGhhdCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG91Y2hlZCBhcmUgYGJyY21mX3NldF9rZXlfbWdtdGAsIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gLCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSBwYXJ0IG9mIHRoZSBgYnJjbWZtYWNgIGRyaXZlci4KCk5leHQsIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIHRoZSBgS2NvbmZpZ2AgZmlsZSBmb3IgYGJyY21mbWFjYC4gSXQmIzM5O3MgbGlrZWx5IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ2Agb3Igc29tZXdoZXJlIHNpbWlsYXIuIEkmIzM5O2xsIHVzZSBgY29kZXNlYXJjaC1kaXItaW5kZXhgIGFuZCBgZ3JlcHBlcmAgdG8gbG9jYXRlIGl0IHF1aWNrbHkuIFRoaXMgS2NvbmZpZyB3aWxsIGJlIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJiMzOTtzIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBob3cgdGhlIERQUCBmdW5jdGlvbmFsaXR5IGlzIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyB3aWxsIGxpa2VseSBnaXZlIG1lIGtleSBpbnNpZ2h0cyBmb3IgYnVpbGRpbmcgYSB0ZXN0IGVudmlyb25tZW50IHRoYXQgY2FuIHJlYWNoIGFuZCBleGVyY2lzZSB0aGUgRFBQIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSQ01GTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3OAoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDQyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBCUkNNRk1BQyBEcml2ZXI6IEEgU3RyYXRlZ2ljIEFwcHJvYWNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIGBCUkNNRk1BQ2AgZHJpdmVyIGluIG15IHNpZ2h0cy4gSXQmIzM5O3MgZ290IHN1cHBvcnQgZm9yIFNESU8sIFVTQiwgYW5kIFBDSUUsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIGZ1enppbmcgYXZlbnVlcy4gQmVjYXVzZSBpdCBzdXBwb3J0cyBVU0IsIHRoYXQgbWVhbnMgSSBjYW4gbGV2ZXJhZ2UgVVNCIGVtdWxhdGlvbiB0ZWNobmlxdWVzIOKAkyBlaXRoZXIgYSBkdW1teSBIQ0Qgc2V0dXAgb3IsIGV2ZW4gYmV0dGVyLCBTeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBXYWl0LCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgVVNCIGZ1enppbmcsIHJpZ2h0PyBFeGNlbGxlbnQuIFRoYXQgbWVhbnMgYEJSQ01GTUFDX1VTQmAgaXMgZGVmaW5pdGVseSB3aXRoaW4gcmVhY2guCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgaXQmIzM5O3MgYWN0dWFsbHkgd29ydGggdGhlIGVmZm9ydC4gQ2FuIEkgZ2V0IGF0IGl0IHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYD8gTm8sIGl0JiMzOTtzIGEgRnVsbE1BQyBkcml2ZXIsIHJlZ2lzdGVyaW5nIGl0cyBvd24gYHdpcGh5YCBhbmQgYG5ldGRldmAuIEl0IHRhbGtzIHRvIHRoZSBmaXJtd2FyZSBvdmVyIFNESU8sIFVTQiwgb3IgUENJRSDigJMgd2hpY2ggY29uZmlybXMgdGhhdCBVU0IgcGF0aC4gU3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIHdpbGwgYmUgbXkgYmVzdCBiZXQuIFNvIHllYWgsIGBCUkNNRk1BQ19VU0JgIGlzIGxvb2tpbmcgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZS4KCkRpZ2dpbmcgZGVlcGVyLCBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBzb21lIGNydWNpYWwgYGNmZzgwMjExYCBjYWxsYmFja3M6IGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX3NldF9rZXlfbWdtdGAsIGFuZCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIHRoYXQgdGhlc2UgYXJlIGNhbGxlZCBmcm9tIHdpdGhpbiBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAgb3Igc2ltaWxhci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgbmw4MDIxMWAgaW50ZXJmYWNlICh3aGljaCBsZXZlcmFnZXMgYGNmZzgwMjExYCksIHdoaWNoIGlzIGFub3RoZXIgcmVhbGx5IGdvb2Qgc2lnbi4gQ2xlYXJseSwgdGhpcyBpcyByZWFjaGFibGUsIGFuZCBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBwaW5wb2ludCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIEkgd2FudCB0byBmb2N1cyBvbjoKKiAgIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YAoqICAgYGJyY21mX3NldF9rZXlfbWdtdGAKKiAgIGBicmNtZl9jb25maWd1cmVfd3BhaWVgCiogICBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYAoqICAgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAKCkkmIzM5O2xsIGNoZWNrIHRoZSBzb3VyY2Ugb2YgZWFjaCBmdW5jdGlvbi4gYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmAgaXMgc3RhdGljLCB3aGljaCBsaW1pdHMgaXRzIGFjY2Vzc2liaWxpdHkgYnV0IHN0aWxsIGRvZXNuJiMzOTt0IHJ1bGUgaXQgb3V0LiBBbmQgSSBzaG91bGQgZG91YmxlIGNoZWNrIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgIGFuZCBpdHMgdXNhZ2UgaW4gYHAycC5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU1MzY9YnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU2MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1NjI4Olx0XHRhY2sgPSBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoY2ZnLCBjZmdfdG9fbmRldihjZmcpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTYyOS1cdFx0XHRcdFx0XHQgIGFmX3BhcmFtcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jPTE3MjY9c3RhdGljIGJvb2wgYnJjbWZfcDJwX2NoZWNrX2R3ZWxsX292ZXJmbG93KHUzMiByZXF1ZXN0ZWRfZHdlbGwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3MzctLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTczODogKiBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoKSAtIHNlbmQgYWN0aW9uIGZyYW1lIC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzM5LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDMtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTc0NDpib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDUtXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oPTE2OD1pbnQgYnJjbWZfcDJwX25vdGlmeV9hY3Rpb25fdHhfY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oLTE3MC1cdFx0XHRcdFx0dm9pZCAqZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmg6MTcxOmJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgtMTcyLVx0XHRcdFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NjUKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYW5kIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYCBmdW5jdGlvbiAtIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgc2VlbiB0aGF0IG9uZSBraWNraW5nIGFyb3VuZC4gSXQgcmluZ3MgYSBiZWxsIGFzIGEgZ2xvYmFsIGZ1bmN0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIGFjY2Vzc2libGUgZnJvbSB2YXJpb3VzIHBhcnRzIG9mIHRoZSBkcml2ZXIuIE5vdywgdGhlIG5leHQgb25lLCBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAuLi4gdGhhdCBvbmUgc2VlbXMgYSBiaXQgbGVzcyBmYW1pbGlhci4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0IG1pZ2h0IGJlIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IHdvdWxkIG1lYW4gaXQmIzM5O3Mgb25seSB2aXNpYmxlIHdpdGhpbiBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQsIG1heWJlIGBjZmc4MDIxMS5jYCwgaWYgbWVtb3J5IHNlcnZlcy4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRvIGNvbmZpcm0gdGhhdCBodW5jaC4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgY29kZSBmb3IgYGNmZzgwMjExLmNgIGFuZCB2ZXJpZnkgaWYgbXkgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGl0cyBzY29wZSBpcyBjb3JyZWN0LiBHb3R0YSBiZSBwcmVjaXNlIGFib3V0IHRoZXNlIGtpbmRzIG9mIGRldGFpbHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGNvcmUgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfY2ZnODAyMTFfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MjM2Mz1zdGF0aWMgczMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyMzY0OmJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yMzY1LVx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTk1Nz1zdGF0aWMgc3RydWN0IGNmZzgwMjExX29wcyBicmNtZl9jZmc4MDIxMV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTk3NC1cdC5zZXRfcG93ZXJfbWdtdCA9IGJyY21mX2NmZzgwMjExX3NldF9wb3dlcl9tZ210LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTk3NTpcdC5jb25uZWN0ID0gYnJjbWZfY2ZnODAyMTFfY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU5NzYtXHQuZGlzY29ubmVjdCA9IGJyY21mX2NmZzgwMjExX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjE0Nj1zdGF0aWMgdm9pZCBicmNtZl9jbGVhcl9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYxNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjE0ODpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MTQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTYyOTY9c3RhdGljIHMzMiBicmNtZl9nZXRfYXNzb2NfaWVzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjMwMC1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9hc3NvY19pZWxlbl9sZSAqYXNzb2NfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjYzMDE6XHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjMwMi1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9lZGNmX2FjcGFyYW0gZWRjZl9hY3BhcmFtX2luZm9bRURDRl9BQ19DT1VOVF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjM3OD1icmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjM4My1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlICpwcm9maWxlID0gXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjM4NDpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02Mzg1LVx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IGNmZ190b193aXBoeShjZmcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTY0NTE9YnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY0NTYtXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSAqcHJvZmlsZSA9IFx1MDAyNmlmcC1cdTAwM2V2aWYtXHUwMDNlcHJvZmlsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjY0NTc6XHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjQ1OC1cdHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3Jlc3BfcGFyYW1zIGNvbm5fcGFyYW1zO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oPTIyMD1zdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0yMzUtLyogYXNzb2NpYXRpb24gaW5mb3JtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaDoyMzY6c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0yMzctXHR1OCAqcmVxX2llO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oPTM0Mj1zdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtMzQ5LVx0c3RydWN0IHdsX2NmZzgwMjExX2Jzc19pbmZvICpic3NfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oOjM1MDpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gY29ubl9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtMzUxLVx0c3RydWN0IGJyY21mX3Bta19saXN0X2xlIHBta19saXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oPTQzMz1zdGF0aWMgaW5saW5lIHN0cnVjdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6NDM0OmJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY2ZnX3RvX2Nvbm4oc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTQzNS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNTYKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA4NzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIE5ldyBEUFAgU3VwcG9ydCBpbiBCUkNNRk1BQyB2aWEgU3l6a2FsbGVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBob3cgaXQgcmVsYXRlcyB0byBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIHdpdGhpbiB0aGUgYEJSQ01GTUFDYCBkcml2ZXIsIHNwZWNpZmljYWxseSBieSBtb2RpZnlpbmcgYGJyY21mX3NldF9rZXlfbWdtdGAgYW5kIGBicmNtZl9jb25maWd1cmVfd3BhaWVgIHRvIGhhbmRsZSBgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUGAsIGFuZCBieSB1cGRhdGluZyBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYCBmb3IgRFBQIHB1YmxpYyBhY3Rpb24gZnJhbWVzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgY2FsbGVkIGZyb20gYGNmZzgwMjExYCBjYWxsYmFja3M6IGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCBhbmQgYGJyY21mX2NmZzgwMjExX21nbXRfdHhgIHJlc3BlY3RpdmVseSwgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgcmVnaXN0ZXJlZCB3aXRoaW4gYGJyY21mX2NmZzgwMjExX29wc2AuICBUaGlzIG1lYW5zIHRoZXkmIzM5O3JlIHVsdGltYXRlbHkgdHJpZ2dlcmVkIGJ5IGBubDgwMjExYCBjb21tYW5kcy4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoZXNlIGNvZGUgcGF0aHMuIFN5emthbGxlciBoYXMgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHZpYSBgc3l6X3VzYl9jb25uZWN0YCBhbmQgYHN5el91c2JfZGlzY29ubmVjdGAsIHdoaWNoIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgcG90ZW50aWFsbHksIHRoZSBgQlJDTUZNQUNfVVNCYCBkZXZpY2UuICBTeXprYWxsZXIgYWxzbyB1bmRlcnN0YW5kcyBgbmw4MDIxMWAgdGhyb3VnaCBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCwgbWFraW5nIGl0IGEgcG90ZW50aWFsIHJvdXRlIHRvIHRoZXNlIGZ1bmN0aW9ucy4KClRoZSBwcm9ibGVtLCB0aG91Z2gsIGlzIHRoYXQgYEJSQ01GTUFDYCBpcyBhIEZ1bGxNQUMgZHJpdmVyIGFuZCBkZXBlbmRzIG9uIGEgc3BlY2lmaWMgVVNCIGRldmljZSBlbXVsYXRpb24gZm9yIHdpcGh5IHJlZ2lzdHJhdGlvbi4gIElmIHRoZSBVU0IgZW11bGF0aW9uIHByb3ZpZGVkIGJ5IHN5emthbGxlciBpcyBnb29kIGVub3VnaCwgdGhlIGRyaXZlciBzaG91bGQgcHJvYmUgYW5kIHJlZ2lzdGVyIGl0cyB3aXBoeSwgbWFraW5nIGBubDgwMjExYCBjb21tYW5kcyBhdmFpbGFibGUgYW5kIHRodXMgcmVhY2hpbmcgdGhlc2UgbW9kaWZpZWQgZnVuY3Rpb25zLiAgQnV0LCBjYW4gc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGVtdWxhdGUgdGhlIEJyb2FkY29tIFVTQiBkZXZpY2UgKmFuZCogdGhlIGZpcm13YXJlIHN1ZmZpY2llbnRseSB0byBhbGxvdyB0aGUgZHJpdmVyIHRvIGxvYWQgYW5kIGluaXRpYWxpemU/IFRoZSBkcml2ZXIgKnJlcXVpcmVzKiB0aGUgZmlybXdhcmUgdG8gbG9hZCBhbmQgcmVzcG9uZCBjb3JyZWN0bHk7IG90aGVyd2lzZSwgdGhlIHdpcGh5IHJlZ2lzdHJhdGlvbiB3aWxsIGZhaWwuCgpTbywgd2hpbGUgdGhlIHByb2JlIGZ1bmN0aW9uICppdHNlbGYqIGlzIHJlYWNoYWJsZSBldmVuIHdpdGggYSBmYWlsZWQgaW5pdGlhbGl6YXRpb24sIHRoZSAqbW9kaWZpZWQqIGZ1bmN0aW9ucyBhcmUgY2FsbGJhY2tzIHRoYXQgb25seSBnZXQgY2FsbGVkIGlmIHRoZSB3aXBoeSByZWdpc3RlcnMgc3VjY2Vzc2Z1bGx5LiBUaGUgcmVhbCBib3R0bGVuZWNrIGlzIGxpa2VseSB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb24gaGF2ZSB0byBiZSBjb3JyZWN0LiBJZiBzeXprYWxsZXIganVzdCBzcGV3cyByYW5kb20gVVNCIHJlc3BvbnNlcywgdGhlIGRyaXZlciB3aWxsIHByb2JhYmx5IGZhaWwgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHdpcGh5IHdpbGwgbm90IGJlIHJlZ2lzdGVyZWQuIEhvd2V2ZXIsIHRoZSBkcml2ZXIgbWlnaHQgYmUgJiMzNDtyZWFjaGFibGUmIzM0OyBpbiB0aGVvcnkgYnkgc29tZSBvdGhlciBtZWFucy4KClRoZSBkb2N1bWVudGF0aW9uIGlzIGNsZWFyOiAgaWYgaXQmIzM5O3MgYSBVU0IgZHJpdmVyLCB0aGUgZnVuY3Rpb25zICphcmUqIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4gVGhlIGZpcm13YXJlIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIHBoYXNlIG1pZ2h0IGJlIGEgY2hhbGxlbmdlLCBidXQgaXQmIzM5O3Mgbm90IGFuICppbXBvc3NpYmlsaXR5KiBpbiB0aGUgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQuIE5vdywgbGV0IG1lIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdgKSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgVVNCIGRldmljZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gZ3VpZGUgc3l6a2FsbGVyLiBMZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBuZWVkcyBhbnkgc3BlY2lmaWMgcGFyYW1ldGVycyBmb3IgZW11bGF0aW5nIHRoZSBgQlJDTUZNQUNfVVNCYCBkZXZpY2UuLi4gdGhhdCBtaWdodCB1bmxvY2sgaXQgYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJDTUZNQUNfVVNCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xNz1jb25maWcgQlJDTUZNQUNfU0RJT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXHRib29sIFwmIzM0O1VTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDI0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKKipFeGFtaW5pbmcgdGhlIEJSQ01GTUFDIERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3MgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSGFuZyBvbiwgaXMgYEJSQ01GTUFDYCBkZXBlbmRlbnQgb24gKmJvdGgqIGBDRkc4MDIxMWAgYW5kIGBNQUM4MDIxMWA/IE5vLCB0aGF0IGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UuIEl0JiMzOTtzIGEgRnVsbE1BQyBkcml2ZXIsIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBvbmx5IHJlcXVpcmUgdGhlIHJlZ3VsYXRvcnkgYW5kIGNvbnRyb2wgYXNwZWN0cywgaGFuZGxlZCBieSBgQ0ZHODAyMTFgLiBgTUFDODAyMTFgIGlzIHBhcnQgb2YgdGhlIG1hYyBsYXllciwgd2hpY2ggaXMgaGFuZGxlZCBkaXJlY3RseSBieSBgQlJDTUZNQUNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24sIHNvIEkgd2lsbCBub3cgY2hlY2sgdGhlIHNwZWNpZmljIGRlcGVuZGVuY2llcyBvZiBgQlJDTUZNQUNgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSQ01GTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTY0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkmIzM5O20gdGhlIG9uZSBoYXZpbmcgaXQsIGFuZCBjb25zaWRlcmluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkluaXRpYWwgS2NvbmZpZyBTY2FuKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIGl0LiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgYnJjbTgwMjExYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgYEtjb25maWdgIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgZmlyc3QgdGVuIGxpbmVzLiBUaGlzIGdpdmVzIG1lIGEgcXVpY2sgaW5pdGlhbCBmZWVsIGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG92ZXJhbGwgc3RydWN0dXJlIOKAkyB3aGF0IGFyZSB0aGUgdG9wLWxldmVsIHNlY3Rpb25zIG9yIGZlYXR1cmVzPyBXaGF0IGFyZSB0aGUgaW1tZWRpYXRlIHByZXJlcXVpc2l0ZXM/IEkmIzM5O20gaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gYXBwcm9hY2ggdXNlZCBieSB0aGlzIGRyaXZlciwgYSBiaXJkcy1leWUgdmlldyBiZWZvcmUgZGl2aW5nIGRlZXBlciBpbnRvIGFueSBzcGVjaWZpYyBzZWN0aW9uLiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGZhbWlsaWFyIGBib29sYCBvciBgdHJpc3RhdGVgIG9wdGlvbnMsIGxpa2VseSBncm91cGVkIHRoZW1hdGljYWxseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBnbGVhbi4gSXQmIzM5O2xsIGJlIGludGVyZXN0aW5nIHRvIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUsIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCwgb3IgaWYgdGhlcmUmIzM5O3Mgc29tZSBjb21wbGV4IGxlZ2FjeSBzdHVmZiBpbnZvbHZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBCUkNNRk1BQ1xuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNDpcdFx0c2VsZWN0IEJSQ01VVElMXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gQnJvYWRjb21cbiAgIDc6XHRcdCAgRnVsbE1BQyBjaGlwc2V0cy4gSXQgaGFzIHRvIHdvcmsgd2l0aCBhdCBsZWFzdCBvbmUgb2YgdGhlIGJ1c1xuICAgODpcdFx0ICBpbnRlcmZhY2Ugc3VwcG9ydC4gSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZFxuICAgOTpcdFx0ICBicmNtZm1hYy5rby5cbiAgMTA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0MjAKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQlJDTUZNQUMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlIGBCUkNNRk1BQ2AgZHJpdmVyLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBDRkc4MDIxMWAsIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZC4gVG8gZ2V0IHN0YXJ0ZWQgd2l0aCB0aGUgZnV6emluZyBzZXR1cCwgaXQgbG9va3MgbGlrZSBJJiMzOTtsbCBuZWVkIGJvdGggYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXZhaWxhYmxlIHRvIG1lLgoKTm93LCBmb2N1c2luZyBvbiB0aGUgdGFyZ2V0IGZ1bmN0aW9ucywgaW5pdGlhbGx5LCBJIHdhcyBsb29raW5nIGF0OiBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLiBCdXQsIGhhbmcgb24gYSBzZWNvbmQsIEkgc2VlIHRoYXQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgaXMgYWN0dWFsbHkgY2FsbGVkIGZyb20gYGJyY21mX2NmZzgwMjExX21nbXRfdHhgLiBIbW1tLCBJIHRoaW5rIGBicmNtZl9jZmc4MDIxMV9tZ210X3R4YCBtaWdodCBiZSBhIG1vcmUgc3RyYXRlZ2ljIHBvaW50IHRvIGZvY3VzIG9uLCBnaXZlbiB0aGF0IGl0IGFjdHMgYXMgYSBjZW50cmFsIHBvaW50IG9mIGVudHJ5LgoKUmlnaHQsIGBicmNtZl9jZmc4MDIxMV9tZ210X3R4YCBpcyBhIGBjZmc4MDIxMWAgY2FsbGJhY2suIFRoYXQgbWFrZXMgaXQgYXR0cmFjdGl2ZSBiZWNhdXNlIEkgY2FuIHRyaWdnZXIgaXQgaW4gYSBjb250cm9sbGVkIG1hbm5lci4gSSYjMzk7bGwgY2hlY2sgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIHRvbywgYXMgdGhhdCYjMzk7cyBhbHNvIGEgYGNmZzgwMjExYCBjYWxsYmFjay4gQWgsIGFuZCBJIHNlZSB0aGF0IGBicmNtZl9zZXRfa2V5X21nbXRgIGFuZCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCBhcmUgY2FsbGVkIGZyb20gYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIG9yIHNpbWlsYXIgZnVuY3Rpb25zLCBzbyB0aGF0IHBhdGggc2VlbXMgcHJldHR5IGltcG9ydGFudCB0b28uIEkgc2hvdWxkIGNoZWNrIHNwZWNpZmljYWxseSB3aGVyZSBgYnJjbWZfY29uZmlndXJlX3dwYWllYCBpcyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgbW9yZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jb25maWd1cmVfd3BhaWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQ1Mzg9c3RhdGljIHMzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDUzOTpicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00NTQwLVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTA4ND1icmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTEwMy1cdFx0XHQvKiBXUEEgSUUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUxMDQ6XHRcdFx0ZXJyID0gYnJjbWZfY29uZmlndXJlX3dwYWllKGlmcCwgd3BhX2llLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MTA1LVx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExMi1cdFx0XHQvKiBSU04gSUUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUxMTM6XHRcdFx0ZXJyID0gYnJjbWZfY29uZmlndXJlX3dwYWllKGlmcCwgdG1wX2llLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUxMTQtXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3MDkKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhIGFuZCB0aGlua2luZyB0aGlzIHRocm91Z2g6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gU2VxdWVuY2U6IGBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHlgKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCBmdW5jdGlvbiBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQgY2FsbHMgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAuIFRoaXMgbGlrZWx5IGluZGljYXRlcyB0aGF0IHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgYGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eWAgcmV2b2x2ZXMgYXJvdW5kIHNldHRpbmcgdXAgc2VjdXJpdHkgcHJvdG9jb2xzLCBhbmQgdGhhdCBzZXR0aW5nIHVwIFdQQS9XUEEyL1dQQTMgaW5mb3JtYXRpb24gZWxlbWVudHMgaXMgYSBrZXkgcGFydCBvZiB0aGF0IHByb2Nlc3MuCgpOb3csIHRoZSBuYXR1cmFsIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgYXJpc2VzIGlzLCB3aGVyZSBpcyAqdGhpcyogZnVuY3Rpb24sIGBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHlgLCBiZWluZyBjYWxsZWQgZnJvbT8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsLiBLbm93aW5nIHRoZSBjYWxsZXIgdGVsbHMgbWUgdGhlICpjb250ZXh0KiBpbiB3aGljaCBzZWN1cml0eSBjb25maWd1cmF0aW9ucyBhcmUgcGFyc2VkIGFuZCBhcHBsaWVkLiBJcyBpdCBkdXJpbmcgdGhlIGluaXRpYWwgZHJpdmVyIGxvYWQ/IFdoZW4gYSBuZXcgbmV0d29yayBpcyBqb2luZWQ/IFBlcmhhcHMgZHVyaW5nIGFuIGV4cGxpY2l0IHJlY29uZmlndXJhdGlvbiBjb21tYW5kPyBLbm93aW5nIHRoYXQgd2lsbCBwcm92aWRlIGtleSBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgc2VjdXJpdHkgc2V0dGluZ3MgYXJlIGFjdHVhbGx5IGVzdGFibGlzaGVkIGFuZCB1cGRhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBkZWJ1Z2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTA4Mz1zdGF0aWMgczMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MDg0OmJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUwODUtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9hcF9zZXR0aW5ncyAqc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTEyNj1icmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5MzpcdFx0ZXJyID0gYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5KGlmcCwgc2V0dGluZ3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01Mjk0LVx0XHRcdFx0XHRcdCAgICAgTkw4MDIxMV9JRlRZUEVfQVApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTI5NS1cdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5NjpcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTI5Ny1cdFx0XHRnb3RvIGV4aXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUzMzU6XHRcdGVyciA9IGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShpZnAsIHNldHRpbmdzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNi1cdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfSUZUWVBFX1AyUF9HTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MzM3LVx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM4Olx0XHRcdGJyY21mX2VycihcJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzOS1cdFx0XHRnb3RvIGV4aXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODY5CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIHRyYWNlZCB0aGUgY2FsbCBwYXRoIOKAkyBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCBnZXRzIGludm9rZWQgYnkgYGJyY21mX2NmZzgwMjExX3N0YXJ0X2FwYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RlbW1pbmcgZnJvbSB0aGF0IGNhbGwgYXJlIHJlYWNoYWJsZSBpbiBBUCBtb2RlICh0aHJvdWdoIGBzdGFydF9hcGApLCBTVEEgbW9kZSAodmlhIGBjb25uZWN0YCksIGFuZCBldmVuIFAyUCBtb2RlIChmcm9tIGBtZ210X3R4YCkuIFRoYXQmIzM5O3MgYSB3aWRlIGF0dGFjayBzdXJmYWNlLCBhbmQgYSBkZWZpbml0ZSBzaWduYWwgdG8gcHJpb3JpdGl6ZSB0aGlzIGZvciBmdXp6aW5nLgoKTXkgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGJ1aWxkcy4gSSBoYXZlIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGluIG1pbmQuCgpOb3cgZm9yIHRoZSBjb3JlIHN5bWJvbHMuIEkmIzM5O20gZm9jdXNpbmcgb246CgoqICAgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgCiogICBgYnJjbWZfc2V0X2tleV9tZ210YAoqICAgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAKKiAgIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgCgpXYWl0IGEgbWludXRlLi4uIEkgc2VlIHRoYXQgYGJyY21mX3NldF9rZXlfbWdtdGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAuIFRoYXQgbWFrZXMgaXQgYSBoaWdoLXZhbHVlIHRhcmdldC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgYnJjbWZfc2V0X2tleV9tZ210YCBkaXJlY3RseSB0byBhc3Nlc3MgaXRzIHZ1bG5lcmFiaWxpdHkgcG90ZW50aWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9zZXRfa2V5X21nbXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTIwODc9c3RhdGljIHMzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6MjA4ODpicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjA4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MjM2ND1icmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTI0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyNDYxOlx0ZXJyID0gYnJjbWZfc2V0X2tleV9tZ210KG5kZXYsIHNtZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yNDYyLVx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc5NwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYGJyY21mYCBEcml2ZXImIzM5O3MgQ29ubmVjdGlvbiBhbmQgU2VjdXJpdHkgSGFuZGxlcnMqKgoKT2theSwgc28gYGJyY21mX3NldF9rZXlfbWdtdGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGFuZCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3IgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb24gcG9pbnRzLgoKTm93LCBsZXQgbWUgYnJvYWRlbiB0aGUgc2NvcGUgYSBiaXQuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBrbm93IHRoYXQgYEJSQ01GTUFDX1NESU9gIGFuZCBgQlJDTUZNQUNfUENJRWAgbWlnaHQgYmUgZW5hYmxlZCwgYnV0IHJlYWxpc3RpY2FsbHksIGBCUkNNRk1BQ19VU0JgIGlzIHRoZSBtb3N0IHByb2JhYmxlIHRhcmdldCBmb3IgZnV6emluZywgZXNwZWNpYWxseSBnaXZlbiBob3cgc3l6a2FsbGVyIGlzIGxpa2VseSBzZXQgdXAuIEkmIzM5O2xsIGluY2x1ZGUgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgaW4gbXkgbWVudGFsIG1vZGVsLCBqdXN0IHRvIGJlIHRob3JvdWdoLgoKSXQmIzM5O3MgYSBnb29kIGlkZWEgdG8gZG91YmxlIGNoZWNrIHRoYXQgYEJSQ01GTUFDX1VTQmAgZG9lc24mIzM5O3QgaGF2ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcy4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQ19VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTE3PWNvbmZpZyBCUkNNRk1BQ19TRElPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk0NzkKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipCUkNNRk1BQ19VU0IgRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgQlJDTUZNQUNfVVNCYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZHJpbGwgZG93biwgdW5kZXJzdGFuZCB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIG9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMuIElzIGl0IGEgY29yZSBkcml2ZXIsIGEgc3BlY2lmaWMgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBwZXJpcGhlcmFsPyBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCB0ZWxsIG1lIGEgbG90LiBBcmUgd2UgdGFsa2luZyBhYm91dCBiYXNpYyBVU0Igc3RhY2sgY2FsbHMsIG9yIGFyZSB0aGVyZSBsb3ctbGV2ZWwgaGFyZHdhcmUgYWJzdHJhY3Rpb25zIGludm9sdmVkPwoKSSYjMzk7bSB0aGlua2luZzoKKiAgICoqSWRlbnRpZnkgQ3JpdGljYWwgRGVwZW5kZW5jaWVzOioqIFdoYXQgYXJlIHRoZSBhYnNvbHV0ZSBiYXJlIG1pbmltdW0gY29tcG9uZW50cyByZXF1aXJlZCBmb3IgYEJSQ01GTUFDX1VTQmAgdG8gZXZlbiBsb2FkPwoqICAgKipUcmFjZSB0aGUgSGllcmFyY2h5OioqIEFyZSB0aGVyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3BlY2lmaWMgQnJvYWRjb20gY29tcG9uZW50cz8KKiAgICoqUGVyZm9ybWFuY2UgQ29uc2lkZXJhdGlvbnM6KiogQ291bGQgYW55IGRlcGVuZGVuY2llcyBpbnRyb2R1Y2UgbGF0ZW5jeSBvciBib3R0bGVuZWNrcz8KKiAgICoqUG90ZW50aWFsIENvbmZsaWN0czoqKiBXaGF0IGFyZSB0aGUgY2hhbmNlcyB0aGlzIG1vZHVsZSBzaGFyZXMgcmVzb3VyY2VzIHdpdGggb3RoZXIgY29tcG9uZW50cz8KKiAgICoqUG9ydGluZy9JbnRlZ3JhdGlvbiBDaGFsbGVuZ2VzOioqIEtub3dpbmcgdGhpcyBpcyBhICYjMzQ7VVNCJiMzNDsgaW1wbGVtZW50YXRpb24sIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW55IGV5ZSBvbiB0aGUgaW50ZXJmYWNlLCBpbiBjYXNlIHRoZSBwbGF0Zm9ybSBoYXMgYW4gdW51c3VhbCBVU0IgaW1wbGVtZW50YXRpb24uCiogICAqKlZlcnNpb25pbmcgYW5kIENvbXBhdGliaWxpdHk6KiogRG9lcyB0aGlzIG1vZHVsZSBoYXZlIGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyB2ZXJzaW9ucyBvZiBsaWJyYXJpZXMgb3Igb3RoZXIgY29tcG9uZW50cz8KKiAgICoqTWFpbnRhaW5hYmlsaXR5IGFuZCBUZXN0aW5nOioqIENhbiBJIGVhc2lseSBtb2NrIG9yIHNpbXVsYXRlIHRoZXNlIGRlcGVuZGVuY2llcyBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nPwoKVGhpcyBpcyB3aGVyZSB0aGUgZnVuIHN0YXJ0cy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHN0YXJ0IGV4cGxvcmluZyB0aG9zZSBkZXBlbmRlbmN5IGdyYXBocyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjk6XHRjb25maWcgQlJDTUZNQUNfVVNCXG4gIDMwOlx0XHRib29sIFwmIzM0O1VTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4gIDMxOlx0XHRkZXBlbmRzIG9uIChVU0IgPSB5IHx8IFVTQiA9IEJSQ01GTUFDKVxuICAzMjpcdFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xuICAzMzpcdFx0c2VsZWN0IEJSQ01GTUFDX1BST1RPX0JDRENcbiAgMzQ6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgQnJvYWRjb21cbiAgMzc6XHRcdCAgSUVFRTgwMi4xMW4gZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cbiAgMzg6XHRcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFVTQiB3aXJlbGVzcyBjYXJkLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAyMAoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDM1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQnJvYWRjb20gRnVsbE1BQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGlzIHBhdGNoIGhpbmdlcyBvbiBhIGZldyBrZXkgY29tcG9uZW50czogc3BlY2lmaWNhbGx5LCB0aGUgYFVTQmAgZGVwZW5kZW5jeSBhbmQgdGhlIGBCUkNNRk1BQ2AgZHJpdmVyIGl0c2VsZi4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGFyZSBhY2NvdW50ZWQgZm9yIGluIG15IGFzc2Vzc21lbnQuIFRoZXkgYXJlIHRoZSBjb3JlIG9mIHRoaXMuCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBvbiB0aGVzZTogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGFuZCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC4KCkFyZSB0aGVyZSBhbnkgb3RoZXIgYW5jaWxsYXJ5IGZ1bmN0aW9ucyB0aGF0IGdvdCB0b3VjaGVkPyBIbW0sIHllcywgSSBzZWUgYSBjb3VwbGUgb2Ygc3RhdGljLCBpbmxpbmUgZnVuY3Rpb25zIOKAkyBgYnJjbWZfdmFsaWRfZHBwX3N1aXRlYCBhbmQgYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmAuIFRoZXkmIzM5O3JlIHByb2JhYmx5IHJlbGF0ZWQsIGJ1dCBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgbWFpbiBwbGF5ZXJzIGZvciBub3cuIEkmIzM5O2xsIGluY2x1ZGUgdGhlIG1haW4gb25lczogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGFuZCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IGNsZWFyOiBUaGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIHN1cHBvcnQgZm9yIHRoZSBXaS1GaSBBbGxpYW5jZSBEUFAgQUtNIHN1aXRlIGFuZCBEUFAgcHVibGljIGFjdGlvbiBmcmFtZXMgd2l0aGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIGRyaXZlci4gSXQmIzM5O3MgZXNzZW50aWFsbHkgcmV3b3JraW5nIGJvdGggdGhlIGNvbm5lY3Rpb24gYW5kIEFQIHNldHVwIHBhdGhzLCB3aGljaCBtZWFucyBJIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgcGFyc2VzIHRoaXMgbmV3IEFLTSBhbmQgaGFuZGxlcyBTQUUvRldTVVAuIEFsc28sIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoIGlzIGludm9sdmVkLgoKQ3J1Y2lhbGx5LCB0aGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHRocm91Z2ggbmw4MDIxMSBjb21tYW5kcywgdGhpbmdzIGxpa2UgYGNvbm5lY3RgLCBgc3RhcnRfYXBgLCBhbmQgYG1nbXRfdHhgLCBlc3BlY2lhbGx5IHdoZW4gdGhlIGRyaXZlciYjMzk7cyBib3VuZCB0byBhbiBlbXVsYXRlZCBVU0IgZGV2aWNlLiBJdCYjMzk7cyBhIGNvbm5lY3Rpb24gdmlhIFVTQiB0aGF0IG1hdHRlcnMuCgpJIHNob3VsZCB2ZXJpZnkgdGhlIGltcGxpY2F0aW9ucyB0byBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01NTM2PWJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTYyODpcdFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKGNmZywgY2ZnX3RvX25kZXYoY2ZnKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU2MjktXHRcdFx0XHRcdFx0ICBhZl9wYXJhbXMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYz0xNzI2PXN0YXRpYyBib29sIGJyY21mX3AycF9jaGVja19kd2VsbF9vdmVyZmxvdyh1MzIgcmVxdWVzdGVkX2R3ZWxsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzM3LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE3Mzg6ICogYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKCkgLSBzZW5kIGFjdGlvbiBmcmFtZSAuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTczOS0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzQzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE3NDQ6Ym9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzQ1LVx0XHRcdFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaD0xNjg9aW50IGJyY21mX3AycF9ub3RpZnlfYWN0aW9uX3R4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaC0xNzAtXHRcdFx0XHRcdHZvaWQgKmRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oOjE3MTpib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oLTE3Mi1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2NjYKCQkJCQkJCW91dHB1dDogMjA3CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipSZWFkeSB0byBGaW5hbGl6ZSB0aGUgTWdtdCBGcmFtZSBUcmFuc21pc3Npb24gUmVzdWx0cyoqCgpSaWdodCwgc28gdGhpcyBpcyBjb25maXJtYXRpb24g4oCTIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgaXMgaW5kZWVkIGBicmNtZl9jZmc4MDIxMV9tZ210X3R4YC4gR29vZCwgdGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgSSB3YXMgZXhwZWN0aW5nIGFuZCBjb25maXJtcyB0aGUgY29ycmVjdCBjb250cm9sIGZsb3cuCgpOb3cgdGhhdCBJIGhhdmUgY29uZmlybWF0aW9uIG9mIHRoZSBmdW5jdGlvbiBjYWxsLCBJIGNhbiBwcm9jZWVkIHdpdGggY29uZmlkZW5jZS4gTXkgZm9jdXMgaXMgbm93IHNoaWZ0ZWQgdG8gcG9wdWxhdGluZyBhbmQgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgcmVzdWx0IHZhbHVlcyBhbmQgcmV0dXJuaW5nIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRlLiBJIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEl04oCZcyB0aW1lIHRvIGZpbmFsaXplIHRoZSB0cmFuc2FjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfc2V0X2tleV9tZ210JiMzNDssCiAgICAmIzM0O2JyY21mX2NvbmZpZ3VyZV93cGFpZSYjMzQ7LAogICAgJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgV0ZBIERQUCBBS00gc3VpdGUgYW5kIERQUCBwdWJsaWMgYWN0aW9uIGZyYW1lcyB0byB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgKGJyY21mbWFjKS4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBhbmQgQVAgc2V0dXAgcGF0aHMgdG8gcGFyc2UgdGhlIG5ldyBBS00gYW5kIGhhbmRsZSBTQUUvRldTVVAgY29ycmVjdGx5LCBhcyB3ZWxsIGFzIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBjb25uZWN0LCBzdGFydF9hcCwgbWdtdF90eCkgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfc2V0X2tleV9tZ210JiMzNDssCiAgICAmIzM0O2JyY21mX2NvbmZpZ3VyZV93cGFpZSYjMzQ7LAogICAgJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgV0ZBIERQUCBBS00gc3VpdGUgYW5kIERQUCBwdWJsaWMgYWN0aW9uIGZyYW1lcyB0byB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgKGJyY21mbWFjKS4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBhbmQgQVAgc2V0dXAgcGF0aHMgdG8gcGFyc2UgdGhlIG5ldyBBS00gYW5kIGhhbmRsZSBTQUUvRldTVVAgY29ycmVjdGx5LCBhcyB3ZWxsIGFzIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBjb25uZWN0LCBzdGFydF9hcCwgbWdtdF90eCkgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0NzoyOC45NzcyNzcxMDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIzODkyODQ3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2NmZzgwMjExX2Nvbm5lY3RcIixcbiAgICBcImJyY21mX3NldF9rZXlfbWdtdFwiLFxuICAgIFwiYnJjbWZfY29uZmlndXJlX3dwYWllXCIsXG4gICAgXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBXRkEgRFBQIEFLTSBzdWl0ZSBhbmQgRFBQIHB1YmxpYyBhY3Rpb24gZnJhbWVzIHRvIHRoZSBCcm9hZGNvbSBGdWxsTUFDIGRyaXZlciAoYnJjbWZtYWMpLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGFuZCBBUCBzZXR1cCBwYXRocyB0byBwYXJzZSB0aGUgbmV3IEFLTSBhbmQgaGFuZGxlIFNBRS9GV1NVUCBjb3JyZWN0bHksIGFzIHdlbGwgYXMgdGhlIFAyUCBhY3Rpb24gZnJhbWUgdHJhbnNtaXNzaW9uIHBhdGguIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5sODAyMTEgY29tbWFuZHMgKGUuZy4sIGNvbm5lY3QsIHN0YXJ0X2FwLCBtZ210X3R4KSB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYW4gZW11bGF0ZWQgVVNCIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDc6MjguOTc3MjgyNzMyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTIxNTQ3ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NTYxZDVhMWY2ZmU1ZmFhM2ViYTdkNTUyY2Q1MGNlYjQ5MTU5YTE3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDE1OjQ3OjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5pbmRleCA0YjcwODQ1ZTFhMjY0My4uZDYxYzNlMDNhMTA2YTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbkBAIC04LDYgKzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9jZmc4MDIxMS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L25ldGxpbmsuaFxcdTAwM2VcXG5AQCAtMjE1NCw2ICsyMTU1LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFx0XFx0XFx0dmFsID0gV1BBMl9BVVRIX1BTSyB8IFdQQTJfQVVUSF9GVDtcXG4gXFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNlaXNfZnQgPSB0cnVlO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQOlxcbitcXHRcXHRcXHR2YWwgPSBXRkFfQVVUSF9EUFA7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRkZWZhdWx0OlxcbiBcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiaW52YWxpZCBha20gc3VpdGUgKCVkKVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0IHNtZS1cXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0pO1xcbkBAIC0yNDY2LDQzICsyNDcwLDUwIEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdGdvdG8gZG9uZTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHNtZS1cXHUwMDNlY3J5cHRvLnBzayBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgcHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XFxuLVxcdFxcdGlmIChXQVJOX09OKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XFxuLVxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuLVxcdFxcdFxcdGdvdG8gZG9uZTtcXG4tXFx0XFx0fVxcbi1cXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcInVzaW5nIFBTSyBvZmZsb2FkXFxcXG5cXFwiKTtcXG4tXFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XFxuLVxcdH1cXG4tXFxuLVxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XFxuLVxcdFxcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xcbi1cXHRcXHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFxcXCJzdXBfd3BhXFxcIiwgMSk7XFxuLVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSkge1xcbitcXHRcXHR1MzIgYWttID0gc21lLVxcdTAwM2VjcnlwdG8ubl9ha21fc3VpdGVzID8gc21lLVxcdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA6IDA7XFxuK1xcdFxcdGJvb2wgaXNfc2FlX2FrbSA9IGFrbSA9PSBXTEFOX0FLTV9TVUlURV9TQUUgfHxcXG4rXFx0XFx0XFx0YWttID09IFdMQU5fQUtNX1NVSVRFX0ZUX09WRVJfU0FFO1xcbitcXG4rXFx0XFx0aWYgKHNtZS1cXHUwMDNlY3J5cHRvLnBzayBcXHUwMDI2XFx1MDAyNiAhaXNfc2FlX2FrbSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XFxuK1xcdFxcdFxcdGlmIChXQVJOX09OKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPVxcbitcXHRcXHRcXHRcXHQgICAgQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xcbitcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0YnJjbWZfZGJnKElORk8sIFxcXCJ1c2luZyBQU0sgb2ZmbG9hZFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLO1xcbiBcXHRcXHR9XFxuLVxcdH1cXG4tXFxuLVxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXFxuLVxcdFxcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXFx1MDAzZWNyeXB0by5wc2ssXFxuLVxcdFxcdFxcdFxcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcXG4tXFx0ZWxzZSBpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XFxuLVxcdFxcdC8qIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORSAqL1xcbi1cXHRcXHRlcnIgPSBicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcXFwid3BhaWVcXFwiLCBOVUxMLCAwKTtcXG4tXFx0XFx0aWYgKGVycikge1xcbi1cXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdGdvdG8gZG9uZTtcXG4rXFx0XFx0aWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcXG4rXFx0XFx0XFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXFxuK1xcdFxcdFxcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXFxcInN1cF93cGFcXFwiLCAxKTtcXG4rXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFxcXCJzdXBfd3BhXFxcIiwgMCk7XFxuIFxcdFxcdH1cXG4tXFx0XFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFxcdTAwMjZzbWUtXFx1MDAzZWNyeXB0byk7XFxuLVxcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IHNtZS1cXHUwMDNlY3J5cHRvLnBzaylcXG4rXFx0XFx0aWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSylcXG4gXFx0XFx0XFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cXHUwMDNlY3J5cHRvLnBzayxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pO1xcbitcXHRcXHRlbHNlIGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0IHNtZS1cXHUwMDNlY3J5cHRvLnNhZV9wd2QgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSkge1xcbitcXHRcXHRcXHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cXG4rXFx0XFx0XFx0aWYgKGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFxcXCJ3cGFpZVxcXCIsIE5VTEwsIDApKSB7XFxuK1xcdFxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJmYWlsZWQgdG8gY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0Z290byBkb25lO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcXHUwMDI2c21lLVxcdTAwM2VjcnlwdG8pO1xcbitcXHRcXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBzbWUtXFx1MDAzZWNyeXB0by5wc2spXFxuK1xcdFxcdFxcdFxcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXFx1MDAzZWNyeXB0by5wc2ssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdH1cXG4tXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBkb25lO1xcbi1cXG4gXFx0LyogSm9pbiB3aXRoIHNwZWNpZmljIEJTU0lEIGFuZCBjYWNoZWQgU1NJRFxcbiBcXHQgKiBJZiBTU0lEIGlzIHplcm8gam9pbiBiYXNlZCBvbiBCU1NJRCBvbmx5XFxuIFxcdCAqL1xcbkBAIC00NTE5LDYgKzQ1MzAsMTEgQEAgc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfd3BhX291aSh1OCAqb3VpLCBib29sIGlzX3Jzbl9pZSlcXG4gXFx0cmV0dXJuIChtZW1jbXAob3VpLCBXUEFfT1VJLCBUTFZfT1VJX0xFTikgPT0gMCk7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGJyY21mX3ZhbGlkX2RwcF9zdWl0ZSh1OCAqb3VpKVxcbit7XFxuK1xcdHJldHVybiBnZXRfdW5hbGlnbmVkX2JlMzIob3VpKSA9PSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQO1xcbit9XFxuK1xcbiBzdGF0aWMgczMyXFxuIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4gXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGJyY21mX3ZzX3RsdiAqd3BhX2llLFxcbkBAIC00NjMyLDQyICs0NjQ4LDQ3IEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXHR9XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBjb3VudDsgaSsrKSB7XFxuLVxcdFxcdGlmICghYnJjbWZfdmFsaWRfd3BhX291aShcXHUwMDI2ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7XFxuK1xcdFxcdGlmIChicmNtZl92YWxpZF9kcHBfc3VpdGUoXFx1MDAyNmRhdGFbb2Zmc2V0XSkpIHtcXG4rXFx0XFx0XFx0d3BhX2F1dGggfD0gV0ZBX0FVVEhfRFBQO1xcbitcXHRcXHRcXHRvZmZzZXQgKz0gVExWX09VSV9MRU47XFxuK1xcdFxcdH0gZWxzZSBpZiAoYnJjbWZfdmFsaWRfd3BhX291aShcXHUwMDI2ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7XFxuK1xcdFxcdFxcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcXG4rXFx0XFx0XFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcXG4rXFx0XFx0XFx0Y2FzZSBSU05fQUtNX05PTkU6XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fTk9ORVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fVU5TUEVDSUZJRURcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRpc19yc25faWUgP1xcbitcXHRcXHRcXHRcXHRcXHQod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XFxuK1xcdFxcdFxcdFxcdFxcdCh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fUFNLOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1BTS1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfUFNLKTtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX01GUF9QU0tcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fTUZQXzFYXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGNhc2UgUlNOX0FLTV9TQUU6XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fU0FFXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBM19BVVRIX1NBRV9QU0s7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRkZWZhdWx0OlxcbitcXHRcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiSW52YWxpZCBrZXkgbWdtdCBpbmZvXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiaW52YWxpZCBPVUlcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcdFxcdH1cXG4tXFx0XFx0b2Zmc2V0ICs9IFRMVl9PVUlfTEVOO1xcbi1cXHRcXHRzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkge1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fTk9ORTpcXG4tXFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9OT05FXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGNhc2UgUlNOX0FLTV9VTlNQRUNJRklFRDpcXG4tXFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9VTlNQRUNJRklFRFxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDpcXG4tXFx0XFx0XFx0XFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fUFNLOlxcbi1cXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1BTS1xcXFxuXFxcIik7XFxuLVxcdFxcdFxcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6XFxuLVxcdFxcdFxcdFxcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfUFNLKTtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOlxcbi1cXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX01GUF9QU0tcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XFxuLVxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fTUZQXzFYXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGNhc2UgUlNOX0FLTV9TQUU6XFxuLVxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fU0FFXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBM19BVVRIX1NBRV9QU0s7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRkZWZhdWx0Olxcbi1cXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiSW52YWxpZCBrZXkgbWdtdCBpbmZvXFxcXG5cXFwiKTtcXG4tXFx0XFx0fVxcbiBcXHRcXHRvZmZzZXQrKztcXG4gXFx0fVxcbiBcXG5AQCAtNDY4NywxMCArNDcwOCwxMiBAQCBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuIFxcdFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoISh3cGFfYXV0aCBcXHUwMDI2IChXUEEyX0FVVEhfUFNLX1NIQTI1NiB8XFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgV1BBMl9BVVRIXzFYX1NIQTI1NiB8XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgV0ZBX0FVVEhfRFBQIHxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICBXUEEzX0FVVEhfU0FFX1BTSykpKSB7XFxuIFxcdFxcdFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0XFx0XFx0XFx0fVxcbitcXG4gXFx0XFx0XFx0XFx0LyogRmlybXdhcmUgaGFzIHJlcXVpcmVtZW50IHRoYXQgV1BBMl9BVVRIX1BTSy9cXG4gXFx0XFx0XFx0XFx0ICogV1BBMl9BVVRIX1VOU1BFQ0lGSUVEIGJlIHNldCwgaWYgU0hBMjU2IE9VSVxcbiBcXHRcXHRcXHRcXHQgKiBpcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcnNuIGllLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcXG5pbmRleCA2ZTBjOTBmNDcxOGI1OC4uNThhOTczOGU4MWFjZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuQEAgLTYsNiArNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ydG5ldGxpbmsuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2NmZzgwMjExLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjYnJjbXVfd2lmaS5oXFx1MDAzZVxcbkBAIC00NCw5ICs0NSw2IEBAXFxuIFxcbiAjZGVmaW5lIEJSQ01GX1NDQl9USU1FT1VUX1ZBTFVFXFx0MjBcXG4gXFxuLSNkZWZpbmUgUDJQX1ZFUlxcdFxcdFxcdDlcXHQvKiBQMlAgdmVyc2lvbjogOT1XaUZpIFAyUCB2MS4wICovXFxuLSNkZWZpbmUgUDJQX1BVQl9BRl9DQVRFR09SWVxcdDB4MDRcXG4tI2RlZmluZSBQMlBfUFVCX0FGX0FDVElPTlxcdDB4MDlcXG4gI2RlZmluZSBQMlBfQUZfQ0FURUdPUllcXHRcXHQweDdmXFxuICNkZWZpbmUgUDJQX09VSVxcdFxcdFxcdFxcXCJcXFxceDUwXFxcXHg2RlxcXFx4OUFcXFwiXFx0LyogUDJQIE9VSSAqL1xcbiAjZGVmaW5lIFAyUF9PVUlfTEVOXFx0XFx0M1xcdFxcdC8qIFAyUCBPVUkgbGVuZ3RoICovXFxuQEAgLTE0MywxMCArMTQxLDEwIEBAIHN0cnVjdCBicmNtZl9wMnBfc2Nhbl9sZSB7XFxuIC8qKlxcbiAgKiBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgLSBXaUZpIFAyUCBQdWJsaWMgQWN0aW9uIEZyYW1lXFxuICAqXFxuLSAqIEBjYXRlZ29yeTogUDJQX1BVQl9BRl9DQVRFR09SWVxcbi0gKiBAYWN0aW9uOiBQMlBfUFVCX0FGX0FDVElPTlxcbisgKiBAY2F0ZWdvcnk6IFdMQU5fQ0FURUdPUllfUFVCTElDXFxuKyAqIEBhY3Rpb246IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUNcXG4gICogQG91aTogUDJQX09VSVxcbi0gKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gUDJQX1ZFUlxcbisgKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXFxuICAqIEBzdWJ0eXBlOiBPVUkgc3VidHlwZSAtIFAyUF9UWVBFXypcXG4gICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcnNwIHRyYW5zYWN0aW9uXFxuICAqIEBlbHRzOiBWYXJpYWJsZSBsZW5ndGggaW5mb3JtYXRpb24gZWxlbWVudHMuXFxuQEAgLTE2Niw3ICsxNjQsNyBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUge1xcbiAgKlxcbiAgKiBAY2F0ZWdvcnk6IFAyUF9BRl9DQVRFR09SWVxcbiAgKiBAb3VpOiBPVUkgLSBQMlBfT1VJXFxuLSAqIEB0eXBlOiBPVUkgVHlwZSAtIFAyUF9WRVJcXG4rICogQHR5cGU6IE9VSSBUeXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXFxuICAqIEBzdWJ0eXBlOiBPVUkgU3VidHlwZSAtIFAyUF9BRl8qXFxuICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3Jlc3AgdHJhbmFjdGlvblxcbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxcbkBAIC0yMjgsMTAgKzIyNiwzOCBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcXG4gXFx0aWYgKGZyYW1lX2xlbiBcXHUwMDNjIHNpemVvZigqcGFjdF9mcm0pKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHRpZiAocGFjdF9mcm0tXFx1MDAzZWNhdGVnb3J5ID09IFAyUF9QVUJfQUZfQ0FURUdPUlkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VhY3Rpb24gPT0gUDJQX1BVQl9BRl9BQ1RJT04gXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VvdWlfdHlwZSA9PSBQMlBfVkVSIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBtZW1jbXAocGFjdF9mcm0tXFx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXFxuK1xcdGlmIChwYWN0X2ZybS1cXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgcGFjdF9mcm0tXFx1MDAzZW91aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZ2V0X3VuYWxpZ25lZF9iZTI0KHBhY3RfZnJtLVxcdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oKSAtIHRydWUgaWYgZHBwIHB1YmxpYyB0eXBlIGZyYW1lLlxcbisgKlxcbisgKiBAZnJhbWU6IGFjdGlvbiBmcmFtZSBkYXRhLlxcbisgKiBAZnJhbWVfbGVuOiBsZW5ndGggb2YgYWN0aW9uIGZyYW1lIGRhdGEuXFxuKyAqXFxuKyAqIERldGVybWluZSBpZiBhY3Rpb24gZnJhbWUgaXMgZHBwIHB1YmxpYyBhY3Rpb24gdHlwZVxcbisgKi9cXG4rc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxcbit7XFxuK1xcdHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAqcGFjdF9mcm07XFxuK1xcbitcXHRpZiAoIWZyYW1lKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRwYWN0X2ZybSA9IChzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKilmcmFtZTtcXG4rXFx0aWYgKGZyYW1lX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUpIC0gMSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aWYgKHBhY3RfZnJtLVxcdTAwM2VjYXRlZ29yeSA9PSBXTEFOX0NBVEVHT1JZX1BVQkxJQyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgcGFjdF9mcm0tXFx1MDAzZWFjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwYWN0X2ZybS1cXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfRFBQIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tXFx1MDAzZW91aSkgPT0gV0xBTl9PVUlfV0ZBKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuIFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMjU3LDcgKzI4Myw3IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wMnBfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHRpZiAoYWN0X2ZybS1cXHUwMDNlY2F0ZWdvcnkgPT0gUDJQX0FGX0NBVEVHT1JZIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBhY3RfZnJtLVxcdTAwM2V0eXBlICA9PSBQMlBfVkVSIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBhY3RfZnJtLVxcdTAwM2V0eXBlICA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIG1lbWNtcChhY3RfZnJtLVxcdTAwM2VvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuQEAgLTE3ODksNyArMTgxNSw5IEBAIGJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuIFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0XFx0fVxcbiBcXHR9IGVsc2UgaWYgKGJyY21mX3AycF9pc19wMnBfYWN0aW9uKGFjdGlvbl9mcmFtZS1cXHUwMDNlZGF0YSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgYWN0aW9uX2ZyYW1lX2xlbikpIHtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgYWN0aW9uX2ZyYW1lX2xlbikgfHxcXG4rXFx0XFx0ICAgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKGFjdGlvbl9mcmFtZS1cXHUwMDNlZGF0YSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XFxuIFxcdFxcdC8qIGRvIG5vdCBjb25maWd1cmUgYW55dGhpbmcuIGl0IHdpbGwgYmUgKi9cXG4gXFx0XFx0Lyogc2VudCB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uICAgICAqL1xcbiBcXHR9IGVsc2Uge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcXG5pbmRleCA3NTUyYmRiOTE5OTFjZS4uYzQ2NTIwOGM0MzMxODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXFxuQEAgLTIzMyw2ICsyMzMsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWNfYml0bWFwX3RzdCh1OCBiaXRtYXAsIGludCBwcmVjKVxcbiBcXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1xcdDB4NDAwMDBcXHQvKiBTQUUgd2l0aCA0LXdheSBoYW5kc2hha2UgKi9cXG4gXFxuKyNkZWZpbmUgV0ZBX0FVVEhfRFBQXFx0XFx0MHgyMDAwMDAgLyogV0ZBIERQUCBBVVRIICovXFxuK1xcbiAjZGVmaW5lIERPVDExX0RFRkFVTFRfUlRTX0xFTlxcdFxcdDIzNDdcXG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX0ZSQUdfTEVOXFx0XFx0MjM0NlxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDc6MjkuNDkwMTcwMTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MTg3NjM4MTcxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfY2ZnODAyMTFfY29ubmVjdFwiLFxuICAgIFwiYnJjbWZfc2V0X2tleV9tZ210XCIsXG4gICAgXCJicmNtZl9jb25maWd1cmVfd3BhaWVcIixcbiAgICBcImJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFdGQSBEUFAgQUtNIHN1aXRlIGFuZCBEUFAgcHVibGljIGFjdGlvbiBmcmFtZXMgdG8gdGhlIEJyb2FkY29tIEZ1bGxNQUMgZHJpdmVyIChicmNtZm1hYykuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gYW5kIEFQIHNldHVwIHBhdGhzIHRvIHBhcnNlIHRoZSBuZXcgQUtNIGFuZCBoYW5kbGUgU0FFL0ZXU1VQIGNvcnJlY3RseSwgYXMgd2VsbCBhcyB0aGUgUDJQIGFjdGlvbiBmcmFtZSB0cmFuc21pc3Npb24gcGF0aC4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmw4MDIxMSBjb21tYW5kcyAoZS5nLiwgY29ubmVjdCwgc3RhcnRfYXAsIG1nbXRfdHgpIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhbiBlbXVsYXRlZCBVU0IgZGV2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1NjFkNWExZjZmZTVmYWEzZWJhN2Q1NTJjZDUwY2ViNDkxNTlhMTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNTo0NzoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDRiNzA4NDVlMWEyNjQzLi5kNjFjM2UwM2ExMDZhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9jZmc4MDIxMS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGxpbmsuaFx1MDAzZVxuQEAgLTIxNTQsNiArMjE1NSw5IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4gXHRcdFx0dmFsID0gV1BBMl9BVVRIX1BTSyB8IFdQQTJfQVVUSF9GVDtcbiBcdFx0XHRwcm9maWxlLVx1MDAzZWlzX2Z0ID0gdHJ1ZTtcbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQOlxuK1x0XHRcdHZhbCA9IFdGQV9BVVRIX0RQUDtcbitcdFx0XHRicmVhaztcbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHRicGh5X2VycihkcnZyLCBcImludmFsaWQgYWttIHN1aXRlICglZClcXG5cIixcbiBcdFx0XHRcdCBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0pO1xuQEAgLTI0NjYsNDMgKzI0NzAsNTAgQEAgYnJjbWZfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0Z290byBkb25lO1xuIFx0fVxuIFxuLVx0aWYgKHNtZS1cdTAwM2VjcnlwdG8ucHNrIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XG4tXHRcdGlmIChXQVJOX09OKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcbi1cdFx0XHRlcnIgPSAtRUlOVkFMO1xuLVx0XHRcdGdvdG8gZG9uZTtcbi1cdFx0fVxuLVx0XHRicmNtZl9kYmcoSU5GTywgXCJ1c2luZyBQU0sgb2ZmbG9hZFxcblwiKTtcbi1cdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbi1cdH1cbi1cbi1cdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcbi1cdFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXG4tXHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXCJzdXBfd3BhXCIsIDEpO1xuLVx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4tXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCJmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXG5cIik7XG4tXHRcdFx0Z290byBkb25lO1xuK1x0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRldTVVApKSB7XG4rXHRcdHUzMiBha20gPSBzbWUtXHUwMDNlY3J5cHRvLm5fYWttX3N1aXRlcyA/IHNtZS1cdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA6IDA7XG4rXHRcdGJvb2wgaXNfc2FlX2FrbSA9IGFrbSA9PSBXTEFOX0FLTV9TVUlURV9TQUUgfHxcbitcdFx0XHRha20gPT0gV0xBTl9BS01fU1VJVEVfRlRfT1ZFUl9TQUU7XG4rXG4rXHRcdGlmIChzbWUtXHUwMDNlY3J5cHRvLnBzayBcdTAwMjZcdTAwMjYgIWlzX3NhZV9ha20gXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuK1x0XHRcdGlmIChXQVJOX09OKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9XG4rXHRcdFx0XHQgICAgQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xuK1x0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gZG9uZTtcbitcdFx0XHR9XG4rXHRcdFx0YnJjbWZfZGJnKElORk8sIFwidXNpbmcgUFNLIG9mZmxvYWRcXG5cIik7XG4rXHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbiBcdFx0fVxuLVx0fVxuLVxuLVx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKVxuLVx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4tXHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4tXHRlbHNlIGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuLVx0XHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cbi1cdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXCJ3cGFpZVwiLCBOVUxMLCAwKTtcbi1cdFx0aWYgKGVycikge1xuLVx0XHRcdGJwaHlfZXJyKGRydnIsIFwiZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcblwiKTtcbi1cdFx0XHRnb3RvIGRvbmU7XG4rXHRcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcbitcdFx0XHQvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi9cbitcdFx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwic3VwX3dwYVwiLCAxKTtcbitcdFx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdFx0XHRicGh5X2VycihkcnZyLCBcImZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxcblwiKTtcbitcdFx0XHRcdGdvdG8gZG9uZTtcbitcdFx0XHR9XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcInN1cF93cGFcIiwgMCk7XG4gXHRcdH1cbi1cdFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFx1MDAyNnNtZS1cdTAwM2VjcnlwdG8pO1xuLVx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgc21lLVx1MDAzZWNyeXB0by5wc2spXG4rXHRcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSylcbiBcdFx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4gXHRcdFx0XHRcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcbitcdFx0ZWxzZSBpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IHNtZS1cdTAwM2VjcnlwdG8uc2FlX3B3ZCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9TQUUpKSB7XG4rXHRcdFx0LyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovXG4rXHRcdFx0aWYgKGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwid3BhaWVcIiwgTlVMTCwgMCkpIHtcbitcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwiZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcblwiKTtcbitcdFx0XHRcdGdvdG8gZG9uZTtcbitcdFx0XHR9XG4rXHRcdFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFx1MDAyNnNtZS1cdTAwM2VjcnlwdG8pO1xuK1x0XHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBzbWUtXHUwMDNlY3J5cHRvLnBzaylcbitcdFx0XHRcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXHUwMDNlY3J5cHRvLnBzayxcbitcdFx0XHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4rXHRcdH1cbitcdFx0aWYgKGVycilcbitcdFx0XHRnb3RvIGRvbmU7XG4gXHR9XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGRvbmU7XG4tXG4gXHQvKiBKb2luIHdpdGggc3BlY2lmaWMgQlNTSUQgYW5kIGNhY2hlZCBTU0lEXG4gXHQgKiBJZiBTU0lEIGlzIHplcm8gam9pbiBiYXNlZCBvbiBCU1NJRCBvbmx5XG4gXHQgKi9cbkBAIC00NTE5LDYgKzQ1MzAsMTEgQEAgc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfd3BhX291aSh1OCAqb3VpLCBib29sIGlzX3Jzbl9pZSlcbiBcdHJldHVybiAobWVtY21wKG91aSwgV1BBX09VSSwgVExWX09VSV9MRU4pID09IDApO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBicmNtZl92YWxpZF9kcHBfc3VpdGUodTggKm91aSlcbit7XG4rXHRyZXR1cm4gZ2V0X3VuYWxpZ25lZF9iZTMyKG91aSkgPT0gV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDtcbit9XG4rXG4gc3RhdGljIHMzMlxuIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0ICAgICAgY29uc3Qgc3RydWN0IGJyY21mX3ZzX3RsdiAqd3BhX2llLFxuQEAgLTQ2MzIsNDIgKzQ2NDgsNDcgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjb3VudDsgaSsrKSB7XG4tXHRcdGlmICghYnJjbWZfdmFsaWRfd3BhX291aShcdTAwMjZkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHtcbitcdFx0aWYgKGJyY21mX3ZhbGlkX2RwcF9zdWl0ZShcdTAwMjZkYXRhW29mZnNldF0pKSB7XG4rXHRcdFx0d3BhX2F1dGggfD0gV0ZBX0FVVEhfRFBQO1xuK1x0XHRcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcbitcdFx0fSBlbHNlIGlmIChicmNtZl92YWxpZF93cGFfb3VpKFx1MDAyNmRhdGFbb2Zmc2V0XSwgaXNfcnNuX2llKSkge1xuK1x0XHRcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcbitcdFx0XHRzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkge1xuK1x0XHRcdGNhc2UgUlNOX0FLTV9OT05FOlxuK1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fTk9ORVxcblwiKTtcbitcdFx0XHRcdHdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9VTlNQRUNJRklFRFxcblwiKTtcbitcdFx0XHRcdGlzX3Jzbl9pZSA/XG4rXHRcdFx0XHRcdCh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDpcbitcdFx0XHRcdFx0KHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTtcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGNhc2UgUlNOX0FLTV9QU0s6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9QU0tcXG5cIik7XG4rXHRcdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxuK1x0XHRcdFx0XHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcbitcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX01GUF9QU0tcXG5cIik7XG4rXHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9NRlBfMVhcXG5cIik7XG4rXHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfMVhfU0hBMjU2O1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0Y2FzZSBSU05fQUtNX1NBRTpcbitcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX1NBRVxcblwiKTtcbitcdFx0XHRcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0ZGVmYXVsdDpcbitcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwiSW52YWxpZCBrZXkgbWdtdCBpbmZvXFxuXCIpO1xuK1x0XHRcdH1cbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRcdGJwaHlfZXJyKGRydnIsIFwiaW52YWxpZCBPVUlcXG5cIik7XG4gXHRcdFx0Z290byBleGl0O1xuIFx0XHR9XG4tXHRcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcbi1cdFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcbi1cdFx0Y2FzZSBSU05fQUtNX05PTkU6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fTk9ORVxcblwiKTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fVU5TUEVDSUZJRURcXG5cIik7XG4tXHRcdFx0aXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOlxuLVx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9QU0s6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fUFNLXFxuXCIpO1xuLVx0XHRcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6XG4tXHRcdFx0XHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX01GUF9QU0tcXG5cIik7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fTUZQXzFYXFxuXCIpO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TQUU6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fU0FFXFxuXCIpO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRkZWZhdWx0OlxuLVx0XHRcdGJwaHlfZXJyKGRydnIsIFwiSW52YWxpZCBrZXkgbWdtdCBpbmZvXFxuXCIpO1xuLVx0XHR9XG4gXHRcdG9mZnNldCsrO1xuIFx0fVxuIFxuQEAgLTQ2ODcsMTAgKzQ3MDgsMTIgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoISh3cGFfYXV0aCBcdTAwMjYgKFdQQTJfQVVUSF9QU0tfU0hBMjU2IHxcbiBcdFx0XHRcdFx0XHQgIFdQQTJfQVVUSF8xWF9TSEEyNTYgfFxuK1x0XHRcdFx0XHRcdCAgV0ZBX0FVVEhfRFBQIHxcbiBcdFx0XHRcdFx0XHQgIFdQQTNfQVVUSF9TQUVfUFNLKSkpIHtcbiBcdFx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0XHRcdFx0Z290byBleGl0O1xuIFx0XHRcdFx0fVxuK1xuIFx0XHRcdFx0LyogRmlybXdhcmUgaGFzIHJlcXVpcmVtZW50IHRoYXQgV1BBMl9BVVRIX1BTSy9cbiBcdFx0XHRcdCAqIFdQQTJfQVVUSF9VTlNQRUNJRklFRCBiZSBzZXQsIGlmIFNIQTI1NiBPVUlcbiBcdFx0XHRcdCAqIGlzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByc24gaWUuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5pbmRleCA2ZTBjOTBmNDcxOGI1OC4uNThhOTczOGU4MWFjZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuQEAgLTYsNiArNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9jZmc4MDIxMS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjYnJjbXVfd2lmaS5oXHUwMDNlXG5AQCAtNDQsOSArNDUsNiBAQFxuIFxuICNkZWZpbmUgQlJDTUZfU0NCX1RJTUVPVVRfVkFMVUVcdDIwXG4gXG4tI2RlZmluZSBQMlBfVkVSXHRcdFx0OVx0LyogUDJQIHZlcnNpb246IDk9V2lGaSBQMlAgdjEuMCAqL1xuLSNkZWZpbmUgUDJQX1BVQl9BRl9DQVRFR09SWVx0MHgwNFxuLSNkZWZpbmUgUDJQX1BVQl9BRl9BQ1RJT05cdDB4MDlcbiAjZGVmaW5lIFAyUF9BRl9DQVRFR09SWVx0XHQweDdmXG4gI2RlZmluZSBQMlBfT1VJXHRcdFx0XCJcXHg1MFxceDZGXFx4OUFcIlx0LyogUDJQIE9VSSAqL1xuICNkZWZpbmUgUDJQX09VSV9MRU5cdFx0M1x0XHQvKiBQMlAgT1VJIGxlbmd0aCAqL1xuQEAgLTE0MywxMCArMTQxLDEwIEBAIHN0cnVjdCBicmNtZl9wMnBfc2Nhbl9sZSB7XG4gLyoqXG4gICogc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIC0gV2lGaSBQMlAgUHVibGljIEFjdGlvbiBGcmFtZVxuICAqXG4tICogQGNhdGVnb3J5OiBQMlBfUFVCX0FGX0NBVEVHT1JZXG4tICogQGFjdGlvbjogUDJQX1BVQl9BRl9BQ1RJT05cbisgKiBAY2F0ZWdvcnk6IFdMQU5fQ0FURUdPUllfUFVCTElDXG4rICogQGFjdGlvbjogV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQ1xuICAqIEBvdWk6IFAyUF9PVUlcbi0gKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gUDJQX1ZFUlxuKyAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBXTEFOX09VSV9UWVBFX1dGQV9QMlBcbiAgKiBAc3VidHlwZTogT1VJIHN1YnR5cGUgLSBQMlBfVFlQRV8qXG4gICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcnNwIHRyYW5zYWN0aW9uXG4gICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy5cbkBAIC0xNjYsNyArMTY0LDcgQEAgc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIHtcbiAgKlxuICAqIEBjYXRlZ29yeTogUDJQX0FGX0NBVEVHT1JZXG4gICogQG91aTogT1VJIC0gUDJQX09VSVxuLSAqIEB0eXBlOiBPVUkgVHlwZSAtIFAyUF9WRVJcbisgKiBAdHlwZTogT1VJIFR5cGUgLSBXTEFOX09VSV9UWVBFX1dGQV9QMlBcbiAgKiBAc3VidHlwZTogT1VJIFN1YnR5cGUgLSBQMlBfQUZfKlxuICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3Jlc3AgdHJhbmFjdGlvblxuICAqIEBlbHRzOiBWYXJpYWJsZSBsZW5ndGggaW5mb3JtYXRpb24gZWxlbWVudHMuXG5AQCAtMjI4LDEwICsyMjYsMzggQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4gXHRpZiAoZnJhbWVfbGVuIFx1MDAzYyBzaXplb2YoKnBhY3RfZnJtKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFAyUF9QVUJfQUZfQ0FURUdPUlkgXHUwMDI2XHUwMDI2XG4tXHQgICAgcGFjdF9mcm0tXHUwMDNlYWN0aW9uID09IFAyUF9QVUJfQUZfQUNUSU9OIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHBhY3RfZnJtLVx1MDAzZW91aV90eXBlID09IFAyUF9WRVIgXHUwMDI2XHUwMDI2XG4tXHQgICAgbWVtY21wKHBhY3RfZnJtLVx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXG4rXHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGFjdF9mcm0tXHUwMDNlYWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuK1xuKy8qKlxuKyAqIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbigpIC0gdHJ1ZSBpZiBkcHAgcHVibGljIHR5cGUgZnJhbWUuXG4rICpcbisgKiBAZnJhbWU6IGFjdGlvbiBmcmFtZSBkYXRhLlxuKyAqIEBmcmFtZV9sZW46IGxlbmd0aCBvZiBhY3Rpb24gZnJhbWUgZGF0YS5cbisgKlxuKyAqIERldGVybWluZSBpZiBhY3Rpb24gZnJhbWUgaXMgZHBwIHB1YmxpYyBhY3Rpb24gdHlwZVxuKyAqL1xuK3N0YXRpYyBib29sIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcbit7XG4rXHRzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKnBhY3RfZnJtO1xuK1xuK1x0aWYgKCFmcmFtZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cGFjdF9mcm0gPSAoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICopZnJhbWU7XG4rXHRpZiAoZnJhbWVfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lKSAtIDEpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGlmIChwYWN0X2ZybS1cdTAwM2VjYXRlZ29yeSA9PSBXTEFOX0NBVEVHT1JZX1BVQkxJQyBcdTAwMjZcdTAwMjZcbitcdCAgICBwYWN0X2ZybS1cdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcdTAwMjZcdTAwMjZcbitcdCAgICBwYWN0X2ZybS1cdTAwM2VvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9EUFAgXHUwMDI2XHUwMDI2XG4rXHQgICAgZ2V0X3VuYWxpZ25lZF9iZTI0KHBhY3RfZnJtLVx1MDAzZW91aSkgPT0gV0xBTl9PVUlfV0ZBKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHJldHVybiBmYWxzZTtcbkBAIC0yNTcsNyArMjgzLDcgQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmIChhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFAyUF9BRl9DQVRFR09SWSBcdTAwMjZcdTAwMjZcbi1cdCAgICBhY3RfZnJtLVx1MDAzZXR5cGUgID09IFAyUF9WRVIgXHUwMDI2XHUwMDI2XG4rXHQgICAgYWN0X2ZybS1cdTAwM2V0eXBlICA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXHUwMDI2XHUwMDI2XG4gXHQgICAgbWVtY21wKGFjdF9mcm0tXHUwMDNlb3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMClcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG5AQCAtMTc4OSw3ICsxODE1LDkgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAoYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24oYWN0aW9uX2ZyYW1lLVx1MDAzZWRhdGEsXG4tXHRcdFx0XHRcdCAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XG4rXHRcdFx0XHRcdCAgIGFjdGlvbl9mcmFtZV9sZW4pIHx8XG4rXHRcdCAgIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbihhY3Rpb25fZnJhbWUtXHUwMDNlZGF0YSxcbitcdFx0XHRcdFx0ICAgICAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XG4gXHRcdC8qIGRvIG5vdCBjb25maWd1cmUgYW55dGhpbmcuIGl0IHdpbGwgYmUgKi9cbiBcdFx0Lyogc2VudCB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uICAgICAqL1xuIFx0fSBlbHNlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcbmluZGV4IDc1NTJiZGI5MTk5MWNlLi5jNDY1MjA4YzQzMzE4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXG4gXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1x0MHg0MDAwMFx0LyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovXG4gXG4rI2RlZmluZSBXRkFfQVVUSF9EUFBcdFx0MHgyMDAwMDAgLyogV0ZBIERQUCBBVVRIICovXG4rXG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX1JUU19MRU5cdFx0MjM0N1xuICNkZWZpbmUgRE9UMTFfREVGQVVMVF9GUkFHX0xFTlx0XHQyMzQ2XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0NzoyOS40OTAxNzE4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2MzE2OTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQUCBTdXBwb3J0IFBhdGNoIGluIGJyY21mbWFjKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IGFkZHMgRFBQIChEZXZpY2UgUHJvdmlzaW9uaW5nIFByb3RvY29sKSBBS00gc3VpdGUgc3VwcG9ydCBhbmQgcHVibGljIGFjdGlvbiBmcmFtZSBoYW5kbGluZyB0byB0aGUgYGJyY21mbWFjYCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYCBkaXJlY3RvcnkuIEl0IGFsc28gc2VlbXMgdG8gYmUgbWFraW5nIGFkanVzdG1lbnRzIHRvIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCB0byBiZXR0ZXIgaGFuZGxlIFNBRSBBS00gYW5kIHRoZSBmaXJtd2FyZSBzdXBwbGljYW50IChGV1NVUCksIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gcmVhY2hhYmlsaXR5IGFuZCBmdXp6aW5nIHBvdGVudGlhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgcGF0Y2ggaXMgYWN0aXZhdGVkIGFuZCBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBub3cgbW9kaWZpZWQgb3IgaW50cm9kdWNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgdGhhdCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG91Y2hlZCBhcmUgYGJyY21mX3NldF9rZXlfbWdtdGAsIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gLCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSBwYXJ0IG9mIHRoZSBgYnJjbWZtYWNgIGRyaXZlci5cblxuTmV4dCwgSSdsbCBuZWVkIHRvIGxvY2F0ZSB0aGUgYEtjb25maWdgIGZpbGUgZm9yIGBicmNtZm1hY2AuIEl0J3MgbGlrZWx5IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ2Agb3Igc29tZXdoZXJlIHNpbWlsYXIuIEknbGwgdXNlIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgYW5kIGBncmVwcGVyYCB0byBsb2NhdGUgaXQgcXVpY2tseS4gVGhpcyBLY29uZmlnIHdpbGwgYmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXIncyBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaG93IHRoZSBEUFAgZnVuY3Rpb25hbGl0eSBpcyBjb25kaXRpb25hbGx5IGVuYWJsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgd2lsbCBsaWtlbHkgZ2l2ZSBtZSBrZXkgaW5zaWdodHMgZm9yIGJ1aWxkaW5nIGEgdGVzdCBlbnZpcm9ubWVudCB0aGF0IGNhbiByZWFjaCBhbmQgZXhlcmNpc2UgdGhlIERQUCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODgzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDc6MzUuODUzMzQzNThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1MTU1OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSQ01GTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTpjb25maWcgQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNzpjb25maWcgQlJDTUZNQUNfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIlNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0NzozNS45MDk4NjQ0ODRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODIwMjczMzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBCUkNNRk1BQyBEcml2ZXI6IEEgU3RyYXRlZ2ljIEFwcHJvYWNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBgQlJDTUZNQUNgIGRyaXZlciBpbiBteSBzaWdodHMuIEl0J3MgZ290IHN1cHBvcnQgZm9yIFNESU8sIFVTQiwgYW5kIFBDSUUsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIGZ1enppbmcgYXZlbnVlcy4gQmVjYXVzZSBpdCBzdXBwb3J0cyBVU0IsIHRoYXQgbWVhbnMgSSBjYW4gbGV2ZXJhZ2UgVVNCIGVtdWxhdGlvbiB0ZWNobmlxdWVzIOKAkyBlaXRoZXIgYSBkdW1teSBIQ0Qgc2V0dXAgb3IsIGV2ZW4gYmV0dGVyLCBTeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFdhaXQsIFN5emthbGxlciAqZG9lcyogaGF2ZSBVU0IgZnV6emluZywgcmlnaHQ/IEV4Y2VsbGVudC4gVGhhdCBtZWFucyBgQlJDTUZNQUNfVVNCYCBpcyBkZWZpbml0ZWx5IHdpdGhpbiByZWFjaC5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgaXQncyBhY3R1YWxseSB3b3J0aCB0aGUgZWZmb3J0LiBDYW4gSSBnZXQgYXQgaXQgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gPyBObywgaXQncyBhIEZ1bGxNQUMgZHJpdmVyLCByZWdpc3RlcmluZyBpdHMgb3duIGB3aXBoeWAgYW5kIGBuZXRkZXZgLiBJdCB0YWxrcyB0byB0aGUgZmlybXdhcmUgb3ZlciBTRElPLCBVU0IsIG9yIFBDSUUg4oCTIHdoaWNoIGNvbmZpcm1zIHRoYXQgVVNCIHBhdGguIFN5emthbGxlcidzIFVTQiBmdXp6aW5nIHdpbGwgYmUgbXkgYmVzdCBiZXQuIFNvIHllYWgsIGBCUkNNRk1BQ19VU0JgIGlzIGxvb2tpbmcgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZS5cblxuRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIHNvbWUgY3J1Y2lhbCBgY2ZnODAyMTFgIGNhbGxiYWNrczogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYW5kIGBicmNtZl9jb25maWd1cmVfd3BhaWVgLCBhbmQgdGhhdCB0aGVzZSBhcmUgY2FsbGVkIGZyb20gd2l0aGluIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCBvciBzaW1pbGFyLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBubDgwMjExYCBpbnRlcmZhY2UgKHdoaWNoIGxldmVyYWdlcyBgY2ZnODAyMTFgKSwgd2hpY2ggaXMgYW5vdGhlciByZWFsbHkgZ29vZCBzaWduLiBDbGVhcmx5LCB0aGlzIGlzIHJlYWNoYWJsZSwgYW5kIGFic29sdXRlbHkgd29ydGggZnV6emluZy5cblxuTm93LCBsZXQncyBwaW5wb2ludCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIEkgd2FudCB0byBmb2N1cyBvbjpcbiogICBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGBcbiogICBgYnJjbWZfc2V0X2tleV9tZ210YFxuKiAgIGBicmNtZl9jb25maWd1cmVfd3BhaWVgXG4qICAgYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmBcbiogICBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYFxuXG5JJ2xsIGNoZWNrIHRoZSBzb3VyY2Ugb2YgZWFjaCBmdW5jdGlvbi4gYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmAgaXMgc3RhdGljLCB3aGljaCBsaW1pdHMgaXRzIGFjY2Vzc2liaWxpdHkgYnV0IHN0aWxsIGRvZXNuJ3QgcnVsZSBpdCBvdXQuIEFuZCBJIHNob3VsZCBkb3VibGUgY2hlY2sgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYW5kIGl0cyB1c2FnZSBpbiBgcDJwLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTc4LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ3OjU0LjExMjU5OTUzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAxMTI2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01NTM2PWJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU2MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTYyODpcXHRcXHRhY2sgPSBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoY2ZnLCBjZmdfdG9fbmRldihjZmcpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU2MjktXFx0XFx0XFx0XFx0XFx0XFx0ICBhZl9wYXJhbXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jPTE3MjY9c3RhdGljIGJvb2wgYnJjbWZfcDJwX2NoZWNrX2R3ZWxsX292ZXJmbG93KHUzMiByZXF1ZXN0ZWRfZHdlbGwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTczNy0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTczODogKiBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoKSAtIHNlbmQgYWN0aW9uIGZyYW1lIC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTczOS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDMtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE3NDQ6Ym9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0NS1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmg9MTY4PWludCBicmNtZl9wMnBfbm90aWZ5X2FjdGlvbl90eF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaC0xNzAtXFx0XFx0XFx0XFx0XFx0dm9pZCAqZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oOjE3MTpib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaC0xNzItXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0Nzo1NC4xNzg2MTY2ODZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQ4NzMxNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYW5kIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgZnVuY3Rpb24gLSBJJ20gcHJldHR5IHN1cmUgSSd2ZSBzZWVuIHRoYXQgb25lIGtpY2tpbmcgYXJvdW5kLiBJdCByaW5ncyBhIGJlbGwgYXMgYSBnbG9iYWwgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyBhY2Nlc3NpYmxlIGZyb20gdmFyaW91cyBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBOb3csIHRoZSBuZXh0IG9uZSwgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLi4uIHRoYXQgb25lIHNlZW1zIGEgYml0IGxlc3MgZmFtaWxpYXIuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCBtaWdodCBiZSBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCB3b3VsZCBtZWFuIGl0J3Mgb25seSB2aXNpYmxlIHdpdGhpbiBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQsIG1heWJlIGBjZmc4MDIxMS5jYCwgaWYgbWVtb3J5IHNlcnZlcy4gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdG8gY29uZmlybSB0aGF0IGh1bmNoLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhlIHNvdXJjZSBjb2RlIGZvciBgY2ZnODAyMTEuY2AgYW5kIHZlcmlmeSBpZiBteSBpbml0aWFsIGFzc3VtcHRpb24gYWJvdXQgaXRzIHNjb3BlIGlzIGNvcnJlY3QuIEdvdHRhIGJlIHByZWNpc2UgYWJvdXQgdGhlc2Uga2luZHMgb2YgZGV0YWlscywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBvZiB0aGUgbmV0d29ya2luZyBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk2NSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ4OjAyLjMyNzM1ODEzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQyOTg2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jZmc4MDIxMV9jb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MjM2Mz1zdGF0aWMgczMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6MjM2NDpicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTIzNjUtXFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTk1Nz1zdGF0aWMgc3RydWN0IGNmZzgwMjExX29wcyBicmNtZl9jZmc4MDIxMV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01OTc0LVxcdC5zZXRfcG93ZXJfbWdtdCA9IGJyY21mX2NmZzgwMjExX3NldF9wb3dlcl9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU5NzU6XFx0LmNvbm5lY3QgPSBicmNtZl9jZmc4MDIxMV9jb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU5NzYtXFx0LmRpc2Nvbm5lY3QgPSBicmNtZl9jZmc4MDIxMV9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjE0Nj1zdGF0aWMgdm9pZCBicmNtZl9jbGVhcl9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MTQ3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2MTQ4OlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjE0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTYyOTY9c3RhdGljIHMzMiBicmNtZl9nZXRfYXNzb2NfaWVzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzAwLVxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9hc3NvY19pZWxlbl9sZSAqYXNzb2NfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2MzAxOlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjMwMi1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfZWRjZl9hY3BhcmFtIGVkY2ZfYWNwYXJhbV9pbmZvW0VEQ0ZfQUNfQ09VTlRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjM3OD1icmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzgzLVxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlICpwcm9maWxlID0gXFx1MDAyNmlmcC1cXHUwMDNldmlmLVxcdTAwM2Vwcm9maWxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjYzODQ6XFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02Mzg1LVxcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSBjZmdfdG9fd2lwaHkoY2ZnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTY0NTE9YnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjQ1Ni1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSAqcHJvZmlsZSA9IFxcdTAwMjZpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2NDU3OlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjQ1OC1cXHRzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyBjb25uX3BhcmFtcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oPTIyMD1zdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTIzNS0vKiBhc3NvY2lhdGlvbiBpbmZvcm0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaDoyMzY6c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtMjM3LVxcdHU4ICpyZXFfaWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaD0zNDI9c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtMzQ5LVxcdHN0cnVjdCB3bF9jZmc4MDIxMV9ic3NfaW5mbyAqYnNzX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6MzUwOlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gY29ubl9pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTM1MS1cXHRzdHJ1Y3QgYnJjbWZfcG1rX2xpc3RfbGUgcG1rX2xpc3Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaD00MzM9c3RhdGljIGlubGluZSBzdHJ1Y3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaDo0MzQ6YnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjZmdfdG9fY29ubihzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTQzNS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ4OjAyLjM4Mjc5MjcwMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MTcxNDA1NTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBOZXcgRFBQIFN1cHBvcnQgaW4gQlJDTUZNQUMgdmlhIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCByZWxhdGVzIHRvIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgd2l0aGluIHRoZSBgQlJDTUZNQUNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGJ5IG1vZGlmeWluZyBgYnJjbWZfc2V0X2tleV9tZ210YCBhbmQgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAgdG8gaGFuZGxlIGBXTEFOX0FLTV9TVUlURV9XRkFfRFBQYCwgYW5kIGJ5IHVwZGF0aW5nIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgIGZvciBEUFAgcHVibGljIGFjdGlvbiBmcmFtZXMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBjYWxsZWQgZnJvbSBgY2ZnODAyMTFgIGNhbGxiYWNrczogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIGFuZCBgYnJjbWZfY2ZnODAyMTFfbWdtdF90eGAgcmVzcGVjdGl2ZWx5LCB3aGljaCBhcmUgdGhlbXNlbHZlcyByZWdpc3RlcmVkIHdpdGhpbiBgYnJjbWZfY2ZnODAyMTFfb3BzYC4gIFRoaXMgbWVhbnMgdGhleSdyZSB1bHRpbWF0ZWx5IHRyaWdnZXJlZCBieSBgbmw4MDIxMWAgY29tbWFuZHMuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoZXNlIGNvZGUgcGF0aHMuIFN5emthbGxlciBoYXMgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHZpYSBgc3l6X3VzYl9jb25uZWN0YCBhbmQgYHN5el91c2JfZGlzY29ubmVjdGAsIHdoaWNoIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgcG90ZW50aWFsbHksIHRoZSBgQlJDTUZNQUNfVVNCYCBkZXZpY2UuICBTeXprYWxsZXIgYWxzbyB1bmRlcnN0YW5kcyBgbmw4MDIxMWAgdGhyb3VnaCBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCwgbWFraW5nIGl0IGEgcG90ZW50aWFsIHJvdXRlIHRvIHRoZXNlIGZ1bmN0aW9ucy5cblxuVGhlIHByb2JsZW0sIHRob3VnaCwgaXMgdGhhdCBgQlJDTUZNQUNgIGlzIGEgRnVsbE1BQyBkcml2ZXIgYW5kIGRlcGVuZHMgb24gYSBzcGVjaWZpYyBVU0IgZGV2aWNlIGVtdWxhdGlvbiBmb3Igd2lwaHkgcmVnaXN0cmF0aW9uLiAgSWYgdGhlIFVTQiBlbXVsYXRpb24gcHJvdmlkZWQgYnkgc3l6a2FsbGVyIGlzIGdvb2QgZW5vdWdoLCB0aGUgZHJpdmVyIHNob3VsZCBwcm9iZSBhbmQgcmVnaXN0ZXIgaXRzIHdpcGh5LCBtYWtpbmcgYG5sODAyMTFgIGNvbW1hbmRzIGF2YWlsYWJsZSBhbmQgdGh1cyByZWFjaGluZyB0aGVzZSBtb2RpZmllZCBmdW5jdGlvbnMuICBCdXQsIGNhbiBzeXprYWxsZXIncyBVU0IgZnV6emluZyBlbXVsYXRlIHRoZSBCcm9hZGNvbSBVU0IgZGV2aWNlICphbmQqIHRoZSBmaXJtd2FyZSBzdWZmaWNpZW50bHkgdG8gYWxsb3cgdGhlIGRyaXZlciB0byBsb2FkIGFuZCBpbml0aWFsaXplPyBUaGUgZHJpdmVyICpyZXF1aXJlcyogdGhlIGZpcm13YXJlIHRvIGxvYWQgYW5kIHJlc3BvbmQgY29ycmVjdGx5OyBvdGhlcndpc2UsIHRoZSB3aXBoeSByZWdpc3RyYXRpb24gd2lsbCBmYWlsLlxuXG5Tbywgd2hpbGUgdGhlIHByb2JlIGZ1bmN0aW9uICppdHNlbGYqIGlzIHJlYWNoYWJsZSBldmVuIHdpdGggYSBmYWlsZWQgaW5pdGlhbGl6YXRpb24sIHRoZSAqbW9kaWZpZWQqIGZ1bmN0aW9ucyBhcmUgY2FsbGJhY2tzIHRoYXQgb25seSBnZXQgY2FsbGVkIGlmIHRoZSB3aXBoeSByZWdpc3RlcnMgc3VjY2Vzc2Z1bGx5LiBUaGUgcmVhbCBib3R0bGVuZWNrIGlzIGxpa2VseSB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb24gaGF2ZSB0byBiZSBjb3JyZWN0LiBJZiBzeXprYWxsZXIganVzdCBzcGV3cyByYW5kb20gVVNCIHJlc3BvbnNlcywgdGhlIGRyaXZlciB3aWxsIHByb2JhYmx5IGZhaWwgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHdpcGh5IHdpbGwgbm90IGJlIHJlZ2lzdGVyZWQuIEhvd2V2ZXIsIHRoZSBkcml2ZXIgbWlnaHQgYmUgXCJyZWFjaGFibGVcIiBpbiB0aGVvcnkgYnkgc29tZSBvdGhlciBtZWFucy5cblxuVGhlIGRvY3VtZW50YXRpb24gaXMgY2xlYXI6ICBpZiBpdCdzIGEgVVNCIGRyaXZlciwgdGhlIGZ1bmN0aW9ucyAqYXJlKiByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBwaGFzZSBtaWdodCBiZSBhIGNoYWxsZW5nZSwgYnV0IGl0J3Mgbm90IGFuICppbXBvc3NpYmlsaXR5KiBpbiB0aGUgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQuIE5vdywgbGV0IG1lIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdgKSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgVVNCIGRldmljZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gZ3VpZGUgc3l6a2FsbGVyLiBMZXQncyBzZWUgaWYgc3l6a2FsbGVyIG5lZWRzIGFueSBzcGVjaWZpYyBwYXJhbWV0ZXJzIGZvciBlbXVsYXRpbmcgdGhlIGBCUkNNRk1BQ19VU0JgIGRldmljZS4uLiB0aGF0IG1pZ2h0IHVubG9jayBpdCBhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjU2LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ4OjE3LjU1NDIwMjAwNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5Nzc5NDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ19VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xNz1jb25maWcgQlJDTUZNQUNfU0RJT1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0ODoxNy44MDM5ODcwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODU0MDI5NDE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLlxuXG4qKkV4YW1pbmluZyB0aGUgQlJDTUZNQUMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3MgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSGFuZyBvbiwgaXMgYEJSQ01GTUFDYCBkZXBlbmRlbnQgb24gKmJvdGgqIGBDRkc4MDIxMWAgYW5kIGBNQUM4MDIxMWA/IE5vLCB0aGF0IGRvZXNuJ3QgbWFrZSBzZW5zZS4gSXQncyBhIEZ1bGxNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBpdCBzaG91bGQgb25seSByZXF1aXJlIHRoZSByZWd1bGF0b3J5IGFuZCBjb250cm9sIGFzcGVjdHMsIGhhbmRsZWQgYnkgYENGRzgwMjExYC4gYE1BQzgwMjExYCBpcyBwYXJ0IG9mIHRoZSBtYWMgbGF5ZXIsIHdoaWNoIGlzIGhhbmRsZWQgZGlyZWN0bHkgYnkgYEJSQ01GTUFDYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLCBzbyBJIHdpbGwgbm93IGNoZWNrIHRoZSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgb2YgYEJSQ01GTUFDYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDI0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDg6MzYuMzQ0MjgzMzk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzM1MzY4NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSQ01GTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTpjb25maWcgQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNzpjb25maWcgQlJDTUZNQUNfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIlNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0ODozNi41MTc4MjUzODdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4MjcyMTUyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSdtIHRoZSBvbmUgaGF2aW5nIGl0LCBhbmQgY29uc2lkZXJpbmcgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqSW5pdGlhbCBLY29uZmlnIFNjYW4qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTGV0J3Mgc2VlLi4uIHRoZSBgYnJjbTgwMjExYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgYEtjb25maWdgIGZpbGUuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBmaXJzdCB0ZW4gbGluZXMuIFRoaXMgZ2l2ZXMgbWUgYSBxdWljayBpbml0aWFsIGZlZWwgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSDigJMgd2hhdCBhcmUgdGhlIHRvcC1sZXZlbCBzZWN0aW9ucyBvciBmZWF0dXJlcz8gV2hhdCBhcmUgdGhlIGltbWVkaWF0ZSBwcmVyZXF1aXNpdGVzPyBJJ20gaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gYXBwcm9hY2ggdXNlZCBieSB0aGlzIGRyaXZlciwgYSBiaXJkcy1leWUgdmlldyBiZWZvcmUgZGl2aW5nIGRlZXBlciBpbnRvIGFueSBzcGVjaWZpYyBzZWN0aW9uLiBJJ20gYW50aWNpcGF0aW5nIHNvbWUgZmFtaWxpYXIgYGJvb2xgIG9yIGB0cmlzdGF0ZWAgb3B0aW9ucywgbGlrZWx5IGdyb3VwZWQgdGhlbWF0aWNhbGx5LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZ2xlYW4uIEl0J2xsIGJlIGludGVyZXN0aW5nIHRvIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUsIGFuZCB3aGV0aGVyIGl0J3Mgc3RyYWlnaHRmb3J3YXJkLCBvciBpZiB0aGVyZSdzIHNvbWUgY29tcGxleCBsZWdhY3kgc3R1ZmYgaW52b2x2ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTY0LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDg6NDcuMzQ1MDQyNjk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIEJSQ01GTUFDXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA0OlxcdFxcdHNlbGVjdCBCUkNNVVRJTFxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIEJyb2FkY29tXFxuICAgNzpcXHRcXHQgIEZ1bGxNQUMgY2hpcHNldHMuIEl0IGhhcyB0byB3b3JrIHdpdGggYXQgbGVhc3Qgb25lIG9mIHRoZSBidXNcXG4gICA4OlxcdFxcdCAgaW50ZXJmYWNlIHN1cHBvcnQuIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZFxcbiAgIDk6XFx0XFx0ICBicmNtZm1hYy5rby5cXG4gIDEwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0ODo0Ny4zNDUxMDMwMThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyNzMyMDg0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgQlJDTUZNQUMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoZSBgQlJDTUZNQUNgIGRyaXZlci4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBDRkc4MDIxMWAsIHNvIHRoYXQncyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBUbyBnZXQgc3RhcnRlZCB3aXRoIHRoZSBmdXp6aW5nIHNldHVwLCBpdCBsb29rcyBsaWtlIEknbGwgbmVlZCBib3RoIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGF2YWlsYWJsZSB0byBtZS5cblxuTm93LCBmb2N1c2luZyBvbiB0aGUgdGFyZ2V0IGZ1bmN0aW9ucywgaW5pdGlhbGx5LCBJIHdhcyBsb29raW5nIGF0OiBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLiBCdXQsIGhhbmcgb24gYSBzZWNvbmQsIEkgc2VlIHRoYXQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgaXMgYWN0dWFsbHkgY2FsbGVkIGZyb20gYGJyY21mX2NmZzgwMjExX21nbXRfdHhgLiBIbW1tLCBJIHRoaW5rIGBicmNtZl9jZmc4MDIxMV9tZ210X3R4YCBtaWdodCBiZSBhIG1vcmUgc3RyYXRlZ2ljIHBvaW50IHRvIGZvY3VzIG9uLCBnaXZlbiB0aGF0IGl0IGFjdHMgYXMgYSBjZW50cmFsIHBvaW50IG9mIGVudHJ5LlxuXG5SaWdodCwgYGJyY21mX2NmZzgwMjExX21nbXRfdHhgIGlzIGEgYGNmZzgwMjExYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBpdCBhdHRyYWN0aXZlIGJlY2F1c2UgSSBjYW4gdHJpZ2dlciBpdCBpbiBhIGNvbnRyb2xsZWQgbWFubmVyLiBJJ2xsIGNoZWNrIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCB0b28sIGFzIHRoYXQncyBhbHNvIGEgYGNmZzgwMjExYCBjYWxsYmFjay4gQWgsIGFuZCBJIHNlZSB0aGF0IGBicmNtZl9zZXRfa2V5X21nbXRgIGFuZCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCBhcmUgY2FsbGVkIGZyb20gYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIG9yIHNpbWlsYXIgZnVuY3Rpb25zLCBzbyB0aGF0IHBhdGggc2VlbXMgcHJldHR5IGltcG9ydGFudCB0b28uIEkgc2hvdWxkIGNoZWNrIHNwZWNpZmljYWxseSB3aGVyZSBgYnJjbWZfY29uZmlndXJlX3dwYWllYCBpcyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgbW9yZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQyMCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ4OjU3LjYxODMxMzcxNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcyMTg5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfY29uZmlndXJlX3dwYWllXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NDUzOD1zdGF0aWMgczMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDUzOTpicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNDU0MC1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01MDg0PWJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUxMDMtXFx0XFx0XFx0LyogV1BBIElFICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTEwNDpcXHRcXHRcXHRlcnIgPSBicmNtZl9jb25maWd1cmVfd3BhaWUoaWZwLCB3cGFfaWUsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MTA1LVxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExMi1cXHRcXHRcXHQvKiBSU04gSUUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MTEzOlxcdFxcdFxcdGVyciA9IGJyY21mX2NvbmZpZ3VyZV93cGFpZShpZnAsIHRtcF9pZSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExNC1cXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDg6NTcuNzA1NTM2Njg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTAxNzgwMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWEgYW5kIHRoaW5raW5nIHRoaXMgdGhyb3VnaDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIFNlcXVlbmNlOiBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHlgIGZ1bmN0aW9uIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCBjYWxscyBgYnJjbWZfY29uZmlndXJlX3dwYWllYC4gVGhpcyBsaWtlbHkgaW5kaWNhdGVzIHRoYXQgdGhlIHByaW1hcnkgcHVycG9zZSBvZiBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCByZXZvbHZlcyBhcm91bmQgc2V0dGluZyB1cCBzZWN1cml0eSBwcm90b2NvbHMsIGFuZCB0aGF0IHNldHRpbmcgdXAgV1BBL1dQQTIvV1BBMyBpbmZvcm1hdGlvbiBlbGVtZW50cyBpcyBhIGtleSBwYXJ0IG9mIHRoYXQgcHJvY2Vzcy5cblxuTm93LCB0aGUgbmF0dXJhbCBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IGFyaXNlcyBpcywgd2hlcmUgaXMgKnRoaXMqIGZ1bmN0aW9uLCBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCwgYmVpbmcgY2FsbGVkIGZyb20/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4gS25vd2luZyB0aGUgY2FsbGVyIHRlbGxzIG1lIHRoZSAqY29udGV4dCogaW4gd2hpY2ggc2VjdXJpdHkgY29uZmlndXJhdGlvbnMgYXJlIHBhcnNlZCBhbmQgYXBwbGllZC4gSXMgaXQgZHVyaW5nIHRoZSBpbml0aWFsIGRyaXZlciBsb2FkPyBXaGVuIGEgbmV3IG5ldHdvcmsgaXMgam9pbmVkPyBQZXJoYXBzIGR1cmluZyBhbiBleHBsaWNpdCByZWNvbmZpZ3VyYXRpb24gY29tbWFuZD8gS25vd2luZyB0aGF0IHdpbGwgcHJvdmlkZSBrZXkgaW5zaWdodHMgaW50byBob3cgdGhlIHNlY3VyaXR5IHNldHRpbmdzIGFyZSBhY3R1YWxseSBlc3RhYmxpc2hlZCBhbmQgdXBkYXRlZCB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBkZWJ1Z2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzA5LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDk6MDIuNDE1NzE3NzMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk1ODU1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01MDgzPXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MDg0OmJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MDg1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYXBfc2V0dGluZ3MgKnNldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTEyNj1icmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5MzpcXHRcXHRlcnIgPSBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkoaWZwLCBzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01Mjk0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTkw4MDIxMV9JRlRZUEVfQVApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTUtXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1Mjk2OlxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTctXFx0XFx0XFx0Z290byBleGl0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM1OlxcdFxcdGVyciA9IGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShpZnAsIHNldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUzMzYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0lGVFlQRV9QMlBfR08pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUzMzctXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM4OlxcdFxcdFxcdGJyY21mX2VycihcXFwiYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5IGVycm9yXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MzM5LVxcdFxcdFxcdGdvdG8gZXhpdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDk6MDIuNDc1NjgyNjU2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzOTQ1MzQzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRyYWNlZCB0aGUgY2FsbCBwYXRoIOKAkyBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCBnZXRzIGludm9rZWQgYnkgYGJyY21mX2NmZzgwMjExX3N0YXJ0X2FwYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RlbW1pbmcgZnJvbSB0aGF0IGNhbGwgYXJlIHJlYWNoYWJsZSBpbiBBUCBtb2RlICh0aHJvdWdoIGBzdGFydF9hcGApLCBTVEEgbW9kZSAodmlhIGBjb25uZWN0YCksIGFuZCBldmVuIFAyUCBtb2RlIChmcm9tIGBtZ210X3R4YCkuIFRoYXQncyBhIHdpZGUgYXR0YWNrIHN1cmZhY2UsIGFuZCBhIGRlZmluaXRlIHNpZ25hbCB0byBwcmlvcml0aXplIHRoaXMgZm9yIGZ1enppbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGJ1aWxkcy4gSSBoYXZlIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGluIG1pbmQuXG5cbk5vdyBmb3IgdGhlIGNvcmUgc3ltYm9scy4gSSdtIGZvY3VzaW5nIG9uOlxuXG4qICAgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgXG4qICAgYGJyY21mX3NldF9rZXlfbWdtdGBcbiogICBgYnJjbWZfY29uZmlndXJlX3dwYWllYFxuKiAgIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgXG5cbldhaXQgYSBtaW51dGUuLi4gSSBzZWUgdGhhdCBgYnJjbWZfc2V0X2tleV9tZ210YCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YC4gVGhhdCBtYWtlcyBpdCBhIGhpZ2gtdmFsdWUgdGFyZ2V0LiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYGJyY21mX3NldF9rZXlfbWdtdGAgZGlyZWN0bHkgdG8gYXNzZXNzIGl0cyB2dWxuZXJhYmlsaXR5IHBvdGVudGlhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc4NjksIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDk6MTAuODcwMjE5OTkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTEwMjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9zZXRfa2V5X21nbXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMDg3PXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyMDg4OmJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjA4OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMzY0PWJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjI0NjE6XFx0ZXJyID0gYnJjbWZfc2V0X2tleV9tZ210KG5kZXYsIHNtZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjQ2Mi1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjEwLjkyOTMyNzEyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODk0MzA2NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgYnJjbWZgIERyaXZlcidzIENvbm5lY3Rpb24gYW5kIFNlY3VyaXR5IEhhbmRsZXJzKipcblxuT2theSwgc28gYGJyY21mX3NldF9rZXlfbWdtdGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAsIGBicmNtZl9zZXRfa2V5X21nbXRgLCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbiBwb2ludHMuXG5cbk5vdywgbGV0IG1lIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkga25vdyB0aGF0IGBCUkNNRk1BQ19TRElPYCBhbmQgYEJSQ01GTUFDX1BDSUVgIG1pZ2h0IGJlIGVuYWJsZWQsIGJ1dCByZWFsaXN0aWNhbGx5LCBgQlJDTUZNQUNfVVNCYCBpcyB0aGUgbW9zdCBwcm9iYWJsZSB0YXJnZXQgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IHN5emthbGxlciBpcyBsaWtlbHkgc2V0IHVwLiBJJ2xsIGluY2x1ZGUgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgaW4gbXkgbWVudGFsIG1vZGVsLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5JdCdzIGEgZ29vZCBpZGVhIHRvIGRvdWJsZSBjaGVjayB0aGF0IGBCUkNNRk1BQ19VU0JgIGRvZXNuJ3QgaGF2ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcy4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Nzk3LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjIwLjgyMzYzODA0MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNDU5MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ19VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xNz1jb25maWcgQlJDTUZNQUNfU0RJT1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0OToyMS4wNTcxMDY2MjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU5MTM2MTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqQlJDTUZNQUNfVVNCIERlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBCUkNNRk1BQ19VU0JgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkcmlsbCBkb3duLCB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtb2R1bGUgKnJlbGllcyogb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucy4gSXMgaXQgYSBjb3JlIGRyaXZlciwgYSBzcGVjaWZpYyBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24sIG9yIHNvbWV0aGluZyBtb3JlIHBlcmlwaGVyYWw/IEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIHRlbGwgbWUgYSBsb3QuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGJhc2ljIFVTQiBzdGFjayBjYWxscywgb3IgYXJlIHRoZXJlIGxvdy1sZXZlbCBoYXJkd2FyZSBhYnN0cmFjdGlvbnMgaW52b2x2ZWQ/XG5cbkknbSB0aGlua2luZzpcbiogICAqKklkZW50aWZ5IENyaXRpY2FsIERlcGVuZGVuY2llczoqKiBXaGF0IGFyZSB0aGUgYWJzb2x1dGUgYmFyZSBtaW5pbXVtIGNvbXBvbmVudHMgcmVxdWlyZWQgZm9yIGBCUkNNRk1BQ19VU0JgIHRvIGV2ZW4gbG9hZD9cbiogICAqKlRyYWNlIHRoZSBIaWVyYXJjaHk6KiogQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBzcGVjaWZpYyBCcm9hZGNvbSBjb21wb25lbnRzP1xuKiAgICoqUGVyZm9ybWFuY2UgQ29uc2lkZXJhdGlvbnM6KiogQ291bGQgYW55IGRlcGVuZGVuY2llcyBpbnRyb2R1Y2UgbGF0ZW5jeSBvciBib3R0bGVuZWNrcz9cbiogICAqKlBvdGVudGlhbCBDb25mbGljdHM6KiogV2hhdCBhcmUgdGhlIGNoYW5jZXMgdGhpcyBtb2R1bGUgc2hhcmVzIHJlc291cmNlcyB3aXRoIG90aGVyIGNvbXBvbmVudHM/XG4qICAgKipQb3J0aW5nL0ludGVncmF0aW9uIENoYWxsZW5nZXM6KiogS25vd2luZyB0aGlzIGlzIGEgXCJVU0JcIiBpbXBsZW1lbnRhdGlvbiwgSSdsbCBiZSBrZWVwaW5nIGFueSBleWUgb24gdGhlIGludGVyZmFjZSwgaW4gY2FzZSB0aGUgcGxhdGZvcm0gaGFzIGFuIHVudXN1YWwgVVNCIGltcGxlbWVudGF0aW9uLlxuKiAgICoqVmVyc2lvbmluZyBhbmQgQ29tcGF0aWJpbGl0eToqKiBEb2VzIHRoaXMgbW9kdWxlIGhhdmUgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIHZlcnNpb25zIG9mIGxpYnJhcmllcyBvciBvdGhlciBjb21wb25lbnRzP1xuKiAgICoqTWFpbnRhaW5hYmlsaXR5IGFuZCBUZXN0aW5nOioqIENhbiBJIGVhc2lseSBtb2NrIG9yIHNpbXVsYXRlIHRoZXNlIGRlcGVuZGVuY2llcyBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nP1xuXG5UaGlzIGlzIHdoZXJlIHRoZSBmdW4gc3RhcnRzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgZXhwbG9yaW5nIHRob3NlIGRlcGVuZGVuY3kgZ3JhcGhzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ3OSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjI5LjY0ODQ3MDcwM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyOTpcXHRjb25maWcgQlJDTUZNQUNfVVNCXFxuICAzMDpcXHRcXHRib29sIFxcXCJVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gKFVTQiA9IHkgfHwgVVNCID0gQlJDTUZNQUMpXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIEJSQ01GTUFDXFxuICAzMzpcXHRcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbiAgMzQ6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBCcm9hZGNvbVxcbiAgMzc6XFx0XFx0ICBJRUVFODAyLjExbiBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xcbiAgMzg6XFx0XFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYW4gVVNCIHdpcmVsZXNzIGNhcmQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjI5LjY0ODU0MDg0M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjU3NDI0MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBCcm9hZGNvbSBGdWxsTUFDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoaXMgcGF0Y2ggaGluZ2VzIG9uIGEgZmV3IGtleSBjb21wb25lbnRzOiBzcGVjaWZpY2FsbHksIHRoZSBgVVNCYCBkZXBlbmRlbmN5IGFuZCB0aGUgYEJSQ01GTUFDYCBkcml2ZXIgaXRzZWxmLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXJlIGFjY291bnRlZCBmb3IgaW4gbXkgYXNzZXNzbWVudC4gVGhleSBhcmUgdGhlIGNvcmUgb2YgdGhpcy5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBvbiB0aGVzZTogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGFuZCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC5cblxuQXJlIHRoZXJlIGFueSBvdGhlciBhbmNpbGxhcnkgZnVuY3Rpb25zIHRoYXQgZ290IHRvdWNoZWQ/IEhtbSwgeWVzLCBJIHNlZSBhIGNvdXBsZSBvZiBzdGF0aWMsIGlubGluZSBmdW5jdGlvbnMg4oCTIGBicmNtZl92YWxpZF9kcHBfc3VpdGVgIGFuZCBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYC4gVGhleSdyZSBwcm9iYWJseSByZWxhdGVkLCBidXQgSSdsbCBmb2N1cyBvbiB0aGUgbWFpbiBwbGF5ZXJzIGZvciBub3cuIEknbGwgaW5jbHVkZSB0aGUgbWFpbiBvbmVzOiBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAsIGBicmNtZl9zZXRfa2V5X21nbXRgLCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogVGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBzdXBwb3J0IGZvciB0aGUgV2ktRmkgQWxsaWFuY2UgRFBQIEFLTSBzdWl0ZSBhbmQgRFBQIHB1YmxpYyBhY3Rpb24gZnJhbWVzIHdpdGhpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIuIEl0J3MgZXNzZW50aWFsbHkgcmV3b3JraW5nIGJvdGggdGhlIGNvbm5lY3Rpb24gYW5kIEFQIHNldHVwIHBhdGhzLCB3aGljaCBtZWFucyBJIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgcGFyc2VzIHRoaXMgbmV3IEFLTSBhbmQgaGFuZGxlcyBTQUUvRldTVVAuIEFsc28sIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoIGlzIGludm9sdmVkLlxuXG5DcnVjaWFsbHksIHRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdGhyb3VnaCBubDgwMjExIGNvbW1hbmRzLCB0aGluZ3MgbGlrZSBgY29ubmVjdGAsIGBzdGFydF9hcGAsIGFuZCBgbWdtdF90eGAsIGVzcGVjaWFsbHkgd2hlbiB0aGUgZHJpdmVyJ3MgYm91bmQgdG8gYW4gZW11bGF0ZWQgVVNCIGRldmljZS4gSXQncyBhIGNvbm5lY3Rpb24gdmlhIFVTQiB0aGF0IG1hdHRlcnMuXG5cbkkgc2hvdWxkIHZlcmlmeSB0aGUgaW1wbGljYXRpb25zIHRvIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAyMCwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjM4LjMwNTk2NjcwMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNjUzODUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU1MzY9YnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTYyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1NjI4OlxcdFxcdGFjayA9IGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShjZmcsIGNmZ190b19uZGV2KGNmZyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTYyOS1cXHRcXHRcXHRcXHRcXHRcXHQgIGFmX3BhcmFtcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM9MTcyNj1zdGF0aWMgYm9vbCBicmNtZl9wMnBfY2hlY2tfZHdlbGxfb3ZlcmZsb3codTMyIHJlcXVlc3RlZF9kd2VsbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzM3LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNzM4OiAqIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSgpIC0gc2VuZCBhY3Rpb24gZnJhbWUgLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzM5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTc0NDpib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzQ1LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaD0xNjg9aW50IGJyY21mX3AycF9ub3RpZnlfYWN0aW9uX3R4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oLTE3MC1cXHRcXHRcXHRcXHRcXHR2b2lkICpkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmg6MTcxOmJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oLTE3Mi1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjM4LjQ3OTYyNjA3NVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjgxMzI1MjE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipSZWFkeSB0byBGaW5hbGl6ZSB0aGUgTWdtdCBGcmFtZSBUcmFuc21pc3Npb24gUmVzdWx0cyoqXG5cblJpZ2h0LCBzbyB0aGlzIGlzIGNvbmZpcm1hdGlvbiDigJMgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBpcyBpbmRlZWQgYGJyY21mX2NmZzgwMjExX21nbXRfdHhgLiBHb29kLCB0aGF0J3MgdGhlIGVudHJ5IHBvaW50IEkgd2FzIGV4cGVjdGluZyBhbmQgY29uZmlybXMgdGhlIGNvcnJlY3QgY29udHJvbCBmbG93LlxuXG5Ob3cgdGhhdCBJIGhhdmUgY29uZmlybWF0aW9uIG9mIHRoZSBmdW5jdGlvbiBjYWxsLCBJIGNhbiBwcm9jZWVkIHdpdGggY29uZmlkZW5jZS4gTXkgZm9jdXMgaXMgbm93IHNoaWZ0ZWQgdG8gcG9wdWxhdGluZyBhbmQgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgcmVzdWx0IHZhbHVlcyBhbmQgcmV0dXJuaW5nIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRlLiBJIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEl04oCZcyB0aW1lIHRvIGZpbmFsaXplIHRoZSB0cmFuc2FjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2NjYsIk91dHB1dFRva2VucyI6MjA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDk6NTEuMjkyODgwNTc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM2NjU1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicmNtZl9jZmc4MDIxMV9jb25uZWN0XCIsXG4gICAgXCJicmNtZl9zZXRfa2V5X21nbXRcIixcbiAgICBcImJyY21mX2NvbmZpZ3VyZV93cGFpZVwiLFxuICAgIFwiYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgV0ZBIERQUCBBS00gc3VpdGUgYW5kIERQUCBwdWJsaWMgYWN0aW9uIGZyYW1lcyB0byB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgKGJyY21mbWFjKS4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBhbmQgQVAgc2V0dXAgcGF0aHMgdG8gcGFyc2UgdGhlIG5ldyBBS00gYW5kIGhhbmRsZSBTQUUvRldTVVAgY29ycmVjdGx5LCBhcyB3ZWxsIGFzIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBjb25uZWN0LCBzdGFydF9hcCwgbWdtdF90eCkgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2NmZzgwMjExX2Nvbm5lY3RcIixcbiAgICBcImJyY21mX3NldF9rZXlfbWdtdFwiLFxuICAgIFwiYnJjbWZfY29uZmlndXJlX3dwYWllXCIsXG4gICAgXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBXRkEgRFBQIEFLTSBzdWl0ZSBhbmQgRFBQIHB1YmxpYyBhY3Rpb24gZnJhbWVzIHRvIHRoZSBCcm9hZGNvbSBGdWxsTUFDIGRyaXZlciAoYnJjbWZtYWMpLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGFuZCBBUCBzZXR1cCBwYXRocyB0byBwYXJzZSB0aGUgbmV3IEFLTSBhbmQgaGFuZGxlIFNBRS9GV1NVUCBjb3JyZWN0bHksIGFzIHdlbGwgYXMgdGhlIFAyUCBhY3Rpb24gZnJhbWUgdHJhbnNtaXNzaW9uIHBhdGguIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5sODAyMTEgY29tbWFuZHMgKGUuZy4sIGNvbm5lY3QsIHN0YXJ0X2FwLCBtZ210X3R4KSB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYW4gZW11bGF0ZWQgVVNCIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxwxr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 15:00:45 +0000 UTC FinishedAt: 2026-07-15 15:49:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB" ], "series_id": "a95d32db-2d82-4c52-ade6-7a200007af71" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "brcmf_cfg80211_connect", "brcmf_set_key_mgmt", "brcmf_configure_wpaie", "brcmf_p2p_send_action_frame" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfc2V0X2tleV9tZ210JiMzNDssCiAgICAmIzM0O2JyY21mX2NvbmZpZ3VyZV93cGFpZSYjMzQ7LAogICAgJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgV0ZBIERQUCBBS00gc3VpdGUgYW5kIERQUCBwdWJsaWMgYWN0aW9uIGZyYW1lcyB0byB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgKGJyY21mbWFjKS4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBhbmQgQVAgc2V0dXAgcGF0aHMgdG8gcGFyc2UgdGhlIG5ldyBBS00gYW5kIGhhbmRsZSBTQUUvRldTVVAgY29ycmVjdGx5LCBhcyB3ZWxsIGFzIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBjb25uZWN0LCBzdGFydF9hcCwgbWdtdF90eCkgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NTYxZDVhMWY2ZmU1ZmFhM2ViYTdkNTUyY2Q1MGNlYjQ5MTU5YTE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTU6NDc6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuaW5kZXggNGI3MDg0NWUxYTI2NDMuLmQ2MWMzZTAzYTEwNmE1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRsaW5rLmhcdTAwM2VcbkBAIC0yMTU0LDYgJiM0MzsyMTU1LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcdFx0XHR2YWwgPSBXUEEyX0FVVEhfUFNLIHwgV1BBMl9BVVRIX0ZUO1xuIFx0XHRcdHByb2ZpbGUtXHUwMDNlaXNfZnQgPSB0cnVlO1xuIFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQOlxuJiM0MztcdFx0XHR2YWwgPSBXRkFfQVVUSF9EUFA7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O2ludmFsaWQgYWttIHN1aXRlICglZClcXG5cJiMzNDssXG4gXHRcdFx0XHQgc21lLVx1MDAzZWNyeXB0by5ha21fc3VpdGVzWzBdKTtcbkBAIC0yNDY2LDQzICYjNDM7MjQ3MCw1MCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRnb3RvIGRvbmU7XG4gXHR9XG4gXG4tXHRpZiAoc21lLVx1MDAzZWNyeXB0by5wc2sgXHUwMDI2XHUwMDI2XG4tXHQgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHtcbi1cdFx0aWYgKFdBUk5fT04ocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xuLVx0XHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdFx0Z290byBkb25lO1xuLVx0XHR9XG4tXHRcdGJyY21mX2RiZyhJTkZPLCBcJiMzNDt1c2luZyBQU0sgb2ZmbG9hZFxcblwmIzM0Oyk7XG4tXHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4tXHR9XG4tXG4tXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4tXHRcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xuLVx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwmIzM0O3N1cF93cGFcJiMzNDssIDEpO1xuLVx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4tXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XFxuXCYjMzQ7KTtcbi1cdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRldTVVApKSB7XG4mIzQzO1x0XHR1MzIgYWttID0gc21lLVx1MDAzZWNyeXB0by5uX2FrbV9zdWl0ZXMgPyBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gOiAwO1xuJiM0MztcdFx0Ym9vbCBpc19zYWVfYWttID0gYWttID09IFdMQU5fQUtNX1NVSVRFX1NBRSB8fFxuJiM0MztcdFx0XHRha20gPT0gV0xBTl9BS01fU1VJVEVfRlRfT1ZFUl9TQUU7XG4mIzQzO1xuJiM0MztcdFx0aWYgKHNtZS1cdTAwM2VjcnlwdG8ucHNrIFx1MDAyNlx1MDAyNiAhaXNfc2FlX2FrbSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICBwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuJiM0MztcdFx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPVxuJiM0MztcdFx0XHRcdCAgICBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XG4mIzQzO1x0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0YnJjbWZfZGJnKElORk8sIFwmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbiBcdFx0fVxuLVx0fVxuLVxuLVx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKVxuLVx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4tXHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4tXHRlbHNlIGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuLVx0XHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cbi1cdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXCYjMzQ7d3BhaWVcJiMzNDssIE5VTEwsIDApO1xuLVx0XHRpZiAoZXJyKSB7XG4tXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7ZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcblwmIzM0Oyk7XG4tXHRcdFx0Z290byBkb25lO1xuJiM0MztcdFx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkge1xuJiM0MztcdFx0XHQvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi9cbiYjNDM7XHRcdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcJiMzNDtzdXBfd3BhXCYjMzQ7LCAxKTtcbiYjNDM7XHRcdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O2ZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0Z290byBkb25lO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwmIzM0O3N1cF93cGFcJiMzNDssIDApO1xuIFx0XHR9XG4tXHRcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcdTAwMjZzbWUtXHUwMDNlY3J5cHRvKTtcbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHNtZS1cdTAwM2VjcnlwdG8ucHNrKVxuJiM0MztcdFx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKVxuIFx0XHRcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXHUwMDNlY3J5cHRvLnBzayxcbiBcdFx0XHRcdFx0ICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pO1xuJiM0MztcdFx0ZWxzZSBpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCBzbWUtXHUwMDNlY3J5cHRvLnNhZV9wd2QgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpIHtcbiYjNDM7XHRcdFx0LyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovXG4mIzQzO1x0XHRcdGlmIChicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcJiMzNDt3cGFpZVwmIzM0OywgTlVMTCwgMCkpIHtcbiYjNDM7XHRcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtmYWlsZWQgdG8gY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFx1MDAyNnNtZS1cdTAwM2VjcnlwdG8pO1xuJiM0MztcdFx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgc21lLVx1MDAzZWNyeXB0by5wc2spXG4mIzQzO1x0XHRcdFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cdTAwM2VjcnlwdG8ucHNrLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRnb3RvIGRvbmU7XG4gXHR9XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGRvbmU7XG4tXG4gXHQvKiBKb2luIHdpdGggc3BlY2lmaWMgQlNTSUQgYW5kIGNhY2hlZCBTU0lEXG4gXHQgKiBJZiBTU0lEIGlzIHplcm8gam9pbiBiYXNlZCBvbiBCU1NJRCBvbmx5XG4gXHQgKi9cbkBAIC00NTE5LDYgJiM0Mzs0NTMwLDExIEBAIHN0YXRpYyBib29sIGJyY21mX3ZhbGlkX3dwYV9vdWkodTggKm91aSwgYm9vbCBpc19yc25faWUpXG4gXHRyZXR1cm4gKG1lbWNtcChvdWksIFdQQV9PVUksIFRMVl9PVUlfTEVOKSA9PSAwKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGJyY21mX3ZhbGlkX2RwcF9zdWl0ZSh1OCAqb3VpKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGdldF91bmFsaWduZWRfYmUzMihvdWkpID09IFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHMzMlxuIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0ICAgICAgY29uc3Qgc3RydWN0IGJyY21mX3ZzX3RsdiAqd3BhX2llLFxuQEAgLTQ2MzIsNDIgJiM0Mzs0NjQ4LDQ3IEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY291bnQ7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGlmICghYnJjbWZfdmFsaWRfd3BhX291aShcdTAwMjZkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHtcbiYjNDM7XHRcdGlmIChicmNtZl92YWxpZF9kcHBfc3VpdGUoXHUwMDI2ZGF0YVtvZmZzZXRdKSkge1xuJiM0MztcdFx0XHR3cGFfYXV0aCB8PSBXRkFfQVVUSF9EUFA7XG4mIzQzO1x0XHRcdG9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47XG4mIzQzO1x0XHR9IGVsc2UgaWYgKGJyY21mX3ZhbGlkX3dwYV9vdWkoXHUwMDI2ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7XG4mIzQzO1x0XHRcdG9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47XG4mIzQzO1x0XHRcdHN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7XG4mIzQzO1x0XHRcdGNhc2UgUlNOX0FLTV9OT05FOlxuJiM0MztcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9OT05FXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XG4mIzQzO1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX1VOU1BFQ0lGSUVEXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRpc19yc25faWUgP1xuJiM0MztcdFx0XHRcdFx0KHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOlxuJiM0MztcdFx0XHRcdFx0KHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSBSU05fQUtNX1BTSzpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fUFNLXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxuJiM0MztcdFx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fTUZQX1BTS1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XG4mIzQzO1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX01GUF8xWFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSBSU05fQUtNX1NBRTpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fU0FFXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSztcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0ZGVmYXVsdDpcbiYjNDM7XHRcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtJbnZhbGlkIGtleSBtZ210IGluZm9cXG5cJiMzNDspO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9IGVsc2Uge1xuIFx0XHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7aW52YWxpZCBPVUlcXG5cJiMzNDspO1xuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuLVx0XHRvZmZzZXQgJiM0Mzs9IFRMVl9PVUlfTEVOO1xuLVx0XHRzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkge1xuLVx0XHRjYXNlIFJTTl9BS01fTk9ORTpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fTk9ORVxcblwmIzM0Oyk7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9VTlNQRUNJRklFRFxcblwmIzM0Oyk7XG4tXHRcdFx0aXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOlxuLVx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9QU0s6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX1BTS1xcblwmIzM0Oyk7XG4tXHRcdFx0aXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0spIDpcbi1cdFx0XHRcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfUFNLKTtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1NIQTI1Nl9QU0s6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX01GUF9QU0tcXG5cJiMzNDspO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0tfU0hBMjU2O1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9NRlBfMVhcXG5cJiMzNDspO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TQUU6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX1NBRVxcblwmIzM0Oyk7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBM19BVVRIX1NBRV9QU0s7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGRlZmF1bHQ6XG4tXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7SW52YWxpZCBrZXkgbWdtdCBpbmZvXFxuXCYjMzQ7KTtcbi1cdFx0fVxuIFx0XHRvZmZzZXQmIzQzOyYjNDM7O1xuIFx0fVxuIFxuQEAgLTQ2ODcsMTAgJiM0Mzs0NzA4LDEyIEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aWYgKCEod3BhX2F1dGggXHUwMDI2IChXUEEyX0FVVEhfUFNLX1NIQTI1NiB8XG4gXHRcdFx0XHRcdFx0ICBXUEEyX0FVVEhfMVhfU0hBMjU2IHxcbiYjNDM7XHRcdFx0XHRcdFx0ICBXRkFfQVVUSF9EUFAgfFxuIFx0XHRcdFx0XHRcdCAgV1BBM19BVVRIX1NBRV9QU0spKSkge1xuIFx0XHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdFx0XHR9XG4mIzQzO1xuIFx0XHRcdFx0LyogRmlybXdhcmUgaGFzIHJlcXVpcmVtZW50IHRoYXQgV1BBMl9BVVRIX1BTSy9cbiBcdFx0XHRcdCAqIFdQQTJfQVVUSF9VTlNQRUNJRklFRCBiZSBzZXQsIGlmIFNIQTI1NiBPVUlcbiBcdFx0XHRcdCAqIGlzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByc24gaWUuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5pbmRleCA2ZTBjOTBmNDcxOGI1OC4uNThhOTczOGU4MWFjZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuQEAgLTYsNiAmIzQzOzYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3J0bmV0bGluay5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2NmZzgwMjExLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2NicmNtdV93aWZpLmhcdTAwM2VcbkBAIC00NCw5ICYjNDM7NDUsNiBAQFxuIFxuICNkZWZpbmUgQlJDTUZfU0NCX1RJTUVPVVRfVkFMVUVcdDIwXG4gXG4tI2RlZmluZSBQMlBfVkVSXHRcdFx0OVx0LyogUDJQIHZlcnNpb246IDk9V2lGaSBQMlAgdjEuMCAqL1xuLSNkZWZpbmUgUDJQX1BVQl9BRl9DQVRFR09SWVx0MHgwNFxuLSNkZWZpbmUgUDJQX1BVQl9BRl9BQ1RJT05cdDB4MDlcbiAjZGVmaW5lIFAyUF9BRl9DQVRFR09SWVx0XHQweDdmXG4gI2RlZmluZSBQMlBfT1VJXHRcdFx0XCYjMzQ7XFx4NTBcXHg2RlxceDlBXCYjMzQ7XHQvKiBQMlAgT1VJICovXG4gI2RlZmluZSBQMlBfT1VJX0xFTlx0XHQzXHRcdC8qIFAyUCBPVUkgbGVuZ3RoICovXG5AQCAtMTQzLDEwICYjNDM7MTQxLDEwIEBAIHN0cnVjdCBicmNtZl9wMnBfc2Nhbl9sZSB7XG4gLyoqXG4gICogc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIC0gV2lGaSBQMlAgUHVibGljIEFjdGlvbiBGcmFtZVxuICAqXG4tICogQGNhdGVnb3J5OiBQMlBfUFVCX0FGX0NBVEVHT1JZXG4tICogQGFjdGlvbjogUDJQX1BVQl9BRl9BQ1RJT05cbiYjNDM7ICogQGNhdGVnb3J5OiBXTEFOX0NBVEVHT1JZX1BVQkxJQ1xuJiM0MzsgKiBAYWN0aW9uOiBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDXG4gICogQG91aTogUDJQX09VSVxuLSAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBQMlBfVkVSXG4mIzQzOyAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBXTEFOX09VSV9UWVBFX1dGQV9QMlBcbiAgKiBAc3VidHlwZTogT1VJIHN1YnR5cGUgLSBQMlBfVFlQRV8qXG4gICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcnNwIHRyYW5zYWN0aW9uXG4gICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy5cbkBAIC0xNjYsNyAmIzQzOzE2NCw3IEBAIHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSB7XG4gICpcbiAgKiBAY2F0ZWdvcnk6IFAyUF9BRl9DQVRFR09SWVxuICAqIEBvdWk6IE9VSSAtIFAyUF9PVUlcbi0gKiBAdHlwZTogT1VJIFR5cGUgLSBQMlBfVkVSXG4mIzQzOyAqIEB0eXBlOiBPVUkgVHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUFxuICAqIEBzdWJ0eXBlOiBPVUkgU3VidHlwZSAtIFAyUF9BRl8qXG4gICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcmVzcCB0cmFuYWN0aW9uXG4gICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy5cbkBAIC0yMjgsMTAgJiM0MzsyMjYsMzggQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4gXHRpZiAoZnJhbWVfbGVuIFx1MDAzYyBzaXplb2YoKnBhY3RfZnJtKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFAyUF9QVUJfQUZfQ0FURUdPUlkgXHUwMDI2XHUwMDI2XG4tXHQgICAgcGFjdF9mcm0tXHUwMDNlYWN0aW9uID09IFAyUF9QVUJfQUZfQUNUSU9OIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHBhY3RfZnJtLVx1MDAzZW91aV90eXBlID09IFAyUF9WRVIgXHUwMDI2XHUwMDI2XG4tXHQgICAgbWVtY21wKHBhY3RfZnJtLVx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXG4mIzQzO1x0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwYWN0X2ZybS1cdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tXHUwMDNlb3VpKSA9PSBXTEFOX09VSV9XRkEpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKCkgLSB0cnVlIGlmIGRwcCBwdWJsaWMgdHlwZSBmcmFtZS5cbiYjNDM7ICpcbiYjNDM7ICogQGZyYW1lOiBhY3Rpb24gZnJhbWUgZGF0YS5cbiYjNDM7ICogQGZyYW1lX2xlbjogbGVuZ3RoIG9mIGFjdGlvbiBmcmFtZSBkYXRhLlxuJiM0MzsgKlxuJiM0MzsgKiBEZXRlcm1pbmUgaWYgYWN0aW9uIGZyYW1lIGlzIGRwcCBwdWJsaWMgYWN0aW9uIHR5cGVcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBib29sIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAqcGFjdF9mcm07XG4mIzQzO1xuJiM0MztcdGlmICghZnJhbWUpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHBhY3RfZnJtID0gKHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAqKWZyYW1lO1xuJiM0MztcdGlmIChmcmFtZV9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUpIC0gMSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwYWN0X2ZybS1cdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfRFBQIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tXHUwMDNlb3VpKSA9PSBXTEFOX09VSV9XRkEpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0cmV0dXJuIGZhbHNlO1xuQEAgLTI1Nyw3ICYjNDM7MjgzLDcgQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmIChhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFAyUF9BRl9DQVRFR09SWSBcdTAwMjZcdTAwMjZcbi1cdCAgICBhY3RfZnJtLVx1MDAzZXR5cGUgID09IFAyUF9WRVIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGFjdF9mcm0tXHUwMDNldHlwZSAgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG1lbWNtcChhY3RfZnJtLVx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuQEAgLTE3ODksNyAmIzQzOzE4MTUsOSBAQCBib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuIFx0fSBlbHNlIGlmIChicmNtZl9wMnBfaXNfcDJwX2FjdGlvbihhY3Rpb25fZnJhbWUtXHUwMDNlZGF0YSxcbi1cdFx0XHRcdFx0ICAgYWN0aW9uX2ZyYW1lX2xlbikpIHtcbiYjNDM7XHRcdFx0XHRcdCAgIGFjdGlvbl9mcmFtZV9sZW4pIHx8XG4mIzQzO1x0XHQgICBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oYWN0aW9uX2ZyYW1lLVx1MDAzZWRhdGEsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgYWN0aW9uX2ZyYW1lX2xlbikpIHtcbiBcdFx0LyogZG8gbm90IGNvbmZpZ3VyZSBhbnl0aGluZy4gaXQgd2lsbCBiZSAqL1xuIFx0XHQvKiBzZW50IHdpdGggYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gICAgICovXG4gXHR9IGVsc2Uge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxuaW5kZXggNzU1MmJkYjkxOTkxY2UuLmM0NjUyMDhjNDMzMTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcbkBAIC0yMzMsNiAmIzQzOzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXG4gXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1x0MHg0MDAwMFx0LyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovXG4gXG4mIzQzOyNkZWZpbmUgV0ZBX0FVVEhfRFBQXHRcdDB4MjAwMDAwIC8qIFdGQSBEUFAgQVVUSCAqL1xuJiM0MztcbiAjZGVmaW5lIERPVDExX0RFRkFVTFRfUlRTX0xFTlx0XHQyMzQ3XG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX0ZSQUdfTEVOXHRcdDIzNDZcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticmNtZl9jZmc4MDIxMV9jb25uZWN0JiMzNDssCiAgICAmIzM0O2JyY21mX3NldF9rZXlfbWdtdCYjMzQ7LAogICAgJiMzNDticmNtZl9jb25maWd1cmVfd3BhaWUmIzM0OywKICAgICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFdGQSBEUFAgQUtNIHN1aXRlIGFuZCBEUFAgcHVibGljIGFjdGlvbiBmcmFtZXMgdG8gdGhlIEJyb2FkY29tIEZ1bGxNQUMgZHJpdmVyIChicmNtZm1hYykuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gYW5kIEFQIHNldHVwIHBhdGhzIHRvIHBhcnNlIHRoZSBuZXcgQUtNIGFuZCBoYW5kbGUgU0FFL0ZXU1VQIGNvcnJlY3RseSwgYXMgd2VsbCBhcyB0aGUgUDJQIGFjdGlvbiBmcmFtZSB0cmFuc21pc3Npb24gcGF0aC4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmw4MDIxMSBjb21tYW5kcyAoZS5nLiwgY29ubmVjdCwgc3RhcnRfYXAsIG1nbXRfdHgpIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhbiBlbXVsYXRlZCBVU0IgZGV2aWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NTYxZDVhMWY2ZmU1ZmFhM2ViYTdkNTUyY2Q1MGNlYjQ5MTU5YTE3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMTU6NDc6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCmluZGV4IDRiNzA4NDVlMWEyNjQzLi5kNjFjM2UwM2ExMDZhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aGVyZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3VuYWxpZ25lZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvY2ZnODAyMTEuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvbmV0bGluay5oJmd0OwpAQCAtMjE1NCw2ICYjNDM7MjE1NSw5IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpCiAJCQl2YWwgPSBXUEEyX0FVVEhfUFNLIHwgV1BBMl9BVVRIX0ZUOwogCQkJcHJvZmlsZS0mZ3Q7aXNfZnQgPSB0cnVlOwogCQkJYnJlYWs7CiYjNDM7CQljYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6CiYjNDM7CQkJdmFsID0gV0ZBX0FVVEhfRFBQOwomIzQzOwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtpbnZhbGlkIGFrbSBzdWl0ZSAoJWQpXG4mIzM0OywKIAkJCQkgc21lLSZndDtjcnlwdG8uYWttX3N1aXRlc1swXSk7CkBAIC0yNDY2LDQzICYjNDM7MjQ3MCw1MCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlnb3RvIGRvbmU7CiAJfQogCi0JaWYgKHNtZS0mZ3Q7Y3J5cHRvLnBzayAmYW1wOyZhbXA7Ci0JICAgIHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkgewotCQlpZiAoV0FSTl9PTihwcm9maWxlLSZndDt1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkgewotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gZG9uZTsKLQkJfQotCQlicmNtZl9kYmcoSU5GTywgJiMzNDt1c2luZyBQU0sgb2ZmbG9hZFxuJiMzNDspOwotCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSzsKLQl9Ci0KLQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkgewotCQkvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi8KLQkJZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCAmIzM0O3N1cF93cGEmIzM0OywgMSk7Ci0JCWlmIChlcnIgJmx0OyAwKSB7Ci0JCQlicGh5X2VycihkcnZyLCAmIzM0O2ZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxuJiMzNDspOwotCQkJZ290byBkb25lOwomIzQzOwlpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GV1NVUCkpIHsKJiM0MzsJCXUzMiBha20gPSBzbWUtJmd0O2NyeXB0by5uX2FrbV9zdWl0ZXMgPyBzbWUtJmd0O2NyeXB0by5ha21fc3VpdGVzWzBdIDogMDsKJiM0MzsJCWJvb2wgaXNfc2FlX2FrbSA9IGFrbSA9PSBXTEFOX0FLTV9TVUlURV9TQUUgfHwKJiM0MzsJCQlha20gPT0gV0xBTl9BS01fU1VJVEVfRlRfT1ZFUl9TQUU7CiYjNDM7CiYjNDM7CQlpZiAoc21lLSZndDtjcnlwdG8ucHNrICZhbXA7JmFtcDsgIWlzX3NhZV9ha20gJmFtcDsmYW1wOwomIzQzOwkJICAgIHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkgewomIzQzOwkJCWlmIChXQVJOX09OKHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPQomIzQzOwkJCQkgICAgQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkgewomIzQzOwkJCQllcnIgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIGRvbmU7CiYjNDM7CQkJfQomIzQzOwkJCWJyY21mX2RiZyhJTkZPLCAmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXG4mIzM0Oyk7CiYjNDM7CQkJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7CiAJCX0KLQl9Ci0KLQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKQotCQllcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLSZndDtjcnlwdG8ucHNrLAotCQkJCSAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTsKLQllbHNlIGlmIChwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHsKLQkJLyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovCi0JCWVyciA9IGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsICYjMzQ7d3BhaWUmIzM0OywgTlVMTCwgMCk7Ci0JCWlmIChlcnIpIHsKLQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7ZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxuJiMzNDspOwotCQkJZ290byBkb25lOwomIzQzOwkJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHsKJiM0MzsJCQkvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi8KJiM0MzsJCQllcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsICYjMzQ7c3VwX3dwYSYjMzQ7LCAxKTsKJiM0MzsJCQlpZiAoZXJyICZsdDsgMCkgewomIzQzOwkJCQlicGh5X2VycihkcnZyLCAmIzM0O2ZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxuJiMzNDspOwomIzQzOwkJCQlnb3RvIGRvbmU7CiYjNDM7CQkJfQomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQllcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsICYjMzQ7c3VwX3dwYSYjMzQ7LCAwKTsKIAkJfQotCQllcnIgPSBicmNtZl9md3ZpZF9zZXRfc2FlX3Bhc3N3b3JkKGlmcCwgJmFtcDtzbWUtJmd0O2NyeXB0byk7Ci0JCWlmICghZXJyICZhbXA7JmFtcDsgc21lLSZndDtjcnlwdG8ucHNrKQomIzQzOwkJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSykKIAkJCWVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtJmd0O2NyeXB0by5wc2ssCiAJCQkJCSAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTsKJiM0MzsJCWVsc2UgaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSAmYW1wOyZhbXA7CiYjNDM7CQkJIHNtZS0mZ3Q7Y3J5cHRvLnNhZV9wd2QgJmFtcDsmYW1wOwomIzQzOwkJCSBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpIHsKJiM0MzsJCQkvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi8KJiM0MzsJCQlpZiAoYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgJiMzNDt3cGFpZSYjMzQ7LCBOVUxMLCAwKSkgewomIzQzOwkJCQlicGh5X2VycihkcnZyLCAmIzM0O2ZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcbiYjMzQ7KTsKJiM0MzsJCQkJZ290byBkb25lOwomIzQzOwkJCX0KJiM0MzsJCQllcnIgPSBicmNtZl9md3ZpZF9zZXRfc2FlX3Bhc3N3b3JkKGlmcCwgJmFtcDtzbWUtJmd0O2NyeXB0byk7CiYjNDM7CQkJaWYgKCFlcnIgJmFtcDsmYW1wOyBzbWUtJmd0O2NyeXB0by5wc2spCiYjNDM7CQkJCWVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtJmd0O2NyeXB0by5wc2ssCiYjNDM7CQkJCQkJICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pOwomIzQzOwkJfQomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlnb3RvIGRvbmU7CiAJfQotCWlmIChlcnIpCi0JCWdvdG8gZG9uZTsKLQogCS8qIEpvaW4gd2l0aCBzcGVjaWZpYyBCU1NJRCBhbmQgY2FjaGVkIFNTSUQKIAkgKiBJZiBTU0lEIGlzIHplcm8gam9pbiBiYXNlZCBvbiBCU1NJRCBvbmx5CiAJICovCkBAIC00NTE5LDYgJiM0Mzs0NTMwLDExIEBAIHN0YXRpYyBib29sIGJyY21mX3ZhbGlkX3dwYV9vdWkodTggKm91aSwgYm9vbCBpc19yc25faWUpCiAJcmV0dXJuIChtZW1jbXAob3VpLCBXUEFfT1VJLCBUTFZfT1VJX0xFTikgPT0gMCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBicmNtZl92YWxpZF9kcHBfc3VpdGUodTggKm91aSkKJiM0Mzt7CiYjNDM7CXJldHVybiBnZXRfdW5hbGlnbmVkX2JlMzIob3VpKSA9PSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzMzIKIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAkJICAgICAgY29uc3Qgc3RydWN0IGJyY21mX3ZzX3RsdiAqd3BhX2llLApAQCAtNDYzMiw0MiAmIzQzOzQ2NDgsNDcgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQlnb3RvIGV4aXQ7CiAJfQogCWZvciAoaSA9IDA7IGkgJmx0OyBjb3VudDsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKCFicmNtZl92YWxpZF93cGFfb3VpKCZhbXA7ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7CiYjNDM7CQlpZiAoYnJjbWZfdmFsaWRfZHBwX3N1aXRlKCZhbXA7ZGF0YVtvZmZzZXRdKSkgewomIzQzOwkJCXdwYV9hdXRoIHw9IFdGQV9BVVRIX0RQUDsKJiM0MzsJCQlvZmZzZXQgJiM0Mzs9IFRMVl9PVUlfTEVOOwomIzQzOwkJfSBlbHNlIGlmIChicmNtZl92YWxpZF93cGFfb3VpKCZhbXA7ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7CiYjNDM7CQkJb2Zmc2V0ICYjNDM7PSBUTFZfT1VJX0xFTjsKJiM0MzsJCQlzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkgewomIzQzOwkJCWNhc2UgUlNOX0FLTV9OT05FOgomIzQzOwkJCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9OT05FXG4mIzM0Oyk7CiYjNDM7CQkJCXdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgUlNOX0FLTV9VTlNQRUNJRklFRDoKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fVU5TUEVDSUZJRURcbiYjMzQ7KTsKJiM0MzsJCQkJaXNfcnNuX2llID8KJiM0MzsJCQkJCSh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDoKJiM0MzsJCQkJCSh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgUlNOX0FLTV9QU0s6CiYjNDM7CQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX1BTS1xuJiMzNDspOwomIzQzOwkJCQlpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOgomIzQzOwkJCQkJICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQljYXNlIFJTTl9BS01fU0hBMjU2X1BTSzoKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fTUZQX1BTS1xuJiMzNDspOwomIzQzOwkJCQl3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBSU05fQUtNX1NIQTI1Nl8xWDoKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fTUZQXzFYXG4mIzM0Oyk7CiYjNDM7CQkJCXdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgUlNOX0FLTV9TQUU6CiYjNDM7CQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX1NBRVxuJiMzNDspOwomIzQzOwkJCQl3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSzsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJZGVmYXVsdDoKJiM0MzsJCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtJbnZhbGlkIGtleSBtZ210IGluZm9cbiYjMzQ7KTsKJiM0MzsJCQl9CiYjNDM7CQl9IGVsc2UgewogCQkJZXJyID0gLUVJTlZBTDsKIAkJCWJwaHlfZXJyKGRydnIsICYjMzQ7aW52YWxpZCBPVUlcbiYjMzQ7KTsKIAkJCWdvdG8gZXhpdDsKIAkJfQotCQlvZmZzZXQgJiM0Mzs9IFRMVl9PVUlfTEVOOwotCQlzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkgewotCQljYXNlIFJTTl9BS01fTk9ORToKLQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX05PTkVcbiYjMzQ7KTsKLQkJCXdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7Ci0JCQlicmVhazsKLQkJY2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fVU5TUEVDSUZJRURcbiYjMzQ7KTsKLQkJCWlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDoKLQkJCQkgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTsKLQkJCWJyZWFrOwotCQljYXNlIFJTTl9BS01fUFNLOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fUFNLXG4mIzM0Oyk7Ci0JCQlpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOgotCQkJCSAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfUFNLKTsKLQkJCWJyZWFrOwotCQljYXNlIFJTTl9BS01fU0hBMjU2X1BTSzoKLQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX01GUF9QU0tcbiYjMzQ7KTsKLQkJCXdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0tfU0hBMjU2OwotCQkJYnJlYWs7Ci0JCWNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6Ci0JCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9NRlBfMVhcbiYjMzQ7KTsKLQkJCXdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7Ci0JCQlicmVhazsKLQkJY2FzZSBSU05fQUtNX1NBRToKLQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX1NBRVxuJiMzNDspOwotCQkJd3BhX2F1dGggfD0gV1BBM19BVVRIX1NBRV9QU0s7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7SW52YWxpZCBrZXkgbWdtdCBpbmZvXG4mIzM0Oyk7Ci0JCX0KIAkJb2Zmc2V0JiM0MzsmIzQzOzsKIAl9CiAKQEAgLTQ2ODcsMTAgJiM0Mzs0NzA4LDEyIEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAkJCQkgKi8KIAkJCQlpZiAoISh3cGFfYXV0aCAmYW1wOyAoV1BBMl9BVVRIX1BTS19TSEEyNTYgfAogCQkJCQkJICBXUEEyX0FVVEhfMVhfU0hBMjU2IHwKJiM0MzsJCQkJCQkgIFdGQV9BVVRIX0RQUCB8CiAJCQkJCQkgIFdQQTNfQVVUSF9TQUVfUFNLKSkpIHsKIAkJCQkJZXJyID0gLUVJTlZBTDsKIAkJCQkJZ290byBleGl0OwogCQkJCX0KJiM0MzsKIAkJCQkvKiBGaXJtd2FyZSBoYXMgcmVxdWlyZW1lbnQgdGhhdCBXUEEyX0FVVEhfUFNLLwogCQkJCSAqIFdQQTJfQVVUSF9VTlNQRUNJRklFRCBiZSBzZXQsIGlmIFNIQTI1NiBPVUkKIAkJCQkgKiBpcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcnNuIGllLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCmluZGV4IDZlMGM5MGY0NzE4YjU4Li41OGE5NzM4ZTgxYWNlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwpAQCAtNiw2ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXRoZXJkZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ydG5ldGxpbmsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2NmZzgwMjExLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDticmNtdV93aWZpLmgmZ3Q7CkBAIC00NCw5ICYjNDM7NDUsNiBAQAogCiAjZGVmaW5lIEJSQ01GX1NDQl9USU1FT1VUX1ZBTFVFCTIwCiAKLSNkZWZpbmUgUDJQX1ZFUgkJCTkJLyogUDJQIHZlcnNpb246IDk9V2lGaSBQMlAgdjEuMCAqLwotI2RlZmluZSBQMlBfUFVCX0FGX0NBVEVHT1JZCTB4MDQKLSNkZWZpbmUgUDJQX1BVQl9BRl9BQ1RJT04JMHgwOQogI2RlZmluZSBQMlBfQUZfQ0FURUdPUlkJCTB4N2YKICNkZWZpbmUgUDJQX09VSQkJCSYjMzQ7XHg1MFx4NkZceDlBJiMzNDsJLyogUDJQIE9VSSAqLwogI2RlZmluZSBQMlBfT1VJX0xFTgkJMwkJLyogUDJQIE9VSSBsZW5ndGggKi8KQEAgLTE0MywxMCAmIzQzOzE0MSwxMCBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3NjYW5fbGUgewogLyoqCiAgKiBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgLSBXaUZpIFAyUCBQdWJsaWMgQWN0aW9uIEZyYW1lCiAgKgotICogQGNhdGVnb3J5OiBQMlBfUFVCX0FGX0NBVEVHT1JZCi0gKiBAYWN0aW9uOiBQMlBfUFVCX0FGX0FDVElPTgomIzQzOyAqIEBjYXRlZ29yeTogV0xBTl9DQVRFR09SWV9QVUJMSUMKJiM0MzsgKiBAYWN0aW9uOiBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDCiAgKiBAb3VpOiBQMlBfT1VJCi0gKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gUDJQX1ZFUgomIzQzOyAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBXTEFOX09VSV9UWVBFX1dGQV9QMlAKICAqIEBzdWJ0eXBlOiBPVUkgc3VidHlwZSAtIFAyUF9UWVBFXyoKICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3JzcCB0cmFuc2FjdGlvbgogICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy4KQEAgLTE2Niw3ICYjNDM7MTY0LDcgQEAgc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIHsKICAqCiAgKiBAY2F0ZWdvcnk6IFAyUF9BRl9DQVRFR09SWQogICogQG91aTogT1VJIC0gUDJQX09VSQotICogQHR5cGU6IE9VSSBUeXBlIC0gUDJQX1ZFUgomIzQzOyAqIEB0eXBlOiBPVUkgVHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUAogICogQHN1YnR5cGU6IE9VSSBTdWJ0eXBlIC0gUDJQX0FGXyoKICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3Jlc3AgdHJhbmFjdGlvbgogICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy4KQEAgLTIyOCwxMCAmIzQzOzIyNiwzOCBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbikKIAlpZiAoZnJhbWVfbGVuICZsdDsgc2l6ZW9mKCpwYWN0X2ZybSkpCiAJCXJldHVybiBmYWxzZTsKIAotCWlmIChwYWN0X2ZybS0mZ3Q7Y2F0ZWdvcnkgPT0gUDJQX1BVQl9BRl9DQVRFR09SWSAmYW1wOyZhbXA7Ci0JICAgIHBhY3RfZnJtLSZndDthY3Rpb24gPT0gUDJQX1BVQl9BRl9BQ1RJT04gJmFtcDsmYW1wOwotCSAgICBwYWN0X2ZybS0mZ3Q7b3VpX3R5cGUgPT0gUDJQX1ZFUiAmYW1wOyZhbXA7Ci0JICAgIG1lbWNtcChwYWN0X2ZybS0mZ3Q7b3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMCkKJiM0MzsJaWYgKHBhY3RfZnJtLSZndDtjYXRlZ29yeSA9PSBXTEFOX0NBVEVHT1JZX1BVQkxJQyAmYW1wOyZhbXA7CiYjNDM7CSAgICBwYWN0X2ZybS0mZ3Q7YWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgJmFtcDsmYW1wOwomIzQzOwkgICAgcGFjdF9mcm0tJmd0O291aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCAmYW1wOyZhbXA7CiYjNDM7CSAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tJmd0O291aSkgPT0gV0xBTl9PVUlfV0ZBKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKCkgLSB0cnVlIGlmIGRwcCBwdWJsaWMgdHlwZSBmcmFtZS4KJiM0MzsgKgomIzQzOyAqIEBmcmFtZTogYWN0aW9uIGZyYW1lIGRhdGEuCiYjNDM7ICogQGZyYW1lX2xlbjogbGVuZ3RoIG9mIGFjdGlvbiBmcmFtZSBkYXRhLgomIzQzOyAqCiYjNDM7ICogRGV0ZXJtaW5lIGlmIGFjdGlvbiBmcmFtZSBpcyBkcHAgcHVibGljIGFjdGlvbiB0eXBlCiYjNDM7ICovCiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKQomIzQzO3sKJiM0MzsJc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICpwYWN0X2ZybTsKJiM0MzsKJiM0MzsJaWYgKCFmcmFtZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcGFjdF9mcm0gPSAoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICopZnJhbWU7CiYjNDM7CWlmIChmcmFtZV9sZW4gJmx0OyBzaXplb2Yoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lKSAtIDEpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmIChwYWN0X2ZybS0mZ3Q7Y2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgJmFtcDsmYW1wOwomIzQzOwkgICAgcGFjdF9mcm0tJmd0O2FjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDICZhbXA7JmFtcDsKJiM0MzsJICAgIHBhY3RfZnJtLSZndDtvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9EUFAgJmFtcDsmYW1wOwomIzQzOwkgICAgZ2V0X3VuYWxpZ25lZF9iZTI0KHBhY3RfZnJtLSZndDtvdWkpID09IFdMQU5fT1VJX1dGQSkKIAkJcmV0dXJuIHRydWU7CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC0yNTcsNyAmIzQzOzI4Myw3IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wMnBfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoYWN0X2ZybS0mZ3Q7Y2F0ZWdvcnkgPT0gUDJQX0FGX0NBVEVHT1JZICZhbXA7JmFtcDsKLQkgICAgYWN0X2ZybS0mZ3Q7dHlwZSAgPT0gUDJQX1ZFUiAmYW1wOyZhbXA7CiYjNDM7CSAgICBhY3RfZnJtLSZndDt0eXBlICA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgJmFtcDsmYW1wOwogCSAgICBtZW1jbXAoYWN0X2ZybS0mZ3Q7b3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMCkKIAkJcmV0dXJuIHRydWU7CiAKQEAgLTE3ODksNyAmIzQzOzE4MTUsOSBAQCBib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLAogCQkJZ290byBleGl0OwogCQl9CiAJfSBlbHNlIGlmIChicmNtZl9wMnBfaXNfcDJwX2FjdGlvbihhY3Rpb25fZnJhbWUtJmd0O2RhdGEsCi0JCQkJCSAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7CiYjNDM7CQkJCQkgICBhY3Rpb25fZnJhbWVfbGVuKSB8fAomIzQzOwkJICAgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKGFjdGlvbl9mcmFtZS0mZ3Q7ZGF0YSwKJiM0MzsJCQkJCSAgICAgICBhY3Rpb25fZnJhbWVfbGVuKSkgewogCQkvKiBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLiBpdCB3aWxsIGJlICovCiAJCS8qIHNlbnQgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiAgICAgKi8KIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oCmluZGV4IDc1NTJiZGI5MTk5MWNlLi5jNDY1MjA4YzQzMzE4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaApAQCAtMjMzLDYgJiM0MzsyMzMsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWNfYml0bWFwX3RzdCh1OCBiaXRtYXAsIGludCBwcmVjKQogCiAjZGVmaW5lIFdQQTNfQVVUSF9TQUVfUFNLCTB4NDAwMDAJLyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovCiAKJiM0MzsjZGVmaW5lIFdGQV9BVVRIX0RQUAkJMHgyMDAwMDAgLyogV0ZBIERQUCBBVVRIICovCiYjNDM7CiAjZGVmaW5lIERPVDExX0RFRkFVTFRfUlRTX0xFTgkJMjM0NwogI2RlZmluZSBET1QxMV9ERUZBVUxUX0ZSQUdfTEVOCQkyMzQ2CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg4MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERQUCBTdXBwb3J0IFBhdGNoIGluIGJyY21mbWFjKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgYWRkcyBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIEFLTSBzdWl0ZSBzdXBwb3J0IGFuZCBwdWJsaWMgYWN0aW9uIGZyYW1lIGhhbmRsaW5nIHRvIHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9gIGRpcmVjdG9yeS4gSXQgYWxzbyBzZWVtcyB0byBiZSBtYWtpbmcgYWRqdXN0bWVudHMgdG8gYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIHRvIGJldHRlciBoYW5kbGUgU0FFIEFLTSBhbmQgdGhlIGZpcm13YXJlIHN1cHBsaWNhbnQgKEZXU1VQKSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gcmVhY2hhYmlsaXR5IGFuZCBmdXp6aW5nIHBvdGVudGlhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgcGF0Y2ggaXMgYWN0aXZhdGVkIGFuZCBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBub3cgbW9kaWZpZWQgb3IgaW50cm9kdWNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgdGhhdCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG91Y2hlZCBhcmUgYGJyY21mX3NldF9rZXlfbWdtdGAsIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gLCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSBwYXJ0IG9mIHRoZSBgYnJjbWZtYWNgIGRyaXZlci4KCk5leHQsIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIHRoZSBgS2NvbmZpZ2AgZmlsZSBmb3IgYGJyY21mbWFjYC4gSXQmIzM5O3MgbGlrZWx5IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ2Agb3Igc29tZXdoZXJlIHNpbWlsYXIuIEkmIzM5O2xsIHVzZSBgY29kZXNlYXJjaC1kaXItaW5kZXhgIGFuZCBgZ3JlcHBlcmAgdG8gbG9jYXRlIGl0IHF1aWNrbHkuIFRoaXMgS2NvbmZpZyB3aWxsIGJlIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJiMzOTtzIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBob3cgdGhlIERQUCBmdW5jdGlvbmFsaXR5IGlzIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyB3aWxsIGxpa2VseSBnaXZlIG1lIGtleSBpbnNpZ2h0cyBmb3IgYnVpbGRpbmcgYSB0ZXN0IGVudmlyb25tZW50IHRoYXQgY2FuIHJlYWNoIGFuZCBleGVyY2lzZSB0aGUgRFBQIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSQ01GTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3OAoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDQyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBCUkNNRk1BQyBEcml2ZXI6IEEgU3RyYXRlZ2ljIEFwcHJvYWNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIGBCUkNNRk1BQ2AgZHJpdmVyIGluIG15IHNpZ2h0cy4gSXQmIzM5O3MgZ290IHN1cHBvcnQgZm9yIFNESU8sIFVTQiwgYW5kIFBDSUUsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIGZ1enppbmcgYXZlbnVlcy4gQmVjYXVzZSBpdCBzdXBwb3J0cyBVU0IsIHRoYXQgbWVhbnMgSSBjYW4gbGV2ZXJhZ2UgVVNCIGVtdWxhdGlvbiB0ZWNobmlxdWVzIOKAkyBlaXRoZXIgYSBkdW1teSBIQ0Qgc2V0dXAgb3IsIGV2ZW4gYmV0dGVyLCBTeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBXYWl0LCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgVVNCIGZ1enppbmcsIHJpZ2h0PyBFeGNlbGxlbnQuIFRoYXQgbWVhbnMgYEJSQ01GTUFDX1VTQmAgaXMgZGVmaW5pdGVseSB3aXRoaW4gcmVhY2guCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgaXQmIzM5O3MgYWN0dWFsbHkgd29ydGggdGhlIGVmZm9ydC4gQ2FuIEkgZ2V0IGF0IGl0IHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYD8gTm8sIGl0JiMzOTtzIGEgRnVsbE1BQyBkcml2ZXIsIHJlZ2lzdGVyaW5nIGl0cyBvd24gYHdpcGh5YCBhbmQgYG5ldGRldmAuIEl0IHRhbGtzIHRvIHRoZSBmaXJtd2FyZSBvdmVyIFNESU8sIFVTQiwgb3IgUENJRSDigJMgd2hpY2ggY29uZmlybXMgdGhhdCBVU0IgcGF0aC4gU3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIHdpbGwgYmUgbXkgYmVzdCBiZXQuIFNvIHllYWgsIGBCUkNNRk1BQ19VU0JgIGlzIGxvb2tpbmcgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZS4KCkRpZ2dpbmcgZGVlcGVyLCBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBzb21lIGNydWNpYWwgYGNmZzgwMjExYCBjYWxsYmFja3M6IGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX3NldF9rZXlfbWdtdGAsIGFuZCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIHRoYXQgdGhlc2UgYXJlIGNhbGxlZCBmcm9tIHdpdGhpbiBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAgb3Igc2ltaWxhci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgbmw4MDIxMWAgaW50ZXJmYWNlICh3aGljaCBsZXZlcmFnZXMgYGNmZzgwMjExYCksIHdoaWNoIGlzIGFub3RoZXIgcmVhbGx5IGdvb2Qgc2lnbi4gQ2xlYXJseSwgdGhpcyBpcyByZWFjaGFibGUsIGFuZCBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBwaW5wb2ludCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIEkgd2FudCB0byBmb2N1cyBvbjoKKiAgIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YAoqICAgYGJyY21mX3NldF9rZXlfbWdtdGAKKiAgIGBicmNtZl9jb25maWd1cmVfd3BhaWVgCiogICBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYAoqICAgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAKCkkmIzM5O2xsIGNoZWNrIHRoZSBzb3VyY2Ugb2YgZWFjaCBmdW5jdGlvbi4gYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmAgaXMgc3RhdGljLCB3aGljaCBsaW1pdHMgaXRzIGFjY2Vzc2liaWxpdHkgYnV0IHN0aWxsIGRvZXNuJiMzOTt0IHJ1bGUgaXQgb3V0LiBBbmQgSSBzaG91bGQgZG91YmxlIGNoZWNrIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgIGFuZCBpdHMgdXNhZ2UgaW4gYHAycC5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU1MzY9YnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU2MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1NjI4Olx0XHRhY2sgPSBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoY2ZnLCBjZmdfdG9fbmRldihjZmcpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTYyOS1cdFx0XHRcdFx0XHQgIGFmX3BhcmFtcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jPTE3MjY9c3RhdGljIGJvb2wgYnJjbWZfcDJwX2NoZWNrX2R3ZWxsX292ZXJmbG93KHUzMiByZXF1ZXN0ZWRfZHdlbGwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3MzctLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTczODogKiBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoKSAtIHNlbmQgYWN0aW9uIGZyYW1lIC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzM5LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDMtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTc0NDpib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDUtXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oPTE2OD1pbnQgYnJjbWZfcDJwX25vdGlmeV9hY3Rpb25fdHhfY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oLTE3MC1cdFx0XHRcdFx0dm9pZCAqZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmg6MTcxOmJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgtMTcyLVx0XHRcdFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NjUKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYW5kIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYCBmdW5jdGlvbiAtIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgc2VlbiB0aGF0IG9uZSBraWNraW5nIGFyb3VuZC4gSXQgcmluZ3MgYSBiZWxsIGFzIGEgZ2xvYmFsIGZ1bmN0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIGFjY2Vzc2libGUgZnJvbSB2YXJpb3VzIHBhcnRzIG9mIHRoZSBkcml2ZXIuIE5vdywgdGhlIG5leHQgb25lLCBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAuLi4gdGhhdCBvbmUgc2VlbXMgYSBiaXQgbGVzcyBmYW1pbGlhci4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0IG1pZ2h0IGJlIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IHdvdWxkIG1lYW4gaXQmIzM5O3Mgb25seSB2aXNpYmxlIHdpdGhpbiBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQsIG1heWJlIGBjZmc4MDIxMS5jYCwgaWYgbWVtb3J5IHNlcnZlcy4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRvIGNvbmZpcm0gdGhhdCBodW5jaC4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgY29kZSBmb3IgYGNmZzgwMjExLmNgIGFuZCB2ZXJpZnkgaWYgbXkgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGl0cyBzY29wZSBpcyBjb3JyZWN0LiBHb3R0YSBiZSBwcmVjaXNlIGFib3V0IHRoZXNlIGtpbmRzIG9mIGRldGFpbHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGNvcmUgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfY2ZnODAyMTFfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MjM2Mz1zdGF0aWMgczMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyMzY0OmJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yMzY1LVx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTk1Nz1zdGF0aWMgc3RydWN0IGNmZzgwMjExX29wcyBicmNtZl9jZmc4MDIxMV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTk3NC1cdC5zZXRfcG93ZXJfbWdtdCA9IGJyY21mX2NmZzgwMjExX3NldF9wb3dlcl9tZ210LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTk3NTpcdC5jb25uZWN0ID0gYnJjbWZfY2ZnODAyMTFfY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU5NzYtXHQuZGlzY29ubmVjdCA9IGJyY21mX2NmZzgwMjExX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjE0Nj1zdGF0aWMgdm9pZCBicmNtZl9jbGVhcl9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYxNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjE0ODpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MTQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTYyOTY9c3RhdGljIHMzMiBicmNtZl9nZXRfYXNzb2NfaWVzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjMwMC1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9hc3NvY19pZWxlbl9sZSAqYXNzb2NfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjYzMDE6XHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjMwMi1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9lZGNmX2FjcGFyYW0gZWRjZl9hY3BhcmFtX2luZm9bRURDRl9BQ19DT1VOVF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjM3OD1icmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjM4My1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlICpwcm9maWxlID0gXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjM4NDpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02Mzg1LVx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IGNmZ190b193aXBoeShjZmcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTY0NTE9YnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY0NTYtXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSAqcHJvZmlsZSA9IFx1MDAyNmlmcC1cdTAwM2V2aWYtXHUwMDNlcHJvZmlsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjY0NTc6XHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjQ1OC1cdHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3Jlc3BfcGFyYW1zIGNvbm5fcGFyYW1zO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oPTIyMD1zdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0yMzUtLyogYXNzb2NpYXRpb24gaW5mb3JtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaDoyMzY6c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0yMzctXHR1OCAqcmVxX2llO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oPTM0Mj1zdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtMzQ5LVx0c3RydWN0IHdsX2NmZzgwMjExX2Jzc19pbmZvICpic3NfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oOjM1MDpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gY29ubl9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtMzUxLVx0c3RydWN0IGJyY21mX3Bta19saXN0X2xlIHBta19saXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oPTQzMz1zdGF0aWMgaW5saW5lIHN0cnVjdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6NDM0OmJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY2ZnX3RvX2Nvbm4oc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTQzNS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNTYKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA4NzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIE5ldyBEUFAgU3VwcG9ydCBpbiBCUkNNRk1BQyB2aWEgU3l6a2FsbGVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBob3cgaXQgcmVsYXRlcyB0byBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIHdpdGhpbiB0aGUgYEJSQ01GTUFDYCBkcml2ZXIsIHNwZWNpZmljYWxseSBieSBtb2RpZnlpbmcgYGJyY21mX3NldF9rZXlfbWdtdGAgYW5kIGBicmNtZl9jb25maWd1cmVfd3BhaWVgIHRvIGhhbmRsZSBgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUGAsIGFuZCBieSB1cGRhdGluZyBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYCBmb3IgRFBQIHB1YmxpYyBhY3Rpb24gZnJhbWVzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgY2FsbGVkIGZyb20gYGNmZzgwMjExYCBjYWxsYmFja3M6IGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCBhbmQgYGJyY21mX2NmZzgwMjExX21nbXRfdHhgIHJlc3BlY3RpdmVseSwgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgcmVnaXN0ZXJlZCB3aXRoaW4gYGJyY21mX2NmZzgwMjExX29wc2AuICBUaGlzIG1lYW5zIHRoZXkmIzM5O3JlIHVsdGltYXRlbHkgdHJpZ2dlcmVkIGJ5IGBubDgwMjExYCBjb21tYW5kcy4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoZXNlIGNvZGUgcGF0aHMuIFN5emthbGxlciBoYXMgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHZpYSBgc3l6X3VzYl9jb25uZWN0YCBhbmQgYHN5el91c2JfZGlzY29ubmVjdGAsIHdoaWNoIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgcG90ZW50aWFsbHksIHRoZSBgQlJDTUZNQUNfVVNCYCBkZXZpY2UuICBTeXprYWxsZXIgYWxzbyB1bmRlcnN0YW5kcyBgbmw4MDIxMWAgdGhyb3VnaCBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCwgbWFraW5nIGl0IGEgcG90ZW50aWFsIHJvdXRlIHRvIHRoZXNlIGZ1bmN0aW9ucy4KClRoZSBwcm9ibGVtLCB0aG91Z2gsIGlzIHRoYXQgYEJSQ01GTUFDYCBpcyBhIEZ1bGxNQUMgZHJpdmVyIGFuZCBkZXBlbmRzIG9uIGEgc3BlY2lmaWMgVVNCIGRldmljZSBlbXVsYXRpb24gZm9yIHdpcGh5IHJlZ2lzdHJhdGlvbi4gIElmIHRoZSBVU0IgZW11bGF0aW9uIHByb3ZpZGVkIGJ5IHN5emthbGxlciBpcyBnb29kIGVub3VnaCwgdGhlIGRyaXZlciBzaG91bGQgcHJvYmUgYW5kIHJlZ2lzdGVyIGl0cyB3aXBoeSwgbWFraW5nIGBubDgwMjExYCBjb21tYW5kcyBhdmFpbGFibGUgYW5kIHRodXMgcmVhY2hpbmcgdGhlc2UgbW9kaWZpZWQgZnVuY3Rpb25zLiAgQnV0LCBjYW4gc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGVtdWxhdGUgdGhlIEJyb2FkY29tIFVTQiBkZXZpY2UgKmFuZCogdGhlIGZpcm13YXJlIHN1ZmZpY2llbnRseSB0byBhbGxvdyB0aGUgZHJpdmVyIHRvIGxvYWQgYW5kIGluaXRpYWxpemU/IFRoZSBkcml2ZXIgKnJlcXVpcmVzKiB0aGUgZmlybXdhcmUgdG8gbG9hZCBhbmQgcmVzcG9uZCBjb3JyZWN0bHk7IG90aGVyd2lzZSwgdGhlIHdpcGh5IHJlZ2lzdHJhdGlvbiB3aWxsIGZhaWwuCgpTbywgd2hpbGUgdGhlIHByb2JlIGZ1bmN0aW9uICppdHNlbGYqIGlzIHJlYWNoYWJsZSBldmVuIHdpdGggYSBmYWlsZWQgaW5pdGlhbGl6YXRpb24sIHRoZSAqbW9kaWZpZWQqIGZ1bmN0aW9ucyBhcmUgY2FsbGJhY2tzIHRoYXQgb25seSBnZXQgY2FsbGVkIGlmIHRoZSB3aXBoeSByZWdpc3RlcnMgc3VjY2Vzc2Z1bGx5LiBUaGUgcmVhbCBib3R0bGVuZWNrIGlzIGxpa2VseSB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb24gaGF2ZSB0byBiZSBjb3JyZWN0LiBJZiBzeXprYWxsZXIganVzdCBzcGV3cyByYW5kb20gVVNCIHJlc3BvbnNlcywgdGhlIGRyaXZlciB3aWxsIHByb2JhYmx5IGZhaWwgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHdpcGh5IHdpbGwgbm90IGJlIHJlZ2lzdGVyZWQuIEhvd2V2ZXIsIHRoZSBkcml2ZXIgbWlnaHQgYmUgJiMzNDtyZWFjaGFibGUmIzM0OyBpbiB0aGVvcnkgYnkgc29tZSBvdGhlciBtZWFucy4KClRoZSBkb2N1bWVudGF0aW9uIGlzIGNsZWFyOiAgaWYgaXQmIzM5O3MgYSBVU0IgZHJpdmVyLCB0aGUgZnVuY3Rpb25zICphcmUqIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4gVGhlIGZpcm13YXJlIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIHBoYXNlIG1pZ2h0IGJlIGEgY2hhbGxlbmdlLCBidXQgaXQmIzM5O3Mgbm90IGFuICppbXBvc3NpYmlsaXR5KiBpbiB0aGUgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQuIE5vdywgbGV0IG1lIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdgKSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgVVNCIGRldmljZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gZ3VpZGUgc3l6a2FsbGVyLiBMZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBuZWVkcyBhbnkgc3BlY2lmaWMgcGFyYW1ldGVycyBmb3IgZW11bGF0aW5nIHRoZSBgQlJDTUZNQUNfVVNCYCBkZXZpY2UuLi4gdGhhdCBtaWdodCB1bmxvY2sgaXQgYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJDTUZNQUNfVVNCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xNz1jb25maWcgQlJDTUZNQUNfU0RJT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXHRib29sIFwmIzM0O1VTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDI0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKKipFeGFtaW5pbmcgdGhlIEJSQ01GTUFDIERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3MgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSGFuZyBvbiwgaXMgYEJSQ01GTUFDYCBkZXBlbmRlbnQgb24gKmJvdGgqIGBDRkc4MDIxMWAgYW5kIGBNQUM4MDIxMWA/IE5vLCB0aGF0IGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UuIEl0JiMzOTtzIGEgRnVsbE1BQyBkcml2ZXIsIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBvbmx5IHJlcXVpcmUgdGhlIHJlZ3VsYXRvcnkgYW5kIGNvbnRyb2wgYXNwZWN0cywgaGFuZGxlZCBieSBgQ0ZHODAyMTFgLiBgTUFDODAyMTFgIGlzIHBhcnQgb2YgdGhlIG1hYyBsYXllciwgd2hpY2ggaXMgaGFuZGxlZCBkaXJlY3RseSBieSBgQlJDTUZNQUNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24sIHNvIEkgd2lsbCBub3cgY2hlY2sgdGhlIHNwZWNpZmljIGRlcGVuZGVuY2llcyBvZiBgQlJDTUZNQUNgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSQ01GTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTY0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkmIzM5O20gdGhlIG9uZSBoYXZpbmcgaXQsIGFuZCBjb25zaWRlcmluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkluaXRpYWwgS2NvbmZpZyBTY2FuKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIGl0LiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgYnJjbTgwMjExYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgYEtjb25maWdgIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgZmlyc3QgdGVuIGxpbmVzLiBUaGlzIGdpdmVzIG1lIGEgcXVpY2sgaW5pdGlhbCBmZWVsIGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG92ZXJhbGwgc3RydWN0dXJlIOKAkyB3aGF0IGFyZSB0aGUgdG9wLWxldmVsIHNlY3Rpb25zIG9yIGZlYXR1cmVzPyBXaGF0IGFyZSB0aGUgaW1tZWRpYXRlIHByZXJlcXVpc2l0ZXM/IEkmIzM5O20gaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gYXBwcm9hY2ggdXNlZCBieSB0aGlzIGRyaXZlciwgYSBiaXJkcy1leWUgdmlldyBiZWZvcmUgZGl2aW5nIGRlZXBlciBpbnRvIGFueSBzcGVjaWZpYyBzZWN0aW9uLiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGZhbWlsaWFyIGBib29sYCBvciBgdHJpc3RhdGVgIG9wdGlvbnMsIGxpa2VseSBncm91cGVkIHRoZW1hdGljYWxseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBnbGVhbi4gSXQmIzM5O2xsIGJlIGludGVyZXN0aW5nIHRvIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUsIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCwgb3IgaWYgdGhlcmUmIzM5O3Mgc29tZSBjb21wbGV4IGxlZ2FjeSBzdHVmZiBpbnZvbHZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBCUkNNRk1BQ1xuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNDpcdFx0c2VsZWN0IEJSQ01VVElMXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gQnJvYWRjb21cbiAgIDc6XHRcdCAgRnVsbE1BQyBjaGlwc2V0cy4gSXQgaGFzIHRvIHdvcmsgd2l0aCBhdCBsZWFzdCBvbmUgb2YgdGhlIGJ1c1xuICAgODpcdFx0ICBpbnRlcmZhY2Ugc3VwcG9ydC4gSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZFxuICAgOTpcdFx0ICBicmNtZm1hYy5rby5cbiAgMTA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0MjAKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQlJDTUZNQUMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlIGBCUkNNRk1BQ2AgZHJpdmVyLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBDRkc4MDIxMWAsIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZC4gVG8gZ2V0IHN0YXJ0ZWQgd2l0aCB0aGUgZnV6emluZyBzZXR1cCwgaXQgbG9va3MgbGlrZSBJJiMzOTtsbCBuZWVkIGJvdGggYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXZhaWxhYmxlIHRvIG1lLgoKTm93LCBmb2N1c2luZyBvbiB0aGUgdGFyZ2V0IGZ1bmN0aW9ucywgaW5pdGlhbGx5LCBJIHdhcyBsb29raW5nIGF0OiBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLiBCdXQsIGhhbmcgb24gYSBzZWNvbmQsIEkgc2VlIHRoYXQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgaXMgYWN0dWFsbHkgY2FsbGVkIGZyb20gYGJyY21mX2NmZzgwMjExX21nbXRfdHhgLiBIbW1tLCBJIHRoaW5rIGBicmNtZl9jZmc4MDIxMV9tZ210X3R4YCBtaWdodCBiZSBhIG1vcmUgc3RyYXRlZ2ljIHBvaW50IHRvIGZvY3VzIG9uLCBnaXZlbiB0aGF0IGl0IGFjdHMgYXMgYSBjZW50cmFsIHBvaW50IG9mIGVudHJ5LgoKUmlnaHQsIGBicmNtZl9jZmc4MDIxMV9tZ210X3R4YCBpcyBhIGBjZmc4MDIxMWAgY2FsbGJhY2suIFRoYXQgbWFrZXMgaXQgYXR0cmFjdGl2ZSBiZWNhdXNlIEkgY2FuIHRyaWdnZXIgaXQgaW4gYSBjb250cm9sbGVkIG1hbm5lci4gSSYjMzk7bGwgY2hlY2sgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIHRvbywgYXMgdGhhdCYjMzk7cyBhbHNvIGEgYGNmZzgwMjExYCBjYWxsYmFjay4gQWgsIGFuZCBJIHNlZSB0aGF0IGBicmNtZl9zZXRfa2V5X21nbXRgIGFuZCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCBhcmUgY2FsbGVkIGZyb20gYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIG9yIHNpbWlsYXIgZnVuY3Rpb25zLCBzbyB0aGF0IHBhdGggc2VlbXMgcHJldHR5IGltcG9ydGFudCB0b28uIEkgc2hvdWxkIGNoZWNrIHNwZWNpZmljYWxseSB3aGVyZSBgYnJjbWZfY29uZmlndXJlX3dwYWllYCBpcyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgbW9yZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jb25maWd1cmVfd3BhaWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQ1Mzg9c3RhdGljIHMzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDUzOTpicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00NTQwLVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTA4ND1icmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTEwMy1cdFx0XHQvKiBXUEEgSUUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUxMDQ6XHRcdFx0ZXJyID0gYnJjbWZfY29uZmlndXJlX3dwYWllKGlmcCwgd3BhX2llLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MTA1LVx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExMi1cdFx0XHQvKiBSU04gSUUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUxMTM6XHRcdFx0ZXJyID0gYnJjbWZfY29uZmlndXJlX3dwYWllKGlmcCwgdG1wX2llLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUxMTQtXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3MDkKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhIGFuZCB0aGlua2luZyB0aGlzIHRocm91Z2g6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gU2VxdWVuY2U6IGBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHlgKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCBmdW5jdGlvbiBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQgY2FsbHMgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAuIFRoaXMgbGlrZWx5IGluZGljYXRlcyB0aGF0IHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgYGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eWAgcmV2b2x2ZXMgYXJvdW5kIHNldHRpbmcgdXAgc2VjdXJpdHkgcHJvdG9jb2xzLCBhbmQgdGhhdCBzZXR0aW5nIHVwIFdQQS9XUEEyL1dQQTMgaW5mb3JtYXRpb24gZWxlbWVudHMgaXMgYSBrZXkgcGFydCBvZiB0aGF0IHByb2Nlc3MuCgpOb3csIHRoZSBuYXR1cmFsIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgYXJpc2VzIGlzLCB3aGVyZSBpcyAqdGhpcyogZnVuY3Rpb24sIGBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHlgLCBiZWluZyBjYWxsZWQgZnJvbT8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsLiBLbm93aW5nIHRoZSBjYWxsZXIgdGVsbHMgbWUgdGhlICpjb250ZXh0KiBpbiB3aGljaCBzZWN1cml0eSBjb25maWd1cmF0aW9ucyBhcmUgcGFyc2VkIGFuZCBhcHBsaWVkLiBJcyBpdCBkdXJpbmcgdGhlIGluaXRpYWwgZHJpdmVyIGxvYWQ/IFdoZW4gYSBuZXcgbmV0d29yayBpcyBqb2luZWQ/IFBlcmhhcHMgZHVyaW5nIGFuIGV4cGxpY2l0IHJlY29uZmlndXJhdGlvbiBjb21tYW5kPyBLbm93aW5nIHRoYXQgd2lsbCBwcm92aWRlIGtleSBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgc2VjdXJpdHkgc2V0dGluZ3MgYXJlIGFjdHVhbGx5IGVzdGFibGlzaGVkIGFuZCB1cGRhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBkZWJ1Z2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTA4Mz1zdGF0aWMgczMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MDg0OmJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUwODUtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9hcF9zZXR0aW5ncyAqc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTEyNj1icmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5MzpcdFx0ZXJyID0gYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5KGlmcCwgc2V0dGluZ3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01Mjk0LVx0XHRcdFx0XHRcdCAgICAgTkw4MDIxMV9JRlRZUEVfQVApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTI5NS1cdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5NjpcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTI5Ny1cdFx0XHRnb3RvIGV4aXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUzMzU6XHRcdGVyciA9IGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShpZnAsIHNldHRpbmdzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNi1cdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfSUZUWVBFX1AyUF9HTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MzM3LVx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM4Olx0XHRcdGJyY21mX2VycihcJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzOS1cdFx0XHRnb3RvIGV4aXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODY5CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIHRyYWNlZCB0aGUgY2FsbCBwYXRoIOKAkyBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCBnZXRzIGludm9rZWQgYnkgYGJyY21mX2NmZzgwMjExX3N0YXJ0X2FwYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RlbW1pbmcgZnJvbSB0aGF0IGNhbGwgYXJlIHJlYWNoYWJsZSBpbiBBUCBtb2RlICh0aHJvdWdoIGBzdGFydF9hcGApLCBTVEEgbW9kZSAodmlhIGBjb25uZWN0YCksIGFuZCBldmVuIFAyUCBtb2RlIChmcm9tIGBtZ210X3R4YCkuIFRoYXQmIzM5O3MgYSB3aWRlIGF0dGFjayBzdXJmYWNlLCBhbmQgYSBkZWZpbml0ZSBzaWduYWwgdG8gcHJpb3JpdGl6ZSB0aGlzIGZvciBmdXp6aW5nLgoKTXkgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGJ1aWxkcy4gSSBoYXZlIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGluIG1pbmQuCgpOb3cgZm9yIHRoZSBjb3JlIHN5bWJvbHMuIEkmIzM5O20gZm9jdXNpbmcgb246CgoqICAgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgCiogICBgYnJjbWZfc2V0X2tleV9tZ210YAoqICAgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAKKiAgIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgCgpXYWl0IGEgbWludXRlLi4uIEkgc2VlIHRoYXQgYGJyY21mX3NldF9rZXlfbWdtdGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAuIFRoYXQgbWFrZXMgaXQgYSBoaWdoLXZhbHVlIHRhcmdldC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgYnJjbWZfc2V0X2tleV9tZ210YCBkaXJlY3RseSB0byBhc3Nlc3MgaXRzIHZ1bG5lcmFiaWxpdHkgcG90ZW50aWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9zZXRfa2V5X21nbXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTIwODc9c3RhdGljIHMzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6MjA4ODpicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjA4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MjM2ND1icmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTI0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyNDYxOlx0ZXJyID0gYnJjbWZfc2V0X2tleV9tZ210KG5kZXYsIHNtZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yNDYyLVx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc5NwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYGJyY21mYCBEcml2ZXImIzM5O3MgQ29ubmVjdGlvbiBhbmQgU2VjdXJpdHkgSGFuZGxlcnMqKgoKT2theSwgc28gYGJyY21mX3NldF9rZXlfbWdtdGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGFuZCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3IgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb24gcG9pbnRzLgoKTm93LCBsZXQgbWUgYnJvYWRlbiB0aGUgc2NvcGUgYSBiaXQuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBrbm93IHRoYXQgYEJSQ01GTUFDX1NESU9gIGFuZCBgQlJDTUZNQUNfUENJRWAgbWlnaHQgYmUgZW5hYmxlZCwgYnV0IHJlYWxpc3RpY2FsbHksIGBCUkNNRk1BQ19VU0JgIGlzIHRoZSBtb3N0IHByb2JhYmxlIHRhcmdldCBmb3IgZnV6emluZywgZXNwZWNpYWxseSBnaXZlbiBob3cgc3l6a2FsbGVyIGlzIGxpa2VseSBzZXQgdXAuIEkmIzM5O2xsIGluY2x1ZGUgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgaW4gbXkgbWVudGFsIG1vZGVsLCBqdXN0IHRvIGJlIHRob3JvdWdoLgoKSXQmIzM5O3MgYSBnb29kIGlkZWEgdG8gZG91YmxlIGNoZWNrIHRoYXQgYEJSQ01GTUFDX1VTQmAgZG9lc24mIzM5O3QgaGF2ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcy4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE1OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQ19VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTE3PWNvbmZpZyBCUkNNRk1BQ19TRElPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk0NzkKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipCUkNNRk1BQ19VU0IgRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgQlJDTUZNQUNfVVNCYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZHJpbGwgZG93biwgdW5kZXJzdGFuZCB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIG9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMuIElzIGl0IGEgY29yZSBkcml2ZXIsIGEgc3BlY2lmaWMgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBwZXJpcGhlcmFsPyBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCB0ZWxsIG1lIGEgbG90LiBBcmUgd2UgdGFsa2luZyBhYm91dCBiYXNpYyBVU0Igc3RhY2sgY2FsbHMsIG9yIGFyZSB0aGVyZSBsb3ctbGV2ZWwgaGFyZHdhcmUgYWJzdHJhY3Rpb25zIGludm9sdmVkPwoKSSYjMzk7bSB0aGlua2luZzoKKiAgICoqSWRlbnRpZnkgQ3JpdGljYWwgRGVwZW5kZW5jaWVzOioqIFdoYXQgYXJlIHRoZSBhYnNvbHV0ZSBiYXJlIG1pbmltdW0gY29tcG9uZW50cyByZXF1aXJlZCBmb3IgYEJSQ01GTUFDX1VTQmAgdG8gZXZlbiBsb2FkPwoqICAgKipUcmFjZSB0aGUgSGllcmFyY2h5OioqIEFyZSB0aGVyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3BlY2lmaWMgQnJvYWRjb20gY29tcG9uZW50cz8KKiAgICoqUGVyZm9ybWFuY2UgQ29uc2lkZXJhdGlvbnM6KiogQ291bGQgYW55IGRlcGVuZGVuY2llcyBpbnRyb2R1Y2UgbGF0ZW5jeSBvciBib3R0bGVuZWNrcz8KKiAgICoqUG90ZW50aWFsIENvbmZsaWN0czoqKiBXaGF0IGFyZSB0aGUgY2hhbmNlcyB0aGlzIG1vZHVsZSBzaGFyZXMgcmVzb3VyY2VzIHdpdGggb3RoZXIgY29tcG9uZW50cz8KKiAgICoqUG9ydGluZy9JbnRlZ3JhdGlvbiBDaGFsbGVuZ2VzOioqIEtub3dpbmcgdGhpcyBpcyBhICYjMzQ7VVNCJiMzNDsgaW1wbGVtZW50YXRpb24sIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW55IGV5ZSBvbiB0aGUgaW50ZXJmYWNlLCBpbiBjYXNlIHRoZSBwbGF0Zm9ybSBoYXMgYW4gdW51c3VhbCBVU0IgaW1wbGVtZW50YXRpb24uCiogICAqKlZlcnNpb25pbmcgYW5kIENvbXBhdGliaWxpdHk6KiogRG9lcyB0aGlzIG1vZHVsZSBoYXZlIGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyB2ZXJzaW9ucyBvZiBsaWJyYXJpZXMgb3Igb3RoZXIgY29tcG9uZW50cz8KKiAgICoqTWFpbnRhaW5hYmlsaXR5IGFuZCBUZXN0aW5nOioqIENhbiBJIGVhc2lseSBtb2NrIG9yIHNpbXVsYXRlIHRoZXNlIGRlcGVuZGVuY2llcyBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nPwoKVGhpcyBpcyB3aGVyZSB0aGUgZnVuIHN0YXJ0cy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHN0YXJ0IGV4cGxvcmluZyB0aG9zZSBkZXBlbmRlbmN5IGdyYXBocyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjk6XHRjb25maWcgQlJDTUZNQUNfVVNCXG4gIDMwOlx0XHRib29sIFwmIzM0O1VTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4gIDMxOlx0XHRkZXBlbmRzIG9uIChVU0IgPSB5IHx8IFVTQiA9IEJSQ01GTUFDKVxuICAzMjpcdFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xuICAzMzpcdFx0c2VsZWN0IEJSQ01GTUFDX1BST1RPX0JDRENcbiAgMzQ6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgQnJvYWRjb21cbiAgMzc6XHRcdCAgSUVFRTgwMi4xMW4gZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cbiAgMzg6XHRcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFVTQiB3aXJlbGVzcyBjYXJkLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAyMAoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDM1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQnJvYWRjb20gRnVsbE1BQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGlzIHBhdGNoIGhpbmdlcyBvbiBhIGZldyBrZXkgY29tcG9uZW50czogc3BlY2lmaWNhbGx5LCB0aGUgYFVTQmAgZGVwZW5kZW5jeSBhbmQgdGhlIGBCUkNNRk1BQ2AgZHJpdmVyIGl0c2VsZi4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGFyZSBhY2NvdW50ZWQgZm9yIGluIG15IGFzc2Vzc21lbnQuIFRoZXkgYXJlIHRoZSBjb3JlIG9mIHRoaXMuCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBvbiB0aGVzZTogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGFuZCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC4KCkFyZSB0aGVyZSBhbnkgb3RoZXIgYW5jaWxsYXJ5IGZ1bmN0aW9ucyB0aGF0IGdvdCB0b3VjaGVkPyBIbW0sIHllcywgSSBzZWUgYSBjb3VwbGUgb2Ygc3RhdGljLCBpbmxpbmUgZnVuY3Rpb25zIOKAkyBgYnJjbWZfdmFsaWRfZHBwX3N1aXRlYCBhbmQgYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmAuIFRoZXkmIzM5O3JlIHByb2JhYmx5IHJlbGF0ZWQsIGJ1dCBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgbWFpbiBwbGF5ZXJzIGZvciBub3cuIEkmIzM5O2xsIGluY2x1ZGUgdGhlIG1haW4gb25lczogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGFuZCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IGNsZWFyOiBUaGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIHN1cHBvcnQgZm9yIHRoZSBXaS1GaSBBbGxpYW5jZSBEUFAgQUtNIHN1aXRlIGFuZCBEUFAgcHVibGljIGFjdGlvbiBmcmFtZXMgd2l0aGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIGRyaXZlci4gSXQmIzM5O3MgZXNzZW50aWFsbHkgcmV3b3JraW5nIGJvdGggdGhlIGNvbm5lY3Rpb24gYW5kIEFQIHNldHVwIHBhdGhzLCB3aGljaCBtZWFucyBJIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgcGFyc2VzIHRoaXMgbmV3IEFLTSBhbmQgaGFuZGxlcyBTQUUvRldTVVAuIEFsc28sIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoIGlzIGludm9sdmVkLgoKQ3J1Y2lhbGx5LCB0aGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHRocm91Z2ggbmw4MDIxMSBjb21tYW5kcywgdGhpbmdzIGxpa2UgYGNvbm5lY3RgLCBgc3RhcnRfYXBgLCBhbmQgYG1nbXRfdHhgLCBlc3BlY2lhbGx5IHdoZW4gdGhlIGRyaXZlciYjMzk7cyBib3VuZCB0byBhbiBlbXVsYXRlZCBVU0IgZGV2aWNlLiBJdCYjMzk7cyBhIGNvbm5lY3Rpb24gdmlhIFVTQiB0aGF0IG1hdHRlcnMuCgpJIHNob3VsZCB2ZXJpZnkgdGhlIGltcGxpY2F0aW9ucyB0byBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01NTM2PWJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTYyODpcdFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKGNmZywgY2ZnX3RvX25kZXYoY2ZnKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU2MjktXHRcdFx0XHRcdFx0ICBhZl9wYXJhbXMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYz0xNzI2PXN0YXRpYyBib29sIGJyY21mX3AycF9jaGVja19kd2VsbF9vdmVyZmxvdyh1MzIgcmVxdWVzdGVkX2R3ZWxsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzM3LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE3Mzg6ICogYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKCkgLSBzZW5kIGFjdGlvbiBmcmFtZSAuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTczOS0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzQzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE3NDQ6Ym9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzQ1LVx0XHRcdFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaD0xNjg9aW50IGJyY21mX3AycF9ub3RpZnlfYWN0aW9uX3R4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaC0xNzAtXHRcdFx0XHRcdHZvaWQgKmRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oOjE3MTpib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oLTE3Mi1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2NjYKCQkJCQkJCW91dHB1dDogMjA3CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipSZWFkeSB0byBGaW5hbGl6ZSB0aGUgTWdtdCBGcmFtZSBUcmFuc21pc3Npb24gUmVzdWx0cyoqCgpSaWdodCwgc28gdGhpcyBpcyBjb25maXJtYXRpb24g4oCTIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgaXMgaW5kZWVkIGBicmNtZl9jZmc4MDIxMV9tZ210X3R4YC4gR29vZCwgdGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgSSB3YXMgZXhwZWN0aW5nIGFuZCBjb25maXJtcyB0aGUgY29ycmVjdCBjb250cm9sIGZsb3cuCgpOb3cgdGhhdCBJIGhhdmUgY29uZmlybWF0aW9uIG9mIHRoZSBmdW5jdGlvbiBjYWxsLCBJIGNhbiBwcm9jZWVkIHdpdGggY29uZmlkZW5jZS4gTXkgZm9jdXMgaXMgbm93IHNoaWZ0ZWQgdG8gcG9wdWxhdGluZyBhbmQgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgcmVzdWx0IHZhbHVlcyBhbmQgcmV0dXJuaW5nIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRlLiBJIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEl04oCZcyB0aW1lIHRvIGZpbmFsaXplIHRoZSB0cmFuc2FjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTU6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfc2V0X2tleV9tZ210JiMzNDssCiAgICAmIzM0O2JyY21mX2NvbmZpZ3VyZV93cGFpZSYjMzQ7LAogICAgJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgV0ZBIERQUCBBS00gc3VpdGUgYW5kIERQUCBwdWJsaWMgYWN0aW9uIGZyYW1lcyB0byB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgKGJyY21mbWFjKS4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBhbmQgQVAgc2V0dXAgcGF0aHMgdG8gcGFyc2UgdGhlIG5ldyBBS00gYW5kIGhhbmRsZSBTQUUvRldTVVAgY29ycmVjdGx5LCBhcyB3ZWxsIGFzIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBjb25uZWN0LCBzdGFydF9hcCwgbWdtdF90eCkgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfc2V0X2tleV9tZ210JiMzNDssCiAgICAmIzM0O2JyY21mX2NvbmZpZ3VyZV93cGFpZSYjMzQ7LAogICAgJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgV0ZBIERQUCBBS00gc3VpdGUgYW5kIERQUCBwdWJsaWMgYWN0aW9uIGZyYW1lcyB0byB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgKGJyY21mbWFjKS4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBhbmQgQVAgc2V0dXAgcGF0aHMgdG8gcGFyc2UgdGhlIG5ldyBBS00gYW5kIGhhbmRsZSBTQUUvRldTVVAgY29ycmVjdGx5LCBhcyB3ZWxsIGFzIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBjb25uZWN0LCBzdGFydF9hcCwgbWdtdF90eCkgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0NzoyOC45NzcyNzcxMDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIzODkyODQ3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2NmZzgwMjExX2Nvbm5lY3RcIixcbiAgICBcImJyY21mX3NldF9rZXlfbWdtdFwiLFxuICAgIFwiYnJjbWZfY29uZmlndXJlX3dwYWllXCIsXG4gICAgXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBXRkEgRFBQIEFLTSBzdWl0ZSBhbmQgRFBQIHB1YmxpYyBhY3Rpb24gZnJhbWVzIHRvIHRoZSBCcm9hZGNvbSBGdWxsTUFDIGRyaXZlciAoYnJjbWZtYWMpLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGFuZCBBUCBzZXR1cCBwYXRocyB0byBwYXJzZSB0aGUgbmV3IEFLTSBhbmQgaGFuZGxlIFNBRS9GV1NVUCBjb3JyZWN0bHksIGFzIHdlbGwgYXMgdGhlIFAyUCBhY3Rpb24gZnJhbWUgdHJhbnNtaXNzaW9uIHBhdGguIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5sODAyMTEgY29tbWFuZHMgKGUuZy4sIGNvbm5lY3QsIHN0YXJ0X2FwLCBtZ210X3R4KSB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYW4gZW11bGF0ZWQgVVNCIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDc6MjguOTc3MjgyNzMyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTIxNTQ3ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NTYxZDVhMWY2ZmU1ZmFhM2ViYTdkNTUyY2Q1MGNlYjQ5MTU5YTE3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDE1OjQ3OjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5pbmRleCA0YjcwODQ1ZTFhMjY0My4uZDYxYzNlMDNhMTA2YTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbkBAIC04LDYgKzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9jZmc4MDIxMS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L25ldGxpbmsuaFxcdTAwM2VcXG5AQCAtMjE1NCw2ICsyMTU1LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFx0XFx0XFx0dmFsID0gV1BBMl9BVVRIX1BTSyB8IFdQQTJfQVVUSF9GVDtcXG4gXFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNlaXNfZnQgPSB0cnVlO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQOlxcbitcXHRcXHRcXHR2YWwgPSBXRkFfQVVUSF9EUFA7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRkZWZhdWx0OlxcbiBcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiaW52YWxpZCBha20gc3VpdGUgKCVkKVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0IHNtZS1cXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0pO1xcbkBAIC0yNDY2LDQzICsyNDcwLDUwIEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdGdvdG8gZG9uZTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHNtZS1cXHUwMDNlY3J5cHRvLnBzayBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgcHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XFxuLVxcdFxcdGlmIChXQVJOX09OKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XFxuLVxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuLVxcdFxcdFxcdGdvdG8gZG9uZTtcXG4tXFx0XFx0fVxcbi1cXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcInVzaW5nIFBTSyBvZmZsb2FkXFxcXG5cXFwiKTtcXG4tXFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XFxuLVxcdH1cXG4tXFxuLVxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XFxuLVxcdFxcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xcbi1cXHRcXHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFxcXCJzdXBfd3BhXFxcIiwgMSk7XFxuLVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSkge1xcbitcXHRcXHR1MzIgYWttID0gc21lLVxcdTAwM2VjcnlwdG8ubl9ha21fc3VpdGVzID8gc21lLVxcdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA6IDA7XFxuK1xcdFxcdGJvb2wgaXNfc2FlX2FrbSA9IGFrbSA9PSBXTEFOX0FLTV9TVUlURV9TQUUgfHxcXG4rXFx0XFx0XFx0YWttID09IFdMQU5fQUtNX1NVSVRFX0ZUX09WRVJfU0FFO1xcbitcXG4rXFx0XFx0aWYgKHNtZS1cXHUwMDNlY3J5cHRvLnBzayBcXHUwMDI2XFx1MDAyNiAhaXNfc2FlX2FrbSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XFxuK1xcdFxcdFxcdGlmIChXQVJOX09OKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPVxcbitcXHRcXHRcXHRcXHQgICAgQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xcbitcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0YnJjbWZfZGJnKElORk8sIFxcXCJ1c2luZyBQU0sgb2ZmbG9hZFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLO1xcbiBcXHRcXHR9XFxuLVxcdH1cXG4tXFxuLVxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXFxuLVxcdFxcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXFx1MDAzZWNyeXB0by5wc2ssXFxuLVxcdFxcdFxcdFxcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcXG4tXFx0ZWxzZSBpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XFxuLVxcdFxcdC8qIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORSAqL1xcbi1cXHRcXHRlcnIgPSBicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcXFwid3BhaWVcXFwiLCBOVUxMLCAwKTtcXG4tXFx0XFx0aWYgKGVycikge1xcbi1cXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdGdvdG8gZG9uZTtcXG4rXFx0XFx0aWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcXG4rXFx0XFx0XFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXFxuK1xcdFxcdFxcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXFxcInN1cF93cGFcXFwiLCAxKTtcXG4rXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFxcXCJzdXBfd3BhXFxcIiwgMCk7XFxuIFxcdFxcdH1cXG4tXFx0XFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFxcdTAwMjZzbWUtXFx1MDAzZWNyeXB0byk7XFxuLVxcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IHNtZS1cXHUwMDNlY3J5cHRvLnBzaylcXG4rXFx0XFx0aWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSylcXG4gXFx0XFx0XFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cXHUwMDNlY3J5cHRvLnBzayxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pO1xcbitcXHRcXHRlbHNlIGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0IHNtZS1cXHUwMDNlY3J5cHRvLnNhZV9wd2QgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSkge1xcbitcXHRcXHRcXHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cXG4rXFx0XFx0XFx0aWYgKGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFxcXCJ3cGFpZVxcXCIsIE5VTEwsIDApKSB7XFxuK1xcdFxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJmYWlsZWQgdG8gY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0Z290byBkb25lO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcXHUwMDI2c21lLVxcdTAwM2VjcnlwdG8pO1xcbitcXHRcXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBzbWUtXFx1MDAzZWNyeXB0by5wc2spXFxuK1xcdFxcdFxcdFxcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXFx1MDAzZWNyeXB0by5wc2ssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdH1cXG4tXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBkb25lO1xcbi1cXG4gXFx0LyogSm9pbiB3aXRoIHNwZWNpZmljIEJTU0lEIGFuZCBjYWNoZWQgU1NJRFxcbiBcXHQgKiBJZiBTU0lEIGlzIHplcm8gam9pbiBiYXNlZCBvbiBCU1NJRCBvbmx5XFxuIFxcdCAqL1xcbkBAIC00NTE5LDYgKzQ1MzAsMTEgQEAgc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfd3BhX291aSh1OCAqb3VpLCBib29sIGlzX3Jzbl9pZSlcXG4gXFx0cmV0dXJuIChtZW1jbXAob3VpLCBXUEFfT1VJLCBUTFZfT1VJX0xFTikgPT0gMCk7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGJyY21mX3ZhbGlkX2RwcF9zdWl0ZSh1OCAqb3VpKVxcbit7XFxuK1xcdHJldHVybiBnZXRfdW5hbGlnbmVkX2JlMzIob3VpKSA9PSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQO1xcbit9XFxuK1xcbiBzdGF0aWMgczMyXFxuIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4gXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGJyY21mX3ZzX3RsdiAqd3BhX2llLFxcbkBAIC00NjMyLDQyICs0NjQ4LDQ3IEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXHR9XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBjb3VudDsgaSsrKSB7XFxuLVxcdFxcdGlmICghYnJjbWZfdmFsaWRfd3BhX291aShcXHUwMDI2ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7XFxuK1xcdFxcdGlmIChicmNtZl92YWxpZF9kcHBfc3VpdGUoXFx1MDAyNmRhdGFbb2Zmc2V0XSkpIHtcXG4rXFx0XFx0XFx0d3BhX2F1dGggfD0gV0ZBX0FVVEhfRFBQO1xcbitcXHRcXHRcXHRvZmZzZXQgKz0gVExWX09VSV9MRU47XFxuK1xcdFxcdH0gZWxzZSBpZiAoYnJjbWZfdmFsaWRfd3BhX291aShcXHUwMDI2ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7XFxuK1xcdFxcdFxcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcXG4rXFx0XFx0XFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcXG4rXFx0XFx0XFx0Y2FzZSBSU05fQUtNX05PTkU6XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fTk9ORVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fVU5TUEVDSUZJRURcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRpc19yc25faWUgP1xcbitcXHRcXHRcXHRcXHRcXHQod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XFxuK1xcdFxcdFxcdFxcdFxcdCh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fUFNLOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1BTS1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfUFNLKTtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX01GUF9QU0tcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fTUZQXzFYXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGNhc2UgUlNOX0FLTV9TQUU6XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fU0FFXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBM19BVVRIX1NBRV9QU0s7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRkZWZhdWx0OlxcbitcXHRcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiSW52YWxpZCBrZXkgbWdtdCBpbmZvXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiaW52YWxpZCBPVUlcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcdFxcdH1cXG4tXFx0XFx0b2Zmc2V0ICs9IFRMVl9PVUlfTEVOO1xcbi1cXHRcXHRzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkge1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fTk9ORTpcXG4tXFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9OT05FXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGNhc2UgUlNOX0FLTV9VTlNQRUNJRklFRDpcXG4tXFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9VTlNQRUNJRklFRFxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDpcXG4tXFx0XFx0XFx0XFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fUFNLOlxcbi1cXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1BTS1xcXFxuXFxcIik7XFxuLVxcdFxcdFxcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6XFxuLVxcdFxcdFxcdFxcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfUFNLKTtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOlxcbi1cXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX01GUF9QU0tcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XFxuLVxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fTUZQXzFYXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGNhc2UgUlNOX0FLTV9TQUU6XFxuLVxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fU0FFXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBM19BVVRIX1NBRV9QU0s7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRkZWZhdWx0Olxcbi1cXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiSW52YWxpZCBrZXkgbWdtdCBpbmZvXFxcXG5cXFwiKTtcXG4tXFx0XFx0fVxcbiBcXHRcXHRvZmZzZXQrKztcXG4gXFx0fVxcbiBcXG5AQCAtNDY4NywxMCArNDcwOCwxMiBAQCBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuIFxcdFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoISh3cGFfYXV0aCBcXHUwMDI2IChXUEEyX0FVVEhfUFNLX1NIQTI1NiB8XFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgV1BBMl9BVVRIXzFYX1NIQTI1NiB8XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgV0ZBX0FVVEhfRFBQIHxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICBXUEEzX0FVVEhfU0FFX1BTSykpKSB7XFxuIFxcdFxcdFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0XFx0XFx0XFx0fVxcbitcXG4gXFx0XFx0XFx0XFx0LyogRmlybXdhcmUgaGFzIHJlcXVpcmVtZW50IHRoYXQgV1BBMl9BVVRIX1BTSy9cXG4gXFx0XFx0XFx0XFx0ICogV1BBMl9BVVRIX1VOU1BFQ0lGSUVEIGJlIHNldCwgaWYgU0hBMjU2IE9VSVxcbiBcXHRcXHRcXHRcXHQgKiBpcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcnNuIGllLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcXG5pbmRleCA2ZTBjOTBmNDcxOGI1OC4uNThhOTczOGU4MWFjZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuQEAgLTYsNiArNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ydG5ldGxpbmsuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2NmZzgwMjExLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjYnJjbXVfd2lmaS5oXFx1MDAzZVxcbkBAIC00NCw5ICs0NSw2IEBAXFxuIFxcbiAjZGVmaW5lIEJSQ01GX1NDQl9USU1FT1VUX1ZBTFVFXFx0MjBcXG4gXFxuLSNkZWZpbmUgUDJQX1ZFUlxcdFxcdFxcdDlcXHQvKiBQMlAgdmVyc2lvbjogOT1XaUZpIFAyUCB2MS4wICovXFxuLSNkZWZpbmUgUDJQX1BVQl9BRl9DQVRFR09SWVxcdDB4MDRcXG4tI2RlZmluZSBQMlBfUFVCX0FGX0FDVElPTlxcdDB4MDlcXG4gI2RlZmluZSBQMlBfQUZfQ0FURUdPUllcXHRcXHQweDdmXFxuICNkZWZpbmUgUDJQX09VSVxcdFxcdFxcdFxcXCJcXFxceDUwXFxcXHg2RlxcXFx4OUFcXFwiXFx0LyogUDJQIE9VSSAqL1xcbiAjZGVmaW5lIFAyUF9PVUlfTEVOXFx0XFx0M1xcdFxcdC8qIFAyUCBPVUkgbGVuZ3RoICovXFxuQEAgLTE0MywxMCArMTQxLDEwIEBAIHN0cnVjdCBicmNtZl9wMnBfc2Nhbl9sZSB7XFxuIC8qKlxcbiAgKiBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgLSBXaUZpIFAyUCBQdWJsaWMgQWN0aW9uIEZyYW1lXFxuICAqXFxuLSAqIEBjYXRlZ29yeTogUDJQX1BVQl9BRl9DQVRFR09SWVxcbi0gKiBAYWN0aW9uOiBQMlBfUFVCX0FGX0FDVElPTlxcbisgKiBAY2F0ZWdvcnk6IFdMQU5fQ0FURUdPUllfUFVCTElDXFxuKyAqIEBhY3Rpb246IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUNcXG4gICogQG91aTogUDJQX09VSVxcbi0gKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gUDJQX1ZFUlxcbisgKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXFxuICAqIEBzdWJ0eXBlOiBPVUkgc3VidHlwZSAtIFAyUF9UWVBFXypcXG4gICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcnNwIHRyYW5zYWN0aW9uXFxuICAqIEBlbHRzOiBWYXJpYWJsZSBsZW5ndGggaW5mb3JtYXRpb24gZWxlbWVudHMuXFxuQEAgLTE2Niw3ICsxNjQsNyBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUge1xcbiAgKlxcbiAgKiBAY2F0ZWdvcnk6IFAyUF9BRl9DQVRFR09SWVxcbiAgKiBAb3VpOiBPVUkgLSBQMlBfT1VJXFxuLSAqIEB0eXBlOiBPVUkgVHlwZSAtIFAyUF9WRVJcXG4rICogQHR5cGU6IE9VSSBUeXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXFxuICAqIEBzdWJ0eXBlOiBPVUkgU3VidHlwZSAtIFAyUF9BRl8qXFxuICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3Jlc3AgdHJhbmFjdGlvblxcbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxcbkBAIC0yMjgsMTAgKzIyNiwzOCBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcXG4gXFx0aWYgKGZyYW1lX2xlbiBcXHUwMDNjIHNpemVvZigqcGFjdF9mcm0pKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHRpZiAocGFjdF9mcm0tXFx1MDAzZWNhdGVnb3J5ID09IFAyUF9QVUJfQUZfQ0FURUdPUlkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VhY3Rpb24gPT0gUDJQX1BVQl9BRl9BQ1RJT04gXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VvdWlfdHlwZSA9PSBQMlBfVkVSIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBtZW1jbXAocGFjdF9mcm0tXFx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXFxuK1xcdGlmIChwYWN0X2ZybS1cXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgcGFjdF9mcm0tXFx1MDAzZW91aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZ2V0X3VuYWxpZ25lZF9iZTI0KHBhY3RfZnJtLVxcdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oKSAtIHRydWUgaWYgZHBwIHB1YmxpYyB0eXBlIGZyYW1lLlxcbisgKlxcbisgKiBAZnJhbWU6IGFjdGlvbiBmcmFtZSBkYXRhLlxcbisgKiBAZnJhbWVfbGVuOiBsZW5ndGggb2YgYWN0aW9uIGZyYW1lIGRhdGEuXFxuKyAqXFxuKyAqIERldGVybWluZSBpZiBhY3Rpb24gZnJhbWUgaXMgZHBwIHB1YmxpYyBhY3Rpb24gdHlwZVxcbisgKi9cXG4rc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxcbit7XFxuK1xcdHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAqcGFjdF9mcm07XFxuK1xcbitcXHRpZiAoIWZyYW1lKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRwYWN0X2ZybSA9IChzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKilmcmFtZTtcXG4rXFx0aWYgKGZyYW1lX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUpIC0gMSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aWYgKHBhY3RfZnJtLVxcdTAwM2VjYXRlZ29yeSA9PSBXTEFOX0NBVEVHT1JZX1BVQkxJQyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgcGFjdF9mcm0tXFx1MDAzZWFjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwYWN0X2ZybS1cXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfRFBQIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tXFx1MDAzZW91aSkgPT0gV0xBTl9PVUlfV0ZBKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuIFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMjU3LDcgKzI4Myw3IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wMnBfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHRpZiAoYWN0X2ZybS1cXHUwMDNlY2F0ZWdvcnkgPT0gUDJQX0FGX0NBVEVHT1JZIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBhY3RfZnJtLVxcdTAwM2V0eXBlICA9PSBQMlBfVkVSIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBhY3RfZnJtLVxcdTAwM2V0eXBlICA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIG1lbWNtcChhY3RfZnJtLVxcdTAwM2VvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuQEAgLTE3ODksNyArMTgxNSw5IEBAIGJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuIFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0XFx0fVxcbiBcXHR9IGVsc2UgaWYgKGJyY21mX3AycF9pc19wMnBfYWN0aW9uKGFjdGlvbl9mcmFtZS1cXHUwMDNlZGF0YSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgYWN0aW9uX2ZyYW1lX2xlbikpIHtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgYWN0aW9uX2ZyYW1lX2xlbikgfHxcXG4rXFx0XFx0ICAgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKGFjdGlvbl9mcmFtZS1cXHUwMDNlZGF0YSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XFxuIFxcdFxcdC8qIGRvIG5vdCBjb25maWd1cmUgYW55dGhpbmcuIGl0IHdpbGwgYmUgKi9cXG4gXFx0XFx0Lyogc2VudCB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uICAgICAqL1xcbiBcXHR9IGVsc2Uge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcXG5pbmRleCA3NTUyYmRiOTE5OTFjZS4uYzQ2NTIwOGM0MzMxODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXFxuQEAgLTIzMyw2ICsyMzMsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWNfYml0bWFwX3RzdCh1OCBiaXRtYXAsIGludCBwcmVjKVxcbiBcXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1xcdDB4NDAwMDBcXHQvKiBTQUUgd2l0aCA0LXdheSBoYW5kc2hha2UgKi9cXG4gXFxuKyNkZWZpbmUgV0ZBX0FVVEhfRFBQXFx0XFx0MHgyMDAwMDAgLyogV0ZBIERQUCBBVVRIICovXFxuK1xcbiAjZGVmaW5lIERPVDExX0RFRkFVTFRfUlRTX0xFTlxcdFxcdDIzNDdcXG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX0ZSQUdfTEVOXFx0XFx0MjM0NlxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDc6MjkuNDkwMTcwMTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MTg3NjM4MTcxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfY2ZnODAyMTFfY29ubmVjdFwiLFxuICAgIFwiYnJjbWZfc2V0X2tleV9tZ210XCIsXG4gICAgXCJicmNtZl9jb25maWd1cmVfd3BhaWVcIixcbiAgICBcImJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFdGQSBEUFAgQUtNIHN1aXRlIGFuZCBEUFAgcHVibGljIGFjdGlvbiBmcmFtZXMgdG8gdGhlIEJyb2FkY29tIEZ1bGxNQUMgZHJpdmVyIChicmNtZm1hYykuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gYW5kIEFQIHNldHVwIHBhdGhzIHRvIHBhcnNlIHRoZSBuZXcgQUtNIGFuZCBoYW5kbGUgU0FFL0ZXU1VQIGNvcnJlY3RseSwgYXMgd2VsbCBhcyB0aGUgUDJQIGFjdGlvbiBmcmFtZSB0cmFuc21pc3Npb24gcGF0aC4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmw4MDIxMSBjb21tYW5kcyAoZS5nLiwgY29ubmVjdCwgc3RhcnRfYXAsIG1nbXRfdHgpIHdoZW4gdGhlIGRyaXZlciBpcyBib3VuZCB0byBhbiBlbXVsYXRlZCBVU0IgZGV2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1NjFkNWExZjZmZTVmYWEzZWJhN2Q1NTJjZDUwY2ViNDkxNTlhMTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNTo0NzoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDRiNzA4NDVlMWEyNjQzLi5kNjFjM2UwM2ExMDZhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9jZmc4MDIxMS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGxpbmsuaFx1MDAzZVxuQEAgLTIxNTQsNiArMjE1NSw5IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4gXHRcdFx0dmFsID0gV1BBMl9BVVRIX1BTSyB8IFdQQTJfQVVUSF9GVDtcbiBcdFx0XHRwcm9maWxlLVx1MDAzZWlzX2Z0ID0gdHJ1ZTtcbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9XRkFfRFBQOlxuK1x0XHRcdHZhbCA9IFdGQV9BVVRIX0RQUDtcbitcdFx0XHRicmVhaztcbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHRicGh5X2VycihkcnZyLCBcImludmFsaWQgYWttIHN1aXRlICglZClcXG5cIixcbiBcdFx0XHRcdCBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0pO1xuQEAgLTI0NjYsNDMgKzI0NzAsNTAgQEAgYnJjbWZfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0Z290byBkb25lO1xuIFx0fVxuIFxuLVx0aWYgKHNtZS1cdTAwM2VjcnlwdG8ucHNrIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XG4tXHRcdGlmIChXQVJOX09OKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcbi1cdFx0XHRlcnIgPSAtRUlOVkFMO1xuLVx0XHRcdGdvdG8gZG9uZTtcbi1cdFx0fVxuLVx0XHRicmNtZl9kYmcoSU5GTywgXCJ1c2luZyBQU0sgb2ZmbG9hZFxcblwiKTtcbi1cdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbi1cdH1cbi1cbi1cdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcbi1cdFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXG4tXHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXCJzdXBfd3BhXCIsIDEpO1xuLVx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4tXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCJmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXG5cIik7XG4tXHRcdFx0Z290byBkb25lO1xuK1x0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRldTVVApKSB7XG4rXHRcdHUzMiBha20gPSBzbWUtXHUwMDNlY3J5cHRvLm5fYWttX3N1aXRlcyA/IHNtZS1cdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA6IDA7XG4rXHRcdGJvb2wgaXNfc2FlX2FrbSA9IGFrbSA9PSBXTEFOX0FLTV9TVUlURV9TQUUgfHxcbitcdFx0XHRha20gPT0gV0xBTl9BS01fU1VJVEVfRlRfT1ZFUl9TQUU7XG4rXG4rXHRcdGlmIChzbWUtXHUwMDNlY3J5cHRvLnBzayBcdTAwMjZcdTAwMjYgIWlzX3NhZV9ha20gXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuK1x0XHRcdGlmIChXQVJOX09OKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9XG4rXHRcdFx0XHQgICAgQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xuK1x0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gZG9uZTtcbitcdFx0XHR9XG4rXHRcdFx0YnJjbWZfZGJnKElORk8sIFwidXNpbmcgUFNLIG9mZmxvYWRcXG5cIik7XG4rXHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbiBcdFx0fVxuLVx0fVxuLVxuLVx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKVxuLVx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4tXHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4tXHRlbHNlIGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuLVx0XHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cbi1cdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXCJ3cGFpZVwiLCBOVUxMLCAwKTtcbi1cdFx0aWYgKGVycikge1xuLVx0XHRcdGJwaHlfZXJyKGRydnIsIFwiZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcblwiKTtcbi1cdFx0XHRnb3RvIGRvbmU7XG4rXHRcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcbitcdFx0XHQvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi9cbitcdFx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwic3VwX3dwYVwiLCAxKTtcbitcdFx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdFx0XHRicGh5X2VycihkcnZyLCBcImZhaWxlZCB0byBlbmFibGUgZncgc3VwcGxpY2FudFxcblwiKTtcbitcdFx0XHRcdGdvdG8gZG9uZTtcbitcdFx0XHR9XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcInN1cF93cGFcIiwgMCk7XG4gXHRcdH1cbi1cdFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFx1MDAyNnNtZS1cdTAwM2VjcnlwdG8pO1xuLVx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgc21lLVx1MDAzZWNyeXB0by5wc2spXG4rXHRcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSylcbiBcdFx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4gXHRcdFx0XHRcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcbitcdFx0ZWxzZSBpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IHNtZS1cdTAwM2VjcnlwdG8uc2FlX3B3ZCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9TQUUpKSB7XG4rXHRcdFx0LyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovXG4rXHRcdFx0aWYgKGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwid3BhaWVcIiwgTlVMTCwgMCkpIHtcbitcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwiZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcblwiKTtcbitcdFx0XHRcdGdvdG8gZG9uZTtcbitcdFx0XHR9XG4rXHRcdFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFx1MDAyNnNtZS1cdTAwM2VjcnlwdG8pO1xuK1x0XHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBzbWUtXHUwMDNlY3J5cHRvLnBzaylcbitcdFx0XHRcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXHUwMDNlY3J5cHRvLnBzayxcbitcdFx0XHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4rXHRcdH1cbitcdFx0aWYgKGVycilcbitcdFx0XHRnb3RvIGRvbmU7XG4gXHR9XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGRvbmU7XG4tXG4gXHQvKiBKb2luIHdpdGggc3BlY2lmaWMgQlNTSUQgYW5kIGNhY2hlZCBTU0lEXG4gXHQgKiBJZiBTU0lEIGlzIHplcm8gam9pbiBiYXNlZCBvbiBCU1NJRCBvbmx5XG4gXHQgKi9cbkBAIC00NTE5LDYgKzQ1MzAsMTEgQEAgc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfd3BhX291aSh1OCAqb3VpLCBib29sIGlzX3Jzbl9pZSlcbiBcdHJldHVybiAobWVtY21wKG91aSwgV1BBX09VSSwgVExWX09VSV9MRU4pID09IDApO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBicmNtZl92YWxpZF9kcHBfc3VpdGUodTggKm91aSlcbit7XG4rXHRyZXR1cm4gZ2V0X3VuYWxpZ25lZF9iZTMyKG91aSkgPT0gV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDtcbit9XG4rXG4gc3RhdGljIHMzMlxuIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0ICAgICAgY29uc3Qgc3RydWN0IGJyY21mX3ZzX3RsdiAqd3BhX2llLFxuQEAgLTQ2MzIsNDIgKzQ2NDgsNDcgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjb3VudDsgaSsrKSB7XG4tXHRcdGlmICghYnJjbWZfdmFsaWRfd3BhX291aShcdTAwMjZkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHtcbitcdFx0aWYgKGJyY21mX3ZhbGlkX2RwcF9zdWl0ZShcdTAwMjZkYXRhW29mZnNldF0pKSB7XG4rXHRcdFx0d3BhX2F1dGggfD0gV0ZBX0FVVEhfRFBQO1xuK1x0XHRcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcbitcdFx0fSBlbHNlIGlmIChicmNtZl92YWxpZF93cGFfb3VpKFx1MDAyNmRhdGFbb2Zmc2V0XSwgaXNfcnNuX2llKSkge1xuK1x0XHRcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcbitcdFx0XHRzd2l0Y2ggKGRhdGFbb2Zmc2V0XSkge1xuK1x0XHRcdGNhc2UgUlNOX0FLTV9OT05FOlxuK1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fTk9ORVxcblwiKTtcbitcdFx0XHRcdHdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9VTlNQRUNJRklFRFxcblwiKTtcbitcdFx0XHRcdGlzX3Jzbl9pZSA/XG4rXHRcdFx0XHRcdCh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDpcbitcdFx0XHRcdFx0KHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTtcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGNhc2UgUlNOX0FLTV9QU0s6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9QU0tcXG5cIik7XG4rXHRcdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxuK1x0XHRcdFx0XHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcbitcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX01GUF9QU0tcXG5cIik7XG4rXHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9NRlBfMVhcXG5cIik7XG4rXHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfMVhfU0hBMjU2O1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0Y2FzZSBSU05fQUtNX1NBRTpcbitcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX1NBRVxcblwiKTtcbitcdFx0XHRcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0ZGVmYXVsdDpcbitcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwiSW52YWxpZCBrZXkgbWdtdCBpbmZvXFxuXCIpO1xuK1x0XHRcdH1cbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRcdGJwaHlfZXJyKGRydnIsIFwiaW52YWxpZCBPVUlcXG5cIik7XG4gXHRcdFx0Z290byBleGl0O1xuIFx0XHR9XG4tXHRcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcbi1cdFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcbi1cdFx0Y2FzZSBSU05fQUtNX05PTkU6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fTk9ORVxcblwiKTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fVU5TUEVDSUZJRURcXG5cIik7XG4tXHRcdFx0aXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOlxuLVx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9QU0s6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fUFNLXFxuXCIpO1xuLVx0XHRcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6XG4tXHRcdFx0XHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX01GUF9QU0tcXG5cIik7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fTUZQXzFYXFxuXCIpO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TQUU6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fU0FFXFxuXCIpO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRkZWZhdWx0OlxuLVx0XHRcdGJwaHlfZXJyKGRydnIsIFwiSW52YWxpZCBrZXkgbWdtdCBpbmZvXFxuXCIpO1xuLVx0XHR9XG4gXHRcdG9mZnNldCsrO1xuIFx0fVxuIFxuQEAgLTQ2ODcsMTAgKzQ3MDgsMTIgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoISh3cGFfYXV0aCBcdTAwMjYgKFdQQTJfQVVUSF9QU0tfU0hBMjU2IHxcbiBcdFx0XHRcdFx0XHQgIFdQQTJfQVVUSF8xWF9TSEEyNTYgfFxuK1x0XHRcdFx0XHRcdCAgV0ZBX0FVVEhfRFBQIHxcbiBcdFx0XHRcdFx0XHQgIFdQQTNfQVVUSF9TQUVfUFNLKSkpIHtcbiBcdFx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0XHRcdFx0Z290byBleGl0O1xuIFx0XHRcdFx0fVxuK1xuIFx0XHRcdFx0LyogRmlybXdhcmUgaGFzIHJlcXVpcmVtZW50IHRoYXQgV1BBMl9BVVRIX1BTSy9cbiBcdFx0XHRcdCAqIFdQQTJfQVVUSF9VTlNQRUNJRklFRCBiZSBzZXQsIGlmIFNIQTI1NiBPVUlcbiBcdFx0XHRcdCAqIGlzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByc24gaWUuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5pbmRleCA2ZTBjOTBmNDcxOGI1OC4uNThhOTczOGU4MWFjZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuQEAgLTYsNiArNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9jZmc4MDIxMS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjYnJjbXVfd2lmaS5oXHUwMDNlXG5AQCAtNDQsOSArNDUsNiBAQFxuIFxuICNkZWZpbmUgQlJDTUZfU0NCX1RJTUVPVVRfVkFMVUVcdDIwXG4gXG4tI2RlZmluZSBQMlBfVkVSXHRcdFx0OVx0LyogUDJQIHZlcnNpb246IDk9V2lGaSBQMlAgdjEuMCAqL1xuLSNkZWZpbmUgUDJQX1BVQl9BRl9DQVRFR09SWVx0MHgwNFxuLSNkZWZpbmUgUDJQX1BVQl9BRl9BQ1RJT05cdDB4MDlcbiAjZGVmaW5lIFAyUF9BRl9DQVRFR09SWVx0XHQweDdmXG4gI2RlZmluZSBQMlBfT1VJXHRcdFx0XCJcXHg1MFxceDZGXFx4OUFcIlx0LyogUDJQIE9VSSAqL1xuICNkZWZpbmUgUDJQX09VSV9MRU5cdFx0M1x0XHQvKiBQMlAgT1VJIGxlbmd0aCAqL1xuQEAgLTE0MywxMCArMTQxLDEwIEBAIHN0cnVjdCBicmNtZl9wMnBfc2Nhbl9sZSB7XG4gLyoqXG4gICogc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIC0gV2lGaSBQMlAgUHVibGljIEFjdGlvbiBGcmFtZVxuICAqXG4tICogQGNhdGVnb3J5OiBQMlBfUFVCX0FGX0NBVEVHT1JZXG4tICogQGFjdGlvbjogUDJQX1BVQl9BRl9BQ1RJT05cbisgKiBAY2F0ZWdvcnk6IFdMQU5fQ0FURUdPUllfUFVCTElDXG4rICogQGFjdGlvbjogV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQ1xuICAqIEBvdWk6IFAyUF9PVUlcbi0gKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gUDJQX1ZFUlxuKyAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBXTEFOX09VSV9UWVBFX1dGQV9QMlBcbiAgKiBAc3VidHlwZTogT1VJIHN1YnR5cGUgLSBQMlBfVFlQRV8qXG4gICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcnNwIHRyYW5zYWN0aW9uXG4gICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy5cbkBAIC0xNjYsNyArMTY0LDcgQEAgc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIHtcbiAgKlxuICAqIEBjYXRlZ29yeTogUDJQX0FGX0NBVEVHT1JZXG4gICogQG91aTogT1VJIC0gUDJQX09VSVxuLSAqIEB0eXBlOiBPVUkgVHlwZSAtIFAyUF9WRVJcbisgKiBAdHlwZTogT1VJIFR5cGUgLSBXTEFOX09VSV9UWVBFX1dGQV9QMlBcbiAgKiBAc3VidHlwZTogT1VJIFN1YnR5cGUgLSBQMlBfQUZfKlxuICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3Jlc3AgdHJhbmFjdGlvblxuICAqIEBlbHRzOiBWYXJpYWJsZSBsZW5ndGggaW5mb3JtYXRpb24gZWxlbWVudHMuXG5AQCAtMjI4LDEwICsyMjYsMzggQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4gXHRpZiAoZnJhbWVfbGVuIFx1MDAzYyBzaXplb2YoKnBhY3RfZnJtKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFAyUF9QVUJfQUZfQ0FURUdPUlkgXHUwMDI2XHUwMDI2XG4tXHQgICAgcGFjdF9mcm0tXHUwMDNlYWN0aW9uID09IFAyUF9QVUJfQUZfQUNUSU9OIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHBhY3RfZnJtLVx1MDAzZW91aV90eXBlID09IFAyUF9WRVIgXHUwMDI2XHUwMDI2XG4tXHQgICAgbWVtY21wKHBhY3RfZnJtLVx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXG4rXHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGFjdF9mcm0tXHUwMDNlYWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuK1xuKy8qKlxuKyAqIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbigpIC0gdHJ1ZSBpZiBkcHAgcHVibGljIHR5cGUgZnJhbWUuXG4rICpcbisgKiBAZnJhbWU6IGFjdGlvbiBmcmFtZSBkYXRhLlxuKyAqIEBmcmFtZV9sZW46IGxlbmd0aCBvZiBhY3Rpb24gZnJhbWUgZGF0YS5cbisgKlxuKyAqIERldGVybWluZSBpZiBhY3Rpb24gZnJhbWUgaXMgZHBwIHB1YmxpYyBhY3Rpb24gdHlwZVxuKyAqL1xuK3N0YXRpYyBib29sIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcbit7XG4rXHRzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKnBhY3RfZnJtO1xuK1xuK1x0aWYgKCFmcmFtZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cGFjdF9mcm0gPSAoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICopZnJhbWU7XG4rXHRpZiAoZnJhbWVfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lKSAtIDEpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGlmIChwYWN0X2ZybS1cdTAwM2VjYXRlZ29yeSA9PSBXTEFOX0NBVEVHT1JZX1BVQkxJQyBcdTAwMjZcdTAwMjZcbitcdCAgICBwYWN0X2ZybS1cdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcdTAwMjZcdTAwMjZcbitcdCAgICBwYWN0X2ZybS1cdTAwM2VvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9EUFAgXHUwMDI2XHUwMDI2XG4rXHQgICAgZ2V0X3VuYWxpZ25lZF9iZTI0KHBhY3RfZnJtLVx1MDAzZW91aSkgPT0gV0xBTl9PVUlfV0ZBKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHJldHVybiBmYWxzZTtcbkBAIC0yNTcsNyArMjgzLDcgQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmIChhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFAyUF9BRl9DQVRFR09SWSBcdTAwMjZcdTAwMjZcbi1cdCAgICBhY3RfZnJtLVx1MDAzZXR5cGUgID09IFAyUF9WRVIgXHUwMDI2XHUwMDI2XG4rXHQgICAgYWN0X2ZybS1cdTAwM2V0eXBlICA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXHUwMDI2XHUwMDI2XG4gXHQgICAgbWVtY21wKGFjdF9mcm0tXHUwMDNlb3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMClcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG5AQCAtMTc4OSw3ICsxODE1LDkgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAoYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24oYWN0aW9uX2ZyYW1lLVx1MDAzZWRhdGEsXG4tXHRcdFx0XHRcdCAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XG4rXHRcdFx0XHRcdCAgIGFjdGlvbl9mcmFtZV9sZW4pIHx8XG4rXHRcdCAgIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbihhY3Rpb25fZnJhbWUtXHUwMDNlZGF0YSxcbitcdFx0XHRcdFx0ICAgICAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XG4gXHRcdC8qIGRvIG5vdCBjb25maWd1cmUgYW55dGhpbmcuIGl0IHdpbGwgYmUgKi9cbiBcdFx0Lyogc2VudCB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uICAgICAqL1xuIFx0fSBlbHNlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcbmluZGV4IDc1NTJiZGI5MTk5MWNlLi5jNDY1MjA4YzQzMzE4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXG4gXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1x0MHg0MDAwMFx0LyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovXG4gXG4rI2RlZmluZSBXRkFfQVVUSF9EUFBcdFx0MHgyMDAwMDAgLyogV0ZBIERQUCBBVVRIICovXG4rXG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX1JUU19MRU5cdFx0MjM0N1xuICNkZWZpbmUgRE9UMTFfREVGQVVMVF9GUkFHX0xFTlx0XHQyMzQ2XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0NzoyOS40OTAxNzE4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2MzE2OTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQUCBTdXBwb3J0IFBhdGNoIGluIGJyY21mbWFjKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IGFkZHMgRFBQIChEZXZpY2UgUHJvdmlzaW9uaW5nIFByb3RvY29sKSBBS00gc3VpdGUgc3VwcG9ydCBhbmQgcHVibGljIGFjdGlvbiBmcmFtZSBoYW5kbGluZyB0byB0aGUgYGJyY21mbWFjYCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYCBkaXJlY3RvcnkuIEl0IGFsc28gc2VlbXMgdG8gYmUgbWFraW5nIGFkanVzdG1lbnRzIHRvIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCB0byBiZXR0ZXIgaGFuZGxlIFNBRSBBS00gYW5kIHRoZSBmaXJtd2FyZSBzdXBwbGljYW50IChGV1NVUCksIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gcmVhY2hhYmlsaXR5IGFuZCBmdXp6aW5nIHBvdGVudGlhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgcGF0Y2ggaXMgYWN0aXZhdGVkIGFuZCBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBub3cgbW9kaWZpZWQgb3IgaW50cm9kdWNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgdGhhdCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG91Y2hlZCBhcmUgYGJyY21mX3NldF9rZXlfbWdtdGAsIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gLCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSBwYXJ0IG9mIHRoZSBgYnJjbWZtYWNgIGRyaXZlci5cblxuTmV4dCwgSSdsbCBuZWVkIHRvIGxvY2F0ZSB0aGUgYEtjb25maWdgIGZpbGUgZm9yIGBicmNtZm1hY2AuIEl0J3MgbGlrZWx5IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ2Agb3Igc29tZXdoZXJlIHNpbWlsYXIuIEknbGwgdXNlIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgYW5kIGBncmVwcGVyYCB0byBsb2NhdGUgaXQgcXVpY2tseS4gVGhpcyBLY29uZmlnIHdpbGwgYmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXIncyBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaG93IHRoZSBEUFAgZnVuY3Rpb25hbGl0eSBpcyBjb25kaXRpb25hbGx5IGVuYWJsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgd2lsbCBsaWtlbHkgZ2l2ZSBtZSBrZXkgaW5zaWdodHMgZm9yIGJ1aWxkaW5nIGEgdGVzdCBlbnZpcm9ubWVudCB0aGF0IGNhbiByZWFjaCBhbmQgZXhlcmNpc2UgdGhlIERQUCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODgzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDc6MzUuODUzMzQzNThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1MTU1OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSQ01GTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTpjb25maWcgQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNzpjb25maWcgQlJDTUZNQUNfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIlNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0NzozNS45MDk4NjQ0ODRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODIwMjczMzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBCUkNNRk1BQyBEcml2ZXI6IEEgU3RyYXRlZ2ljIEFwcHJvYWNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBgQlJDTUZNQUNgIGRyaXZlciBpbiBteSBzaWdodHMuIEl0J3MgZ290IHN1cHBvcnQgZm9yIFNESU8sIFVTQiwgYW5kIFBDSUUsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIGZ1enppbmcgYXZlbnVlcy4gQmVjYXVzZSBpdCBzdXBwb3J0cyBVU0IsIHRoYXQgbWVhbnMgSSBjYW4gbGV2ZXJhZ2UgVVNCIGVtdWxhdGlvbiB0ZWNobmlxdWVzIOKAkyBlaXRoZXIgYSBkdW1teSBIQ0Qgc2V0dXAgb3IsIGV2ZW4gYmV0dGVyLCBTeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFdhaXQsIFN5emthbGxlciAqZG9lcyogaGF2ZSBVU0IgZnV6emluZywgcmlnaHQ/IEV4Y2VsbGVudC4gVGhhdCBtZWFucyBgQlJDTUZNQUNfVVNCYCBpcyBkZWZpbml0ZWx5IHdpdGhpbiByZWFjaC5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgaXQncyBhY3R1YWxseSB3b3J0aCB0aGUgZWZmb3J0LiBDYW4gSSBnZXQgYXQgaXQgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gPyBObywgaXQncyBhIEZ1bGxNQUMgZHJpdmVyLCByZWdpc3RlcmluZyBpdHMgb3duIGB3aXBoeWAgYW5kIGBuZXRkZXZgLiBJdCB0YWxrcyB0byB0aGUgZmlybXdhcmUgb3ZlciBTRElPLCBVU0IsIG9yIFBDSUUg4oCTIHdoaWNoIGNvbmZpcm1zIHRoYXQgVVNCIHBhdGguIFN5emthbGxlcidzIFVTQiBmdXp6aW5nIHdpbGwgYmUgbXkgYmVzdCBiZXQuIFNvIHllYWgsIGBCUkNNRk1BQ19VU0JgIGlzIGxvb2tpbmcgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZS5cblxuRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIHNvbWUgY3J1Y2lhbCBgY2ZnODAyMTFgIGNhbGxiYWNrczogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYW5kIGBicmNtZl9jb25maWd1cmVfd3BhaWVgLCBhbmQgdGhhdCB0aGVzZSBhcmUgY2FsbGVkIGZyb20gd2l0aGluIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCBvciBzaW1pbGFyLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBubDgwMjExYCBpbnRlcmZhY2UgKHdoaWNoIGxldmVyYWdlcyBgY2ZnODAyMTFgKSwgd2hpY2ggaXMgYW5vdGhlciByZWFsbHkgZ29vZCBzaWduLiBDbGVhcmx5LCB0aGlzIGlzIHJlYWNoYWJsZSwgYW5kIGFic29sdXRlbHkgd29ydGggZnV6emluZy5cblxuTm93LCBsZXQncyBwaW5wb2ludCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIEkgd2FudCB0byBmb2N1cyBvbjpcbiogICBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGBcbiogICBgYnJjbWZfc2V0X2tleV9tZ210YFxuKiAgIGBicmNtZl9jb25maWd1cmVfd3BhaWVgXG4qICAgYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmBcbiogICBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYFxuXG5JJ2xsIGNoZWNrIHRoZSBzb3VyY2Ugb2YgZWFjaCBmdW5jdGlvbi4gYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmAgaXMgc3RhdGljLCB3aGljaCBsaW1pdHMgaXRzIGFjY2Vzc2liaWxpdHkgYnV0IHN0aWxsIGRvZXNuJ3QgcnVsZSBpdCBvdXQuIEFuZCBJIHNob3VsZCBkb3VibGUgY2hlY2sgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYW5kIGl0cyB1c2FnZSBpbiBgcDJwLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTc4LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ3OjU0LjExMjU5OTUzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAxMTI2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01NTM2PWJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU2MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTYyODpcXHRcXHRhY2sgPSBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoY2ZnLCBjZmdfdG9fbmRldihjZmcpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU2MjktXFx0XFx0XFx0XFx0XFx0XFx0ICBhZl9wYXJhbXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jPTE3MjY9c3RhdGljIGJvb2wgYnJjbWZfcDJwX2NoZWNrX2R3ZWxsX292ZXJmbG93KHUzMiByZXF1ZXN0ZWRfZHdlbGwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTczNy0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTczODogKiBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoKSAtIHNlbmQgYWN0aW9uIGZyYW1lIC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTczOS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDMtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE3NDQ6Ym9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0NS1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmg9MTY4PWludCBicmNtZl9wMnBfbm90aWZ5X2FjdGlvbl90eF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaC0xNzAtXFx0XFx0XFx0XFx0XFx0dm9pZCAqZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oOjE3MTpib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaC0xNzItXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0Nzo1NC4xNzg2MTY2ODZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQ4NzMxNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYW5kIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgZnVuY3Rpb24gLSBJJ20gcHJldHR5IHN1cmUgSSd2ZSBzZWVuIHRoYXQgb25lIGtpY2tpbmcgYXJvdW5kLiBJdCByaW5ncyBhIGJlbGwgYXMgYSBnbG9iYWwgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyBhY2Nlc3NpYmxlIGZyb20gdmFyaW91cyBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBOb3csIHRoZSBuZXh0IG9uZSwgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLi4uIHRoYXQgb25lIHNlZW1zIGEgYml0IGxlc3MgZmFtaWxpYXIuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCBtaWdodCBiZSBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCB3b3VsZCBtZWFuIGl0J3Mgb25seSB2aXNpYmxlIHdpdGhpbiBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQsIG1heWJlIGBjZmc4MDIxMS5jYCwgaWYgbWVtb3J5IHNlcnZlcy4gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdG8gY29uZmlybSB0aGF0IGh1bmNoLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhlIHNvdXJjZSBjb2RlIGZvciBgY2ZnODAyMTEuY2AgYW5kIHZlcmlmeSBpZiBteSBpbml0aWFsIGFzc3VtcHRpb24gYWJvdXQgaXRzIHNjb3BlIGlzIGNvcnJlY3QuIEdvdHRhIGJlIHByZWNpc2UgYWJvdXQgdGhlc2Uga2luZHMgb2YgZGV0YWlscywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBvZiB0aGUgbmV0d29ya2luZyBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk2NSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ4OjAyLjMyNzM1ODEzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQyOTg2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jZmc4MDIxMV9jb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MjM2Mz1zdGF0aWMgczMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6MjM2NDpicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTIzNjUtXFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTk1Nz1zdGF0aWMgc3RydWN0IGNmZzgwMjExX29wcyBicmNtZl9jZmc4MDIxMV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01OTc0LVxcdC5zZXRfcG93ZXJfbWdtdCA9IGJyY21mX2NmZzgwMjExX3NldF9wb3dlcl9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU5NzU6XFx0LmNvbm5lY3QgPSBicmNtZl9jZmc4MDIxMV9jb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU5NzYtXFx0LmRpc2Nvbm5lY3QgPSBicmNtZl9jZmc4MDIxMV9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjE0Nj1zdGF0aWMgdm9pZCBicmNtZl9jbGVhcl9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MTQ3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2MTQ4OlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjE0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTYyOTY9c3RhdGljIHMzMiBicmNtZl9nZXRfYXNzb2NfaWVzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzAwLVxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9hc3NvY19pZWxlbl9sZSAqYXNzb2NfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2MzAxOlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjMwMi1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfZWRjZl9hY3BhcmFtIGVkY2ZfYWNwYXJhbV9pbmZvW0VEQ0ZfQUNfQ09VTlRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjM3OD1icmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzgzLVxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlICpwcm9maWxlID0gXFx1MDAyNmlmcC1cXHUwMDNldmlmLVxcdTAwM2Vwcm9maWxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjYzODQ6XFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02Mzg1LVxcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSBjZmdfdG9fd2lwaHkoY2ZnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTY0NTE9YnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjQ1Ni1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSAqcHJvZmlsZSA9IFxcdTAwMjZpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2NDU3OlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjQ1OC1cXHRzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9yZXNwX3BhcmFtcyBjb25uX3BhcmFtcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oPTIyMD1zdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTIzNS0vKiBhc3NvY2lhdGlvbiBpbmZvcm0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaDoyMzY6c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtMjM3LVxcdHU4ICpyZXFfaWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaD0zNDI9c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtMzQ5LVxcdHN0cnVjdCB3bF9jZmc4MDIxMV9ic3NfaW5mbyAqYnNzX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6MzUwOlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gY29ubl9pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTM1MS1cXHRzdHJ1Y3QgYnJjbWZfcG1rX2xpc3RfbGUgcG1rX2xpc3Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaD00MzM9c3RhdGljIGlubGluZSBzdHJ1Y3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaDo0MzQ6YnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjZmdfdG9fY29ubihzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTQzNS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ4OjAyLjM4Mjc5MjcwMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MTcxNDA1NTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBOZXcgRFBQIFN1cHBvcnQgaW4gQlJDTUZNQUMgdmlhIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCByZWxhdGVzIHRvIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgd2l0aGluIHRoZSBgQlJDTUZNQUNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGJ5IG1vZGlmeWluZyBgYnJjbWZfc2V0X2tleV9tZ210YCBhbmQgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAgdG8gaGFuZGxlIGBXTEFOX0FLTV9TVUlURV9XRkFfRFBQYCwgYW5kIGJ5IHVwZGF0aW5nIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgIGZvciBEUFAgcHVibGljIGFjdGlvbiBmcmFtZXMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBjYWxsZWQgZnJvbSBgY2ZnODAyMTFgIGNhbGxiYWNrczogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIGFuZCBgYnJjbWZfY2ZnODAyMTFfbWdtdF90eGAgcmVzcGVjdGl2ZWx5LCB3aGljaCBhcmUgdGhlbXNlbHZlcyByZWdpc3RlcmVkIHdpdGhpbiBgYnJjbWZfY2ZnODAyMTFfb3BzYC4gIFRoaXMgbWVhbnMgdGhleSdyZSB1bHRpbWF0ZWx5IHRyaWdnZXJlZCBieSBgbmw4MDIxMWAgY29tbWFuZHMuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoZXNlIGNvZGUgcGF0aHMuIFN5emthbGxlciBoYXMgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHZpYSBgc3l6X3VzYl9jb25uZWN0YCBhbmQgYHN5el91c2JfZGlzY29ubmVjdGAsIHdoaWNoIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgcG90ZW50aWFsbHksIHRoZSBgQlJDTUZNQUNfVVNCYCBkZXZpY2UuICBTeXprYWxsZXIgYWxzbyB1bmRlcnN0YW5kcyBgbmw4MDIxMWAgdGhyb3VnaCBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCwgbWFraW5nIGl0IGEgcG90ZW50aWFsIHJvdXRlIHRvIHRoZXNlIGZ1bmN0aW9ucy5cblxuVGhlIHByb2JsZW0sIHRob3VnaCwgaXMgdGhhdCBgQlJDTUZNQUNgIGlzIGEgRnVsbE1BQyBkcml2ZXIgYW5kIGRlcGVuZHMgb24gYSBzcGVjaWZpYyBVU0IgZGV2aWNlIGVtdWxhdGlvbiBmb3Igd2lwaHkgcmVnaXN0cmF0aW9uLiAgSWYgdGhlIFVTQiBlbXVsYXRpb24gcHJvdmlkZWQgYnkgc3l6a2FsbGVyIGlzIGdvb2QgZW5vdWdoLCB0aGUgZHJpdmVyIHNob3VsZCBwcm9iZSBhbmQgcmVnaXN0ZXIgaXRzIHdpcGh5LCBtYWtpbmcgYG5sODAyMTFgIGNvbW1hbmRzIGF2YWlsYWJsZSBhbmQgdGh1cyByZWFjaGluZyB0aGVzZSBtb2RpZmllZCBmdW5jdGlvbnMuICBCdXQsIGNhbiBzeXprYWxsZXIncyBVU0IgZnV6emluZyBlbXVsYXRlIHRoZSBCcm9hZGNvbSBVU0IgZGV2aWNlICphbmQqIHRoZSBmaXJtd2FyZSBzdWZmaWNpZW50bHkgdG8gYWxsb3cgdGhlIGRyaXZlciB0byBsb2FkIGFuZCBpbml0aWFsaXplPyBUaGUgZHJpdmVyICpyZXF1aXJlcyogdGhlIGZpcm13YXJlIHRvIGxvYWQgYW5kIHJlc3BvbmQgY29ycmVjdGx5OyBvdGhlcndpc2UsIHRoZSB3aXBoeSByZWdpc3RyYXRpb24gd2lsbCBmYWlsLlxuXG5Tbywgd2hpbGUgdGhlIHByb2JlIGZ1bmN0aW9uICppdHNlbGYqIGlzIHJlYWNoYWJsZSBldmVuIHdpdGggYSBmYWlsZWQgaW5pdGlhbGl6YXRpb24sIHRoZSAqbW9kaWZpZWQqIGZ1bmN0aW9ucyBhcmUgY2FsbGJhY2tzIHRoYXQgb25seSBnZXQgY2FsbGVkIGlmIHRoZSB3aXBoeSByZWdpc3RlcnMgc3VjY2Vzc2Z1bGx5LiBUaGUgcmVhbCBib3R0bGVuZWNrIGlzIGxpa2VseSB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb24gaGF2ZSB0byBiZSBjb3JyZWN0LiBJZiBzeXprYWxsZXIganVzdCBzcGV3cyByYW5kb20gVVNCIHJlc3BvbnNlcywgdGhlIGRyaXZlciB3aWxsIHByb2JhYmx5IGZhaWwgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHdpcGh5IHdpbGwgbm90IGJlIHJlZ2lzdGVyZWQuIEhvd2V2ZXIsIHRoZSBkcml2ZXIgbWlnaHQgYmUgXCJyZWFjaGFibGVcIiBpbiB0aGVvcnkgYnkgc29tZSBvdGhlciBtZWFucy5cblxuVGhlIGRvY3VtZW50YXRpb24gaXMgY2xlYXI6ICBpZiBpdCdzIGEgVVNCIGRyaXZlciwgdGhlIGZ1bmN0aW9ucyAqYXJlKiByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBwaGFzZSBtaWdodCBiZSBhIGNoYWxsZW5nZSwgYnV0IGl0J3Mgbm90IGFuICppbXBvc3NpYmlsaXR5KiBpbiB0aGUgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQuIE5vdywgbGV0IG1lIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdgKSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgVVNCIGRldmljZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gZ3VpZGUgc3l6a2FsbGVyLiBMZXQncyBzZWUgaWYgc3l6a2FsbGVyIG5lZWRzIGFueSBzcGVjaWZpYyBwYXJhbWV0ZXJzIGZvciBlbXVsYXRpbmcgdGhlIGBCUkNNRk1BQ19VU0JgIGRldmljZS4uLiB0aGF0IG1pZ2h0IHVubG9jayBpdCBhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjU2LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ4OjE3LjU1NDIwMjAwNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5Nzc5NDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ19VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xNz1jb25maWcgQlJDTUZNQUNfU0RJT1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0ODoxNy44MDM5ODcwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODU0MDI5NDE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLlxuXG4qKkV4YW1pbmluZyB0aGUgQlJDTUZNQUMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3MgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSGFuZyBvbiwgaXMgYEJSQ01GTUFDYCBkZXBlbmRlbnQgb24gKmJvdGgqIGBDRkc4MDIxMWAgYW5kIGBNQUM4MDIxMWA/IE5vLCB0aGF0IGRvZXNuJ3QgbWFrZSBzZW5zZS4gSXQncyBhIEZ1bGxNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBpdCBzaG91bGQgb25seSByZXF1aXJlIHRoZSByZWd1bGF0b3J5IGFuZCBjb250cm9sIGFzcGVjdHMsIGhhbmRsZWQgYnkgYENGRzgwMjExYC4gYE1BQzgwMjExYCBpcyBwYXJ0IG9mIHRoZSBtYWMgbGF5ZXIsIHdoaWNoIGlzIGhhbmRsZWQgZGlyZWN0bHkgYnkgYEJSQ01GTUFDYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLCBzbyBJIHdpbGwgbm93IGNoZWNrIHRoZSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgb2YgYEJSQ01GTUFDYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDI0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDg6MzYuMzQ0MjgzMzk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzM1MzY4NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSQ01GTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTpjb25maWcgQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNzpjb25maWcgQlJDTUZNQUNfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIlNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0ODozNi41MTc4MjUzODdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4MjcyMTUyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSdtIHRoZSBvbmUgaGF2aW5nIGl0LCBhbmQgY29uc2lkZXJpbmcgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqSW5pdGlhbCBLY29uZmlnIFNjYW4qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTGV0J3Mgc2VlLi4uIHRoZSBgYnJjbTgwMjExYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgYEtjb25maWdgIGZpbGUuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBmaXJzdCB0ZW4gbGluZXMuIFRoaXMgZ2l2ZXMgbWUgYSBxdWljayBpbml0aWFsIGZlZWwgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSDigJMgd2hhdCBhcmUgdGhlIHRvcC1sZXZlbCBzZWN0aW9ucyBvciBmZWF0dXJlcz8gV2hhdCBhcmUgdGhlIGltbWVkaWF0ZSBwcmVyZXF1aXNpdGVzPyBJJ20gaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gYXBwcm9hY2ggdXNlZCBieSB0aGlzIGRyaXZlciwgYSBiaXJkcy1leWUgdmlldyBiZWZvcmUgZGl2aW5nIGRlZXBlciBpbnRvIGFueSBzcGVjaWZpYyBzZWN0aW9uLiBJJ20gYW50aWNpcGF0aW5nIHNvbWUgZmFtaWxpYXIgYGJvb2xgIG9yIGB0cmlzdGF0ZWAgb3B0aW9ucywgbGlrZWx5IGdyb3VwZWQgdGhlbWF0aWNhbGx5LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZ2xlYW4uIEl0J2xsIGJlIGludGVyZXN0aW5nIHRvIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUsIGFuZCB3aGV0aGVyIGl0J3Mgc3RyYWlnaHRmb3J3YXJkLCBvciBpZiB0aGVyZSdzIHNvbWUgY29tcGxleCBsZWdhY3kgc3R1ZmYgaW52b2x2ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTY0LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDg6NDcuMzQ1MDQyNjk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIEJSQ01GTUFDXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA0OlxcdFxcdHNlbGVjdCBCUkNNVVRJTFxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIEJyb2FkY29tXFxuICAgNzpcXHRcXHQgIEZ1bGxNQUMgY2hpcHNldHMuIEl0IGhhcyB0byB3b3JrIHdpdGggYXQgbGVhc3Qgb25lIG9mIHRoZSBidXNcXG4gICA4OlxcdFxcdCAgaW50ZXJmYWNlIHN1cHBvcnQuIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZFxcbiAgIDk6XFx0XFx0ICBicmNtZm1hYy5rby5cXG4gIDEwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0ODo0Ny4zNDUxMDMwMThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyNzMyMDg0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgQlJDTUZNQUMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoZSBgQlJDTUZNQUNgIGRyaXZlci4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBDRkc4MDIxMWAsIHNvIHRoYXQncyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBUbyBnZXQgc3RhcnRlZCB3aXRoIHRoZSBmdXp6aW5nIHNldHVwLCBpdCBsb29rcyBsaWtlIEknbGwgbmVlZCBib3RoIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGF2YWlsYWJsZSB0byBtZS5cblxuTm93LCBmb2N1c2luZyBvbiB0aGUgdGFyZ2V0IGZ1bmN0aW9ucywgaW5pdGlhbGx5LCBJIHdhcyBsb29raW5nIGF0OiBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLiBCdXQsIGhhbmcgb24gYSBzZWNvbmQsIEkgc2VlIHRoYXQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgaXMgYWN0dWFsbHkgY2FsbGVkIGZyb20gYGJyY21mX2NmZzgwMjExX21nbXRfdHhgLiBIbW1tLCBJIHRoaW5rIGBicmNtZl9jZmc4MDIxMV9tZ210X3R4YCBtaWdodCBiZSBhIG1vcmUgc3RyYXRlZ2ljIHBvaW50IHRvIGZvY3VzIG9uLCBnaXZlbiB0aGF0IGl0IGFjdHMgYXMgYSBjZW50cmFsIHBvaW50IG9mIGVudHJ5LlxuXG5SaWdodCwgYGJyY21mX2NmZzgwMjExX21nbXRfdHhgIGlzIGEgYGNmZzgwMjExYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBpdCBhdHRyYWN0aXZlIGJlY2F1c2UgSSBjYW4gdHJpZ2dlciBpdCBpbiBhIGNvbnRyb2xsZWQgbWFubmVyLiBJJ2xsIGNoZWNrIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCB0b28sIGFzIHRoYXQncyBhbHNvIGEgYGNmZzgwMjExYCBjYWxsYmFjay4gQWgsIGFuZCBJIHNlZSB0aGF0IGBicmNtZl9zZXRfa2V5X21nbXRgIGFuZCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCBhcmUgY2FsbGVkIGZyb20gYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgIG9yIHNpbWlsYXIgZnVuY3Rpb25zLCBzbyB0aGF0IHBhdGggc2VlbXMgcHJldHR5IGltcG9ydGFudCB0b28uIEkgc2hvdWxkIGNoZWNrIHNwZWNpZmljYWxseSB3aGVyZSBgYnJjbWZfY29uZmlndXJlX3dwYWllYCBpcyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgbW9yZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQyMCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ4OjU3LjYxODMxMzcxNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcyMTg5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfY29uZmlndXJlX3dwYWllXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NDUzOD1zdGF0aWMgczMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDUzOTpicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNDU0MC1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01MDg0PWJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUxMDMtXFx0XFx0XFx0LyogV1BBIElFICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTEwNDpcXHRcXHRcXHRlcnIgPSBicmNtZl9jb25maWd1cmVfd3BhaWUoaWZwLCB3cGFfaWUsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MTA1LVxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExMi1cXHRcXHRcXHQvKiBSU04gSUUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MTEzOlxcdFxcdFxcdGVyciA9IGJyY21mX2NvbmZpZ3VyZV93cGFpZShpZnAsIHRtcF9pZSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExNC1cXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDg6NTcuNzA1NTM2Njg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTAxNzgwMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWEgYW5kIHRoaW5raW5nIHRoaXMgdGhyb3VnaDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIFNlcXVlbmNlOiBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHlgIGZ1bmN0aW9uIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCBjYWxscyBgYnJjbWZfY29uZmlndXJlX3dwYWllYC4gVGhpcyBsaWtlbHkgaW5kaWNhdGVzIHRoYXQgdGhlIHByaW1hcnkgcHVycG9zZSBvZiBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCByZXZvbHZlcyBhcm91bmQgc2V0dGluZyB1cCBzZWN1cml0eSBwcm90b2NvbHMsIGFuZCB0aGF0IHNldHRpbmcgdXAgV1BBL1dQQTIvV1BBMyBpbmZvcm1hdGlvbiBlbGVtZW50cyBpcyBhIGtleSBwYXJ0IG9mIHRoYXQgcHJvY2Vzcy5cblxuTm93LCB0aGUgbmF0dXJhbCBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IGFyaXNlcyBpcywgd2hlcmUgaXMgKnRoaXMqIGZ1bmN0aW9uLCBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCwgYmVpbmcgY2FsbGVkIGZyb20/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4gS25vd2luZyB0aGUgY2FsbGVyIHRlbGxzIG1lIHRoZSAqY29udGV4dCogaW4gd2hpY2ggc2VjdXJpdHkgY29uZmlndXJhdGlvbnMgYXJlIHBhcnNlZCBhbmQgYXBwbGllZC4gSXMgaXQgZHVyaW5nIHRoZSBpbml0aWFsIGRyaXZlciBsb2FkPyBXaGVuIGEgbmV3IG5ldHdvcmsgaXMgam9pbmVkPyBQZXJoYXBzIGR1cmluZyBhbiBleHBsaWNpdCByZWNvbmZpZ3VyYXRpb24gY29tbWFuZD8gS25vd2luZyB0aGF0IHdpbGwgcHJvdmlkZSBrZXkgaW5zaWdodHMgaW50byBob3cgdGhlIHNlY3VyaXR5IHNldHRpbmdzIGFyZSBhY3R1YWxseSBlc3RhYmxpc2hlZCBhbmQgdXBkYXRlZCB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBkZWJ1Z2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzA5LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDk6MDIuNDE1NzE3NzMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk1ODU1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01MDgzPXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MDg0OmJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MDg1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYXBfc2V0dGluZ3MgKnNldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTEyNj1icmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5MzpcXHRcXHRlcnIgPSBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkoaWZwLCBzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01Mjk0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTkw4MDIxMV9JRlRZUEVfQVApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTUtXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1Mjk2OlxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTctXFx0XFx0XFx0Z290byBleGl0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM1OlxcdFxcdGVyciA9IGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShpZnAsIHNldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUzMzYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0lGVFlQRV9QMlBfR08pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUzMzctXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM4OlxcdFxcdFxcdGJyY21mX2VycihcXFwiYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5IGVycm9yXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MzM5LVxcdFxcdFxcdGdvdG8gZXhpdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDk6MDIuNDc1NjgyNjU2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzOTQ1MzQzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRyYWNlZCB0aGUgY2FsbCBwYXRoIOKAkyBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCBnZXRzIGludm9rZWQgYnkgYGJyY21mX2NmZzgwMjExX3N0YXJ0X2FwYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RlbW1pbmcgZnJvbSB0aGF0IGNhbGwgYXJlIHJlYWNoYWJsZSBpbiBBUCBtb2RlICh0aHJvdWdoIGBzdGFydF9hcGApLCBTVEEgbW9kZSAodmlhIGBjb25uZWN0YCksIGFuZCBldmVuIFAyUCBtb2RlIChmcm9tIGBtZ210X3R4YCkuIFRoYXQncyBhIHdpZGUgYXR0YWNrIHN1cmZhY2UsIGFuZCBhIGRlZmluaXRlIHNpZ25hbCB0byBwcmlvcml0aXplIHRoaXMgZm9yIGZ1enppbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGJ1aWxkcy4gSSBoYXZlIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGluIG1pbmQuXG5cbk5vdyBmb3IgdGhlIGNvcmUgc3ltYm9scy4gSSdtIGZvY3VzaW5nIG9uOlxuXG4qICAgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgXG4qICAgYGJyY21mX3NldF9rZXlfbWdtdGBcbiogICBgYnJjbWZfY29uZmlndXJlX3dwYWllYFxuKiAgIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgXG5cbldhaXQgYSBtaW51dGUuLi4gSSBzZWUgdGhhdCBgYnJjbWZfc2V0X2tleV9tZ210YCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YC4gVGhhdCBtYWtlcyBpdCBhIGhpZ2gtdmFsdWUgdGFyZ2V0LiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYGJyY21mX3NldF9rZXlfbWdtdGAgZGlyZWN0bHkgdG8gYXNzZXNzIGl0cyB2dWxuZXJhYmlsaXR5IHBvdGVudGlhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc4NjksIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDk6MTAuODcwMjE5OTkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTEwMjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9zZXRfa2V5X21nbXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMDg3PXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyMDg4OmJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjA4OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMzY0PWJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjI0NjE6XFx0ZXJyID0gYnJjbWZfc2V0X2tleV9tZ210KG5kZXYsIHNtZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjQ2Mi1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjEwLjkyOTMyNzEyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODk0MzA2NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgYnJjbWZgIERyaXZlcidzIENvbm5lY3Rpb24gYW5kIFNlY3VyaXR5IEhhbmRsZXJzKipcblxuT2theSwgc28gYGJyY21mX3NldF9rZXlfbWdtdGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAsIGBicmNtZl9zZXRfa2V5X21nbXRgLCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbiBwb2ludHMuXG5cbk5vdywgbGV0IG1lIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkga25vdyB0aGF0IGBCUkNNRk1BQ19TRElPYCBhbmQgYEJSQ01GTUFDX1BDSUVgIG1pZ2h0IGJlIGVuYWJsZWQsIGJ1dCByZWFsaXN0aWNhbGx5LCBgQlJDTUZNQUNfVVNCYCBpcyB0aGUgbW9zdCBwcm9iYWJsZSB0YXJnZXQgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IHN5emthbGxlciBpcyBsaWtlbHkgc2V0IHVwLiBJJ2xsIGluY2x1ZGUgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgaW4gbXkgbWVudGFsIG1vZGVsLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5JdCdzIGEgZ29vZCBpZGVhIHRvIGRvdWJsZSBjaGVjayB0aGF0IGBCUkNNRk1BQ19VU0JgIGRvZXNuJ3QgaGF2ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcy4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Nzk3LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjIwLjgyMzYzODA0MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNDU5MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ19VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZz0xNz1jb25maWcgQlJDTUZNQUNfU0RJT1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNTo0OToyMS4wNTcxMDY2MjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU5MTM2MTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqQlJDTUZNQUNfVVNCIERlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBCUkNNRk1BQ19VU0JgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkcmlsbCBkb3duLCB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtb2R1bGUgKnJlbGllcyogb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucy4gSXMgaXQgYSBjb3JlIGRyaXZlciwgYSBzcGVjaWZpYyBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24sIG9yIHNvbWV0aGluZyBtb3JlIHBlcmlwaGVyYWw/IEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIHRlbGwgbWUgYSBsb3QuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGJhc2ljIFVTQiBzdGFjayBjYWxscywgb3IgYXJlIHRoZXJlIGxvdy1sZXZlbCBoYXJkd2FyZSBhYnN0cmFjdGlvbnMgaW52b2x2ZWQ/XG5cbkknbSB0aGlua2luZzpcbiogICAqKklkZW50aWZ5IENyaXRpY2FsIERlcGVuZGVuY2llczoqKiBXaGF0IGFyZSB0aGUgYWJzb2x1dGUgYmFyZSBtaW5pbXVtIGNvbXBvbmVudHMgcmVxdWlyZWQgZm9yIGBCUkNNRk1BQ19VU0JgIHRvIGV2ZW4gbG9hZD9cbiogICAqKlRyYWNlIHRoZSBIaWVyYXJjaHk6KiogQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBzcGVjaWZpYyBCcm9hZGNvbSBjb21wb25lbnRzP1xuKiAgICoqUGVyZm9ybWFuY2UgQ29uc2lkZXJhdGlvbnM6KiogQ291bGQgYW55IGRlcGVuZGVuY2llcyBpbnRyb2R1Y2UgbGF0ZW5jeSBvciBib3R0bGVuZWNrcz9cbiogICAqKlBvdGVudGlhbCBDb25mbGljdHM6KiogV2hhdCBhcmUgdGhlIGNoYW5jZXMgdGhpcyBtb2R1bGUgc2hhcmVzIHJlc291cmNlcyB3aXRoIG90aGVyIGNvbXBvbmVudHM/XG4qICAgKipQb3J0aW5nL0ludGVncmF0aW9uIENoYWxsZW5nZXM6KiogS25vd2luZyB0aGlzIGlzIGEgXCJVU0JcIiBpbXBsZW1lbnRhdGlvbiwgSSdsbCBiZSBrZWVwaW5nIGFueSBleWUgb24gdGhlIGludGVyZmFjZSwgaW4gY2FzZSB0aGUgcGxhdGZvcm0gaGFzIGFuIHVudXN1YWwgVVNCIGltcGxlbWVudGF0aW9uLlxuKiAgICoqVmVyc2lvbmluZyBhbmQgQ29tcGF0aWJpbGl0eToqKiBEb2VzIHRoaXMgbW9kdWxlIGhhdmUgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIHZlcnNpb25zIG9mIGxpYnJhcmllcyBvciBvdGhlciBjb21wb25lbnRzP1xuKiAgICoqTWFpbnRhaW5hYmlsaXR5IGFuZCBUZXN0aW5nOioqIENhbiBJIGVhc2lseSBtb2NrIG9yIHNpbXVsYXRlIHRoZXNlIGRlcGVuZGVuY2llcyBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nP1xuXG5UaGlzIGlzIHdoZXJlIHRoZSBmdW4gc3RhcnRzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgZXhwbG9yaW5nIHRob3NlIGRlcGVuZGVuY3kgZ3JhcGhzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ3OSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjI5LjY0ODQ3MDcwM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyOTpcXHRjb25maWcgQlJDTUZNQUNfVVNCXFxuICAzMDpcXHRcXHRib29sIFxcXCJVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gKFVTQiA9IHkgfHwgVVNCID0gQlJDTUZNQUMpXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIEJSQ01GTUFDXFxuICAzMzpcXHRcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbiAgMzQ6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBCcm9hZGNvbVxcbiAgMzc6XFx0XFx0ICBJRUVFODAyLjExbiBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xcbiAgMzg6XFx0XFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYW4gVVNCIHdpcmVsZXNzIGNhcmQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjI5LjY0ODU0MDg0M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjU3NDI0MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBCcm9hZGNvbSBGdWxsTUFDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoaXMgcGF0Y2ggaGluZ2VzIG9uIGEgZmV3IGtleSBjb21wb25lbnRzOiBzcGVjaWZpY2FsbHksIHRoZSBgVVNCYCBkZXBlbmRlbmN5IGFuZCB0aGUgYEJSQ01GTUFDYCBkcml2ZXIgaXRzZWxmLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXJlIGFjY291bnRlZCBmb3IgaW4gbXkgYXNzZXNzbWVudC4gVGhleSBhcmUgdGhlIGNvcmUgb2YgdGhpcy5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBvbiB0aGVzZTogYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCBgYnJjbWZfc2V0X2tleV9tZ210YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGFuZCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYC5cblxuQXJlIHRoZXJlIGFueSBvdGhlciBhbmNpbGxhcnkgZnVuY3Rpb25zIHRoYXQgZ290IHRvdWNoZWQ/IEhtbSwgeWVzLCBJIHNlZSBhIGNvdXBsZSBvZiBzdGF0aWMsIGlubGluZSBmdW5jdGlvbnMg4oCTIGBicmNtZl92YWxpZF9kcHBfc3VpdGVgIGFuZCBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYC4gVGhleSdyZSBwcm9iYWJseSByZWxhdGVkLCBidXQgSSdsbCBmb2N1cyBvbiB0aGUgbWFpbiBwbGF5ZXJzIGZvciBub3cuIEknbGwgaW5jbHVkZSB0aGUgbWFpbiBvbmVzOiBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAsIGBicmNtZl9zZXRfa2V5X21nbXRgLCBgYnJjbWZfY29uZmlndXJlX3dwYWllYCwgYW5kIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogVGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBzdXBwb3J0IGZvciB0aGUgV2ktRmkgQWxsaWFuY2UgRFBQIEFLTSBzdWl0ZSBhbmQgRFBQIHB1YmxpYyBhY3Rpb24gZnJhbWVzIHdpdGhpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIuIEl0J3MgZXNzZW50aWFsbHkgcmV3b3JraW5nIGJvdGggdGhlIGNvbm5lY3Rpb24gYW5kIEFQIHNldHVwIHBhdGhzLCB3aGljaCBtZWFucyBJIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgcGFyc2VzIHRoaXMgbmV3IEFLTSBhbmQgaGFuZGxlcyBTQUUvRldTVVAuIEFsc28sIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoIGlzIGludm9sdmVkLlxuXG5DcnVjaWFsbHksIHRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdGhyb3VnaCBubDgwMjExIGNvbW1hbmRzLCB0aGluZ3MgbGlrZSBgY29ubmVjdGAsIGBzdGFydF9hcGAsIGFuZCBgbWdtdF90eGAsIGVzcGVjaWFsbHkgd2hlbiB0aGUgZHJpdmVyJ3MgYm91bmQgdG8gYW4gZW11bGF0ZWQgVVNCIGRldmljZS4gSXQncyBhIGNvbm5lY3Rpb24gdmlhIFVTQiB0aGF0IG1hdHRlcnMuXG5cbkkgc2hvdWxkIHZlcmlmeSB0aGUgaW1wbGljYXRpb25zIHRvIGBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAyMCwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjM4LjMwNTk2NjcwMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNjUzODUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU1MzY9YnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTYyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1NjI4OlxcdFxcdGFjayA9IGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShjZmcsIGNmZ190b19uZGV2KGNmZyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTYyOS1cXHRcXHRcXHRcXHRcXHRcXHQgIGFmX3BhcmFtcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM9MTcyNj1zdGF0aWMgYm9vbCBicmNtZl9wMnBfY2hlY2tfZHdlbGxfb3ZlcmZsb3codTMyIHJlcXVlc3RlZF9kd2VsbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzM3LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNzM4OiAqIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSgpIC0gc2VuZCBhY3Rpb24gZnJhbWUgLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzM5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTc0NDpib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzQ1LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaD0xNjg9aW50IGJyY21mX3AycF9ub3RpZnlfYWN0aW9uX3R4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oLTE3MC1cXHRcXHRcXHRcXHRcXHR2b2lkICpkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmg6MTcxOmJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oLTE3Mi1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE1OjQ5OjM4LjQ3OTYyNjA3NVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjgxMzI1MjE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipSZWFkeSB0byBGaW5hbGl6ZSB0aGUgTWdtdCBGcmFtZSBUcmFuc21pc3Npb24gUmVzdWx0cyoqXG5cblJpZ2h0LCBzbyB0aGlzIGlzIGNvbmZpcm1hdGlvbiDigJMgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBpcyBpbmRlZWQgYGJyY21mX2NmZzgwMjExX21nbXRfdHhgLiBHb29kLCB0aGF0J3MgdGhlIGVudHJ5IHBvaW50IEkgd2FzIGV4cGVjdGluZyBhbmQgY29uZmlybXMgdGhlIGNvcnJlY3QgY29udHJvbCBmbG93LlxuXG5Ob3cgdGhhdCBJIGhhdmUgY29uZmlybWF0aW9uIG9mIHRoZSBmdW5jdGlvbiBjYWxsLCBJIGNhbiBwcm9jZWVkIHdpdGggY29uZmlkZW5jZS4gTXkgZm9jdXMgaXMgbm93IHNoaWZ0ZWQgdG8gcG9wdWxhdGluZyBhbmQgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgcmVzdWx0IHZhbHVlcyBhbmQgcmV0dXJuaW5nIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRlLiBJIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEl04oCZcyB0aW1lIHRvIGZpbmFsaXplIHRoZSB0cmFuc2FjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2NjYsIk91dHB1dFRva2VucyI6MjA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTU6NDk6NTEuMjkyODgwNTc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM2NjU1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicmNtZl9jZmc4MDIxMV9jb25uZWN0XCIsXG4gICAgXCJicmNtZl9zZXRfa2V5X21nbXRcIixcbiAgICBcImJyY21mX2NvbmZpZ3VyZV93cGFpZVwiLFxuICAgIFwiYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgV0ZBIERQUCBBS00gc3VpdGUgYW5kIERQUCBwdWJsaWMgYWN0aW9uIGZyYW1lcyB0byB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIgKGJyY21mbWFjKS4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBhbmQgQVAgc2V0dXAgcGF0aHMgdG8gcGFyc2UgdGhlIG5ldyBBS00gYW5kIGhhbmRsZSBTQUUvRldTVVAgY29ycmVjdGx5LCBhcyB3ZWxsIGFzIHRoZSBQMlAgYWN0aW9uIGZyYW1lIHRyYW5zbWlzc2lvbiBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIGNvbW1hbmRzIChlLmcuLCBjb25uZWN0LCBzdGFydF9hcCwgbWdtdF90eCkgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2NmZzgwMjExX2Nvbm5lY3RcIixcbiAgICBcImJyY21mX3NldF9rZXlfbWdtdFwiLFxuICAgIFwiYnJjbWZfY29uZmlndXJlX3dwYWllXCIsXG4gICAgXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBXRkEgRFBQIEFLTSBzdWl0ZSBhbmQgRFBQIHB1YmxpYyBhY3Rpb24gZnJhbWVzIHRvIHRoZSBCcm9hZGNvbSBGdWxsTUFDIGRyaXZlciAoYnJjbWZtYWMpLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGFuZCBBUCBzZXR1cCBwYXRocyB0byBwYXJzZSB0aGUgbmV3IEFLTSBhbmQgaGFuZGxlIFNBRS9GV1NVUCBjb3JyZWN0bHksIGFzIHdlbGwgYXMgdGhlIFAyUCBhY3Rpb24gZnJhbWUgdHJhbnNtaXNzaW9uIHBhdGguIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5sODAyMTEgY29tbWFuZHMgKGUuZy4sIGNvbm5lY3QsIHN0YXJ0X2FwLCBtZ210X3R4KSB3aGVuIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gYW4gZW11bGF0ZWQgVVNCIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxwxr[1] Phase: Succeeded StartedAt: 2026-07-15 15:50:32 +0000 UTC FinishedAt: 2026-07-15 15:50:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxwxr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 15:50:32 +0000 UTC FinishedAt: 2026-07-15 15:50:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxwxr[2] Phase: Succeeded StartedAt: 2026-07-15 15:50:32 +0000 UTC FinishedAt: 2026-07-15 16:42:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxwxr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-15 15:50:32 +0000 UTC FinishedAt: 2026-07-15 16:42:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhxwxr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 15:50:32 +0000 UTC FinishedAt: 2026-07-15 15:50:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxwxr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 15:50:32 +0000 UTC FinishedAt: 2026-07-15 15:50:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhxwxr/series-workflowhxwxr-convert-artifact-2121863558/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxwxr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 15:50:53 +0000 UTC FinishedAt: 2026-07-15 16:42:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxwxr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 15:50:53 +0000 UTC FinishedAt: 2026-07-15 16:42:03 +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:*6d369c46-ed3c-4c77-9fc3-e6cef4e9b2b4,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-workflowhxwxr/series-workflowhxwxr-convert-artifact-2121863558/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": "8e6c89c7-266a-4dff-92ed-b2d6e814c741", "success": false },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-workflowhxwxr/series-workflowhxwxr-build-action-3199882524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxwxr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 15:50:53 +0000 UTC FinishedAt: 2026-07-15 16:40:08 +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:*6d369c46-ed3c-4c77-9fc3-e6cef4e9b2b4,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-workflowhxwxr/series-workflowhxwxr-convert-artifact-2121863558/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": "8e6c89c7-266a-4dff-92ed-b2d6e814c741", "success": false },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-workflowhxwxr/series-workflowhxwxr-build-action-3199882524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxwxr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Failed StartedAt: 2026-07-15 16:42:03 +0000 UTC FinishedAt: 2026-07-15 16:42:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxwxr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_set_key_mgmt","brcmf_configure_wpaie","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"a95d32db-2d82-4c52-ade6-7a200007af71","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Failed StartedAt: 2026-07-15 16:42:03 +0000 UTC FinishedAt: 2026-07-15 16:42:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}